Docs: 07-20 sandbox target dummy session log (planted dummy + GymSub no-director diagnosis)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
# 2026-07-20 (D) — Sandbox target dummy (planted combat-test target)
|
||||
|
||||
**Operator:** enemies don't work in the DevSandbox — replace with a target dummy for combat testing.
|
||||
**Diagnosis (recorded, not fixed per operator's "anyways"):** `GymSub.unity` bakes **no WaveDirector** — only the
|
||||
Game arena's `Gameplay.unity` has one — so nothing ever spawns enemies in the sandbox (and Force Next Wave has no
|
||||
director to force).
|
||||
|
||||
## What shipped
|
||||
|
||||
- **`TargetDummyTag`** (Simulation, server-only, never replicated): marks a real enemy ghost as a PLANTED dummy.
|
||||
Every `EnemyAISystem` pass (grunt move/attack, lunge, spitter, depenetration nudge, IsLunging enable — 5
|
||||
queries) excludes it via `WithNone<TargetDummyTag>`; since those passes are ALSO where `KnockbackState`
|
||||
integrates into movement, the dummy is planted for free (knockback stamps land but never move it).
|
||||
- **`TargetDummySpawnSystem`** (Server, editor-only, plain `SimulationSystemGroup`, `DevSandbox` scene-name gate —
|
||||
the established dev-script convention): keeps exactly ONE dummy alive at the first player's spawn + (3, 0, 1.5),
|
||||
400 HP (≈4 full chains), instantiated from a grunt-shaped baked enemy prefab (`WithPosition`, never
|
||||
`FromPosition`). It dies through the NORMAL path (`Dying` corpse window → destroy → kill pop) and respawns
|
||||
1.5 s after the corpse clears — the corpse window delays the timer for free. Client sees a normal interpolated
|
||||
enemy: health bar, hit flash, damage numbers, death feedback all exercise the real pipeline.
|
||||
- **★ EnemyTag-reuse audit** (the CLAUDE.md re-audit rule): damage paths MUST see the dummy (the point);
|
||||
AI excluded; markers/telemetry count it (cosmetic); wave/room cleared-checks WOULD count it — acceptable only
|
||||
because the spawner is sandbox-gated where no director runs. If a dummy ever ships outside the sandbox,
|
||||
re-audit cleared-checks first.
|
||||
|
||||
Composes with the tuning bench: the sandbox now always has a target for eyes-on swings; `CombatProbe` still
|
||||
spawns its own tracked 100k-HP dummy for measured runs (both can coexist — the probe reads its own entity).
|
||||
|
||||
**Validation:** console clean; suite deferred mid-session (operator entered Play while it queued — their live
|
||||
session doubles as the visual validation); dummy presence verified live server-side.
|
||||
Reference in New Issue
Block a user