sots-re/campaign/backlog.md

2 KiB

Backlog (prioritized)

Object model + control flow are mapped concurrently. Priority favors targets that unblock the most other work. Groomed by re-quartermaster.

Now

  1. Data readers first (reimpl lever) — implement the Mars brace-block parser + flat-KV + CSV readers. Unlocks tech tree, weapons (207), ship sections (875), races, AI tables, scenarios, tuning — nearly free. Also becomes the first verify/parsers/. See findings/subsystems/data-model.md.
  2. RTTI class inventory — pull the full class/vftable list from ReVa; this seeds the real object-model target names (currently placeholders on the board).
  3. empire/player object — the root of the game state; cross-ref the save-editor structs.
  4. entry → main loop — establish the control-flow spine in parallel with the object model.

Next

  1. star system / fleet / ship / tech-tree objects (fan-out once class names are known).
  2. D3D9 device init → present loop (renderer anchor).
  3. save load/write path (ties object model to on-disk format; feeds verify/ parsers).

Later

  1. battle-load path (primary bug) — needs the object model + main loop mapped first.
  2. .gob/DDS/model asset parsers (interop tools).

Breadth queue (next rounds, one Ghidra user at a time; non-Ghidra items can run in parallel)

  • Combat sim: GameCombatSim/Mars::CombatSim tick, CombatCommand* dispatch (31 types), weapon flight per weaponclass (Ghidra)
  • Renderer: D3D9 init → Mars::DrawDevice/Camera → present loop; .fx shader usage (Ghidra)
  • Networking: SNM*/FNM* protocol from the 82 NetMsgReg_* factories; lockstep sync + host migration (Ghidra)
  • AI: AIPlayer, fuzzy IAIRule, TacAISquad*; how the AI CSV tables are consumed (Ghidra)
  • Mars::Buffer::gobio VFS + NativeFileSystem override order (Ghidra, small)
  • Ship design rules: section sockets/banks → ShipDesignDef validation (data + small Ghidra)
  • Reader/verify: fold strategic-internals formulas into harness checks against the 3 real saves (Python)