Repository navigation
Open
Labels
phase-2Phase 2: Plugin Architecture + Game ClientPhase 2: Plugin Architecture + Game Client
Description
Overview
Phase 2 has two parallel tracks: refactoring the server into a modular DLL plugin system (Track A) and building a game client for Quick Battle mode (Track B).
Design principle: The stock game's combat, scoring, movement, power, repair -- all game logic -- lives in DLLs loaded via TOML config. Stock modules use the exact same API as mod DLLs. A total conversion mod replaces any module and the engine doesn't know the difference.
Architecture Documentation
- Plugin System Architecture
- Event System
- Module API Reference
- Data Format Guide
- Shared Code Architecture
Modding Documentation
Track A: Plugin Architecture
A1: Core Infrastructure
- A1: Implement event bus #121 — Implement event bus
- A2: Implement module loader #122 — Implement module loader
- A3: Define engine API table (module_api.h) #123 — Define engine API table (`module_api.h`)
- A4: Integrate TOML parser #124 — Integrate TOML parser
A2: Extract Stock Modules (dependency order)
- A5: Extract protocol module #125 — Extract protocol module
- A6: Extract lobby module #126 — Extract lobby module
- A7: Extract combat module #127 — Extract combat module
- A8: Extract scoring module #128 — Extract scoring module
- A9: Extract power module #129 — Extract power module
- A10: Extract repair module #130 — Extract repair module
- A11: Extract movement module #131 — Extract movement module
- A12: Extract gamespy module #132 — Extract gamespy module
- A13: Extract chat module #133 — Extract chat module
A3: Scripting
- A14: Embed Lua 5.4 runtime #134 — Embed Lua 5.4 runtime
- A15: Implement Lua sandbox API #135 — Implement Lua sandbox API
A4: TOML Game Modes
- A16: Convert game modes to TOML #136 — Convert game modes to TOML
- A17: Implement TOML event binding #137 — Implement TOML event binding
- A18: Implement mission definition format #138 — Implement mission definition format
Track B: Game Client
B1: Foundation
- B1: Restructure repo (src/shared/, src/server/, src/client/) #139 — Restructure repo (`src/shared/`, `src/server/`, `src/client/`)
- B2: SDL3 + bgfx window init #140 — SDL3 + bgfx window init
- B3: NIF V3.1 parser #141 — NIF V3.1 parser
- B4: Scene graph (simple tree) #142 — Scene graph (simple tree)
- B5: Asset resolver #143 — Asset resolver
- B6: Ship model rendering #144 — Ship model rendering
B2: Space Environment
- B7: Skybox + lighting #145 — Skybox + lighting
- B8: NIF animation (keyframes) #146 — NIF animation (keyframes)
- B9: Audio system (miniaudio) #147 — Audio system (miniaudio)
- B10: Ship movement + input #148 — Ship movement + input
B3: Combat
- B11: Custom physics (~500 LOC) #149 — Custom physics (~500 LOC)
- B12: Combat system wiring #150 — Combat system wiring
- B13: Phaser beam rendering #151 — Phaser beam rendering
- B14: Torpedo rendering #152 — Torpedo rendering
- B15: Shield hit rendering #153 — Shield hit rendering
- B16: Engine glow + explosions #154 — Engine glow + explosions
B4: Quick Battle Mode
- B17: Quick Battle TOML definitions #155 — Quick Battle TOML definitions
- B18: Quick Battle C event handlers #156 — Quick Battle C event handlers
- B19: LCARS UI system #157 — LCARS UI system
- B20: AI opponents #158 — AI opponents
- B21: HUD #159 — HUD
B5: Multiplayer Client
- B22: Multiplayer client networking #160 — Multiplayer client networking
Documentation (all complete)
- D1: Plugin system architecture doc #161 — Plugin system architecture doc
- D2: Event system doc #162 — Event system doc
- D3: Module API reference #163 — Module API reference
- D4: Data format guide #164 — Data format guide
- D5: Modder getting started guide #165 — Modder getting started guide
- D6: DLL module guide #166 — DLL module guide
- D7: Lua scripting guide #167 — Lua scripting guide
- D8: TOML reference #168 — TOML reference
- D9: Total conversion guide #169 — Total conversion guide
Verification
| Phase | Test |
|---|---|
| A1-A4 | Load stock modules from TOML, fire events, verify handler dispatch |
| A5-A13 | Each extracted module passes existing 290 tests via DLL interface |
| A14-A15 | Lua script subscribes to events, modifies scoring, verified in test |
| B1-B6 | Render BC ship models, compare with NifSkope |
| B7-B10 | Fly around scene with ships, lighting, audio |
| B11-B16 | Full combat with visual effects, compare with stock game |
| B17-B22 | Play Quick Battle end-to-end, connect to server |
Phase 3 (Future): Campaign
TOML mission files + C handlers per episode. Bridge interiors, NIF animation, cinematics, dialogue. Uses the same plugin system as multiplayer.
Metadata
Metadata
Assignees
Labels
phase-2Phase 2: Plugin Architecture + Game ClientPhase 2: Plugin Architecture + Game Client
Activity