Set up DOTS + Netcode for Entities foundation
One-time stack setup per Docs/dots-setup-task.md (Unity 6.4.7 / 6000.4.7f1).
Packages: entities 6.4.0, entities.graphics 6.4.0, netcode 1.13.2, physics 1.4.6.
- Assets/_Project asmdef split: ProjectM.Simulation/Client/Server/Authoring (root ns ProjectM)
- GameBootstrap : ClientServerBootstrap; verified separate client + server worlds in Play Mode
- Gameplay subscene wired into SampleScene as a baking target
- Heartbeat component + Burst ISystem; EditMode smoke test green (1/1)
- In-repo Obsidian vault (Docs/Vault) incl. DR-001 (plain-Entities test over internal NetCodeTestWorld)
- Portable .mcp.json (basic-memory + serena via ${CLAUDE_PROJECT_DIR}); CLAUDE.md conventions
- .gitignore for DOTS baking cache + machine-local config
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
---
|
||||
date: 2026-05-29
|
||||
type: session
|
||||
tags:
|
||||
- session
|
||||
- setup
|
||||
- dots
|
||||
- netcode
|
||||
permalink: gamevault/07-sessions/2026/2026-05-29-project-setup
|
||||
---
|
||||
|
||||
# Session 2026-05-29 — DOTS + Netcode + Memory Stack Setup
|
||||
|
||||
One-time project setup per `Docs/dots-setup-task.md`.
|
||||
|
||||
## Done
|
||||
|
||||
- **DOTS stack** (Unity 6.4.7 / 6000.4.7f1): `com.unity.entities` 6.4.0, `com.unity.netcode` 1.13.2, `com.unity.physics` 1.4.6, `com.unity.entities.graphics` 6.4.0. Console clean. (Entities / Collections / Graphics now track the Editor version → 6.4.0; Netcode / Physics still independent 1.x.)
|
||||
- **Asmdef split** under `Assets/_Project/Scripts/`: `ProjectM.Simulation` (shared), `ProjectM.Client`, `ProjectM.Server`, `ProjectM.Authoring`. Root namespace `ProjectM`.
|
||||
- **Bootstrap**: `GameBootstrap : ClientServerBootstrap` (Simulation) → `CreateDefaultClientServerWorlds()`, auto-connect off. Play Mode verified: separate `ServerWorld` (GameServer) + `ClientWorld` (GameClient).
|
||||
- **Subscene**: `Assets/_Project/Subscenes/Gameplay.unity` wired into `SampleScene` as a baking target.
|
||||
- **Smoke test**: `Heartbeat` IComponentData + `[BurstCompile] HeartbeatSystem : ISystem`; EditMode test ticks `SimulationSystemGroup` 8× and asserts advance → green (1/1).
|
||||
- **Vault + memory MCPs + `CLAUDE.md`**: scaffolded.
|
||||
|
||||
## Decisions
|
||||
|
||||
- [[DR-001_Netcode_Test_Harness]] — smoke test uses a plain-Entities tick test, not the internal `NetCodeTestWorld`.
|
||||
|
||||
## Open / deferred
|
||||
|
||||
- Unity 6.6 upgrade considered, deferred. Stack is forward-compatible; `NetCodeTestWorld` stays internal regardless of version.
|
||||
- Optional template cleanup (visualscripting / TutorialInfo / Readme) deferred → [[Backlog]].
|
||||
|
||||
## Next
|
||||
|
||||
- Define pillars ([[Pillars]]) and the first playable slice ([[Milestones]]).
|
||||
@@ -0,0 +1,26 @@
|
||||
---
|
||||
id: DR-001
|
||||
title: Netcode smoke/test harness approach
|
||||
status: accepted
|
||||
date: 2026-05-29
|
||||
tags:
|
||||
- decision
|
||||
- netcode
|
||||
- testing
|
||||
permalink: gamevault/07-sessions/decisions/dr-001-netcode-test-harness
|
||||
---
|
||||
|
||||
# DR-001 — Test harness: plain-Entities over internal NetCodeTestWorld
|
||||
|
||||
## Context
|
||||
|
||||
Setup (`Docs/dots-setup-task.md` §4) called for a `NetCodeTestWorld` EditMode test. In **Netcode for Entities 1.13.2**, `Unity.NetCode.Tests.NetCodeTestWorld` (assembly `Unity.NetCode.TestsUtils.Runtime.Tests`) is **`internal`**, reachable only via a fixed `[InternalsVisibleTo]` allow-list of Unity's own assemblies. A consumer test can use it only by naming its test assembly to match an entry (e.g. `Unity.NetcodeSamples.EditModeTests`) — effectively impersonating a Unity sample assembly. Research (Unity ECS status, Dec 2025) shows no public consumer test harness on the roadmap, and that this is **unchanged by a Unity 6.6 upgrade** (Netcode stays independent 1.x; only Entities/Collections/Graphics renumber to the Editor version).
|
||||
|
||||
## Decision
|
||||
|
||||
Use a **plain-Entities EditMode test** as the default test pattern: create a `World`, register the system under test in `SimulationSystemGroup`, tick, assert. Public API only, no assembly-name impersonation, version-independent. Netcode **world boot** is verified separately by the §3 Play Mode check (`GameBootstrap` creates `ServerWorld` + `ClientWorld`).
|
||||
|
||||
## Consequences
|
||||
|
||||
- Clean, always-green tests with no fragile naming hacks.
|
||||
- Full client+server **connect+tick** coverage is not provided by this pattern. When needed (ghost/prediction work), revisit per-system: either name a dedicated test asmdef `Unity.NetcodeSamples.EditModeTests` to borrow the IVT grant, or vendor a copy of the netcode test utilities.
|
||||
Reference in New Issue
Block a user