Architecture overview¶
Layers¶
| Layer | Path | Responsibility |
|---|---|---|
| Sim (core) | src/sim/core/ |
Jobs, objects, zones (types + behavior), map generator – pure logic, no UI |
| Client | src/client/ |
PixiJS UI, input, rendering, ZoneManager, order/need/gather handlers |
| Server | src/server/ |
Map generation API (NoiseMapGenerator, MapGeneratorService) |
Placement rule¶
- sim/core: domain types and behavior (objects, jobs, zone definitions, ZoneData). No Pixi, DOM, or localStorage.
- client: presentation and wiring – ZoneManager (zones + SessionManager + callbacks), OrderActionRegistry, NeedHandlerRegistry, GatherJobCompletionHandler, rendering, input.
See also sim/core README.
Main components¶
- IsometricMap – map, camera, zones, job creation, selection, persistence; uses order action registry, need handler registry, gather completion handler (no hardcoded branches for these).
- JobSystem – assigns jobs, runs movement, executes work (chop, mine, haul, drink, sleep)
- GameEventBus – event-driven communication (job, selection, zone, need events)
- ZoneManager (client) – holds ZoneData[], uses ZoneTypeRegistry (sim/core) for type-specific behavior (storage/sleeping)
- ObjectManager (sim/core) – all map objects (colonists, trees, resources, etc.)
Refactoring notes¶
See God classes refactor proposal for planned splits of large components.