feat: adds fleet, windows, building

This commit is contained in:
2026-03-11 20:59:15 -04:00
parent 5727cb0e88
commit 5979a74d46
16 changed files with 2218 additions and 153 deletions

View File

@@ -14,6 +14,9 @@ The current prototype includes:
- Three view levels based on zoom: `local`, `solar`, and `universe`
- A bottom command bar with selection info, order buttons, and a minimap
- A strategic HUD overlay that switches to NATO / military-style symbols at higher zoom levels
- A generic window layer, with an initial fleet command window for managing multi-wing groups
- App windows can now be dragged by their headers and resized from a corner grip
- `stargate` now exists as a constructible category in the same authored pipeline as other stations
## Major Gameplay Systems Added
@@ -43,12 +46,26 @@ The current prototype includes:
- military
- transport
- mining
- Ship classes now distinguish:
- frigate
- destroyer
- cruiser
- industrial
- capital
- Unit state machine now includes states for:
- idle / moving
- FTL travel
- mining and delivery
- docking approach / docking / docked / undocking
- patrol / escort
- Fleets are now a first-class gameplay concept:
- fleets have a commander, stance, high-level fleet order, and explicit wings
- wings can be nested via parent/child relationships to represent sub-wings
- ships now carry behavior metadata such as command, mining, escort, screen, or logistics
- fleet orders fan out into ship-level execution orders, keeping "order" separate from "behavior"
- Fleet tree selection is now manager-backed:
- fleets, wings, sub-wings, and ships can be selected directly from the fleet window
- selection is now handled through a dedicated selection manager rather than scattered UI state mutations
- Orders currently supported:
- move
- transfer
@@ -60,12 +77,15 @@ The current prototype includes:
- Docking was added as a required step for transfer to stations
- Stations have limited docking capacity and explicit docking ports
- Carriers now act as mobile docking hosts for smaller combatants
- Carrier recovery was corrected so docking ships reserve a pad early and approach the moving pad directly instead of stalling behind the hull
- Mining ships now:
- mine ore in `Perseus`
- return to `Helios`
- dock at a refinery
- transfer ore
- undock and repeat
- Mining ships now correctly leave for the refinery once full even when the delivery leg is inter-system
### Economy / Inventory Foundations
@@ -75,15 +95,32 @@ The current prototype includes:
- `bulk-gas`
- `container`
- `manufactured`
- Added itemized manufactured goods for industrial progression:
- `hull-sections`
- `ammo-crates`
- `naval-guns`
- `ship-equipment`
- `ship-parts`
- Added deployable constructible kit items so buildables are also producible:
- `trade-hub-kit`
- `refinery-kit`
- `farm-ring-kit`
- `manufactory-kit`
- `shipyard-kit`
- `defense-grid-kit`
- `stargate-kit`
- Added module categories and starter module definitions for ships/stations
- Added explicit recipe data for refinery processing
- Added explicit recipe data for refinery and fabrication processing
- Ships and stations now expose compatible cargo/storage/module metadata
- Refineries track:
- ore stored
- active refining batch
- refining timer
- refined output stock
- Refinery processing now consumes ore inventory and produces manufactured output through a recipe-driven flow
- Stations now also maintain per-item stock internally
- Fabricator-array stations can now build ship parts, ammo, guns, and equipment from recipe data
- Fabricator-array stations can now also assemble deployable kits for constructibles, including stargates
- Refinery/manufactory processing now consumes itemized inputs and produces itemized outputs through a shared recipe-driven flow
### Energy / Fuel
@@ -110,7 +147,12 @@ The current prototype includes:
- Ship and station selection is supported
- Ship multi-selection is supported via click modifiers and marquee drag selection
- Selected ships can now be ordered to dock with the nearest friendly carrier
- Active fleets can be selected and focused through the fleet command window
- The fleet window now renders fleets as a real tree rather than a flat list
- Fleet tree nodes show order, behavior, and state on ship-level entries
- `Solar` and `universe` views now overlay high-level tactical symbology instead of relying only on 3D meshes
- `Solar` view now shows fleet hierarchy links between commanders and wing leaders
- Ships use role-specific long-range symbols:
- military: hostile/combat-style diamond iconography
- transport: boxed logistics symbol
@@ -131,13 +173,16 @@ The current prototype includes:
- `Ctrl/Cmd + Left Click`: toggle ships in selection
- `Left Drag`: marquee-select multiple ships
- `Right Click`: issue move/transfer orders
- `Right Click` with no ship selection and an active fleet: issue a fleet move order
- `Mouse Wheel` or `-` / `=`: zoom
- `W A S D`: pan camera
- `Q / E`: rotate camera
- `F`: focus selection, and follow a single selected ship
- `G`: toggle the fleet command window
- `R`: assign selected compatible ships to dock with the nearest friendly carrier
- `Tab`: jump camera between systems
- `B`: toggle build mode
- `1-5`: choose constructible
- `1-7`: choose constructible
- `M`: assign mining
- `P`: assign patrol
- `E`: assign escort
@@ -158,12 +203,19 @@ The current prototype includes:
- `scenario.json`
- `balance.json`
- Shared domain and runtime types now live in `src/game/types.ts`
- Stations now carry both coarse storage totals and itemized stock for recipes
- The recipe graph now covers every current constructible and every current catalog item ID
- World construction is extracted into `src/game/world/worldFactory.ts`
- HUD creation and presentation logic are extracted into:
- `src/game/ui/hud.ts`
- `src/game/ui/presenters.ts`
- `src/game/ui/strategicRenderer.ts`
- Fleet composition helpers now live in:
- `src/game/fleet/runtime.ts`
- Inventory helpers now live in `src/game/state/inventory.ts`
- Selection logic is now centralized in:
- `src/game/state/selectionManager.ts`
- Ship-to-ship docking now reuses the same generalized docking path as station docking inside `src/game/GameApp.ts`
- High-level symbology is rendered through a dedicated 2D HUD overlay canvas layered above the 3D scene
- Production build is currently passing with `npm run build`
@@ -173,10 +225,14 @@ The current prototype includes:
- Stations are on Lagrange-style offsets, but not using a physically rigorous orbital solver
- Ship transfer paths are curved and orbit-biased, but still use authored steering rather than patched conics or n-body integration
- Fuel / energy exist but station refueling, resupply, and depletion failure states are still minimal
- Module definitions exist, but there is no actual ship/station designer yet
- Inventory classes exist, but only a subset of economic flows are implemented
- Module definitions exist, and a generic window framework now exists, but there is still no actual ship/station designer yet
- Production is still automated by recipe priority; there is not yet a player-facing queue UI for choosing or reordering station recipes
- Constructible recipes currently output kit items, but build mode still spawns structures directly rather than consuming those kits
- Docking works for logistics, but there is not yet a richer docking queue / reservation UI
- NATO-style symbology is gameplay-oriented inspiration, not a strict APP-6 / MIL-STD implementation
- Fleet orders currently cover patrol, move, hold, and mining, but wing-specific doctrine editing is still minimal
- Carrier recovery exists, but launch/redeploy flows and richer carrier doctrine are still minimal
- Window positions and sizes are not yet persisted across reloads
## Suggested Next Steps
@@ -194,3 +250,4 @@ The current prototype includes:
- Expand the economy beyond ore/refining into manufactured goods and trade lanes
- Improve FTL visuals with a fullscreen post-process distortion or tunnel effect
- Expand the strategic overlay with threat rings, route arrows, and fleet stance/status markers
- Extract fleet command propagation and ship AI execution out of `GameApp.ts` into dedicated simulation systems now that the fleet model has stabilized enough to justify it