Skip to content

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 DungeonEnemyCatalog into 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.DropPolicy entries and spawn physical pickups.
  • The reward is a fixed PowerUpChoiceOverlay.tscn CanvasLayer 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

  1. Start a development client and enter the social hub.
  2. Select a developer or manual run and two different weapons.
  3. Start the run, activate the start terminal, and wait for the countdown.
  4. Verify fire, reload, both direct slot inputs, Q/E switching, and retained ammo.
  5. Hit both the body and the smaller upper weakspot; verify different feedback.
  6. Verify Shotgun multi-pellet damage, aligned Rail penetration, and Arc chains.
  7. Kill scheduled sources, collect or leave their physical drops, and verify HUD effects, persistence and deterministic replay data.
  8. Fight melee, ranged, and elite enemies, then the boss's close and ranged attacks.
  9. Complete boss and enemy objectives, use the exit, and inspect the RunResult.
  10. 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.