Phase 1 combat vertical slice
Active runtime
The active combat scene is res://Features/Dungeons/Run/DungeonRun3DScene.tscn.
All clients use Nakama run services (DungeonRunService, chunked upload + submit)
plus LocalCombatReplayRecorder / LocalReplayStore as the on-disk outbox.
Docker and live servers share the same online path.
The player equips exactly two finalized weapons: Primary and Secondary. Official runs use a fixed loadout. Open and developer runs require a player-selected loadout, except for the explicit developer fallback. The resolved loadout is snapshotted and locked when the run begins.
Phase 1 combat content
- Pulse Rifle, Plasma Shotgun, Rail Rifle, and Arc Cannon use the active
AdvancedWeaponController. - Enemies resolve the generated IDs through
DungeonEnemyCataloginto melee, ranged, elite, or boss roles. - Every active enemy has a body collider and a smaller critical weakspot.
- Enemy, elite, boss and chest sources resolve precomputed
RunDefinition.DropPolicyentries and spawn physical pickups. - The reward is a fixed
PowerUpChoiceOverlay.tscnCanvasLayer UI, not a physical room pickup; it blocks combat input, presents three focused text cards, and shows visible apply feedback. - Six run-local Weapon, Defensive, and Utility power-ups modify both weapon slots or central player stats and are removed at run end.
- Local replays record fire, reload, switch, hits, kills, enemy and boss defeats, power-up collection, policy hash, and loadout hash.
- The dungeon HUD shows both loadout slots, active weapon, magazine and reserve, reload progress, health, objectives, run time, and hit/weakspot/kill feedback.
- Weapon scenes create simple development meshes and procedural placeholder audio at runtime. These are not final assets.
Controls
- Fire: left mouse button
- Reload: R
- Primary: 1
- Secondary: 2
- Next weapon: Q
- Previous weapon: E
Fire release is detected by polling the released state of attack_primary; a
separate stop-fire input action is not required.
Manual smoke test
- Start a development client and enter the social hub.
- Select a developer or manual run and two different weapons.
- Start the run, activate the start terminal, and wait for the countdown.
- Verify fire, reload, both direct slot inputs, Q/E switching, and retained ammo.
- Hit both the body and the smaller upper weakspot; verify different feedback.
- Verify Shotgun multi-pellet damage, aligned Rail penetration, and Arc chains.
- Kill scheduled sources, collect or leave their physical drops, and verify HUD effects, persistence and deterministic replay data.
- Fight melee, ranged, and elite enemies, then the boss's close and ranged attacks.
- Complete boss and enemy objectives, use the exit, and inspect the RunResult.
- Return to the hub, start another run, and verify that no previous enemies, reloads, power-ups, HUD subscriptions, or combat events remain active.
Deferred beyond Phase 1
Final art and audio, production balancing, full cooperative authority, and production replay upload validation remain later milestones.