Add fuel logistics, modular construction, and pad docking

This commit is contained in:
2026-03-13 15:21:16 -04:00
parent 95dd550fdb
commit bf744ec43e
16 changed files with 1128 additions and 282 deletions

View File

@@ -108,15 +108,27 @@ The backend simulation already includes:
- autonomous ships
- orbital travel
- docking and undocking
- pad-based docking and undocking
- stations expose docking capacity through installed dock-bay modules
- ships reserve an empty pad before docking
- ships wait in a holding pattern when no pad is available
- mining and refinery delivery
- module-gated ship and station capabilities
- ships require fitted modules such as reactor, capacitor, and mining or gun turrets
- stations require fitted modules such as power, refinery, and storage modules
- ships require fitted modules such as reactor, capacitor, mining turret, gas extractor, or gun turrets
- stations require installed modules such as power, docking, refinery, fuel processing, and storage modules
- fuel-to-energy power simulation
- ship reactors consume `gas` fuel to charge capacitors
- station power cores consume `gas` fuel to charge station energy buffers
- gas clouds provide raw `gas`
- station fuel processors convert `gas` into `fuel`
- ship reactors consume `fuel` to charge capacitors
- station power cores consume `fuel` to charge station energy buffers
- powered actions stop when fuel and energy are depleted
- constructor-led station module construction
- stations now track installed modules per instance instead of relying only on static constructible definitions
- module construction uses station inventory plus timed build progress
- explicit action timing in the control loop
- mining now runs on a fixed cycle
- warp and FTL travel require spool time
- docking and undocking have explicit durations
- refining / fabrication
- faction growth through ship and outpost production
- pirate pressure and combat
@@ -129,7 +141,7 @@ The backend simulation already includes:
- systems in galaxy space
- in-system entities in local space
- item-based inventories for ships and stations
- ore, refined metals, gas fuel, and cargo now flow through per-item inventories instead of ad hoc stock fields
- ore, refined metals, raw gas, fuel, and cargo now flow through per-item inventories instead of ad hoc stock fields
The runtime model still follows the intended layered control architecture:
@@ -164,13 +176,20 @@ The runtime model still follows the intended layered control architecture:
- one modular station
- one constructor ship
- one mining ship
- added a gas mining ship for bootstrap fuel logistics
- moved the starting ships close to the `helios` star and next to each other
- added modular ship and station data
- new station power and storage modules
- new ship reactor, capacitor, mining turret, and gun turret modules
- new fuel processing and docking bay modules
- new ship reactor, capacitor, mining turret, gas extractor, and gun turret modules
- refactored simulation inventories to per-item storage
- stations and ships now replicate inventories instead of specialized ore/refined/cargo counters
- added fuel-driven power generation and energy consumption in the simulation loop
- split raw `gas` from burnable `fuel` in the simulation loop
- added module recipe data and per-station installed-module runtime state
- added constructor-led station module construction for the bootstrap station
- added gas harvesting, gas-to-fuel processing, and explicit ship refueling behavior
- reworked docking into pad reservation with visible stand-off positions instead of snapping ships into station centers
- added action timing for mining cycles, warp / FTL spool-up, and undocking
- replaced the viewer bottom faction strip with a horizontal ship-card debugging rail
- added movable, resizable, multi-window history panels in the viewer
- fixed the auto-miner undock controller transition
@@ -190,9 +209,14 @@ The runtime model still follows the intended layered control architecture:
- the galaxy is much larger now, so viewer performance and visual density need active tuning
- moon rendering is procedural from counts, not authored moon-by-moon data
- resource extraction behavior still treats all resource nodes generically
- item inventories exist, but storage enforcement and module-slot restrictions are still lightweight
- cargo/storage compatibility is mostly data-convention driven
- item inventories exist, but storage/module restrictions are still partial
- station storage capacity is now enforced by storage class and installed module
- ship cargo compatibility is still mostly data-convention driven
- hull-specific module restrictions are not enforced yet
- constructor logic only builds from station-local inventory
- it does not yet fetch module materials from other stations or ships
- station installed modules and active construction are not yet exposed in the viewer contract
- some viewer follow-camera code is currently broken by a pre-existing missing `followedShipId` property
- piracy and faction growth are still functional rather than strategically deep
- no persistence for saves, seeds, or reconnect state
@@ -205,26 +229,31 @@ The runtime model still follows the intended layered control architecture:
- [apps/backend/Simulation/SimulationEngine.cs](/home/jbourdon/repos/space-game/apps/backend/Simulation/SimulationEngine.cs)
- simulation advancement
- snapshot / delta composition for galaxy-space systems and local-space entities
- inventory, fuel, and energy processing
- auto-miner undock state transition fix
- inventory, gas/fuel, and energy processing
- station module construction
- gas harvesting, refueling, and pad-based docking
- action timing for mining, spool-up, docking, and undocking
- [apps/backend/Simulation/ScenarioLoader.cs](/home/jbourdon/repos/space-game/apps/backend/Simulation/ScenarioLoader.cs)
- faction bootstrap
- galaxy generation
- special systems
- procedural celestial/resource content
- normalization of authored placements into system-local space
- minimal startup seeding for ships, station, and fuel
- minimal startup seeding for ships, station, fuel, and module materials
- [apps/backend/Contracts/WorldContracts.cs](/home/jbourdon/repos/space-game/apps/backend/Contracts/WorldContracts.cs)
- snapshot and delta contract shape
- station dock-pad count
- [apps/backend/Simulation/RuntimeModels.cs](/home/jbourdon/repos/space-game/apps/backend/Simulation/RuntimeModels.cs)
- runtime vector math and world model
- per-item inventories on ships and stations
- per-station installed modules and docking pad assignments
- [apps/viewer/src/GameViewer.ts](/home/jbourdon/repos/space-game/apps/viewer/src/GameViewer.ts)
- camera, selection, streaming integration, and presentation
- layered local/remote system presentation
- orbital reconstruction and moon rendering
- projected shell markers and hover labels
- ship card list and multi-window history debugging UI
- station HUD docked/pad count readout
- [apps/viewer/src/style.css](/home/jbourdon/repos/space-game/apps/viewer/src/style.css)
- HUD layout
- ship-card rail
@@ -235,14 +264,19 @@ The runtime model still follows the intended layered control architecture:
- viewer-side snapshot contract for galaxy-space systems and local-space entities
- [shared/data](/home/jbourdon/repos/space-game/shared/data)
- scenario and world data definitions
- `module-recipes.json` now defines timed module construction costs
## Validation
Validation passing at the end of this session:
- `dotnet build apps/backend/SpaceGame.Simulation.Api.csproj`
Validation currently failing / blocked:
- `cd apps/viewer && npm run build`
- fails because `apps/viewer/src/GameViewer.ts` references a missing `followedShipId` property
## Last Commit
- `1747d84`
- `ef62577`