Commit Graph

6 Commits

Author SHA1 Message Date
scamiv 45a8e33562 Implement worker metrics and debugging events
- Introduced WorkerMetricsEvent and SetWorkerDebugEvent to facilitate communication between the main thread and worker for performance monitoring.
- Enhanced ClientGameRunner to emit worker metrics and handle debug configuration updates.
- Updated PerformanceOverlay to display worker metrics and allow toggling of debug settings.
- Refactored Canvas2DRendererProxy and TerritoryRendererProxy to improve rendering performance and manage render cooldowns.
- Added profiling capabilities in Worker.worker.ts to track event loop lag, simulation delays, and message handling metrics.
2026-02-05 21:46:50 +01:00
scamiv ee90da8e66 Worker rendering: backpressure render_frame + reduce relations rebuilds
- Add render_done worker message and tag render_frame with an id.
- Gate TerritoryRendererProxy/Canvas2DRendererProxy to one in-flight render (2s safety timeout) to prevent render queue buildup.
- Split roster vs palette dirtiness in GameViewAdapter and only force full relations rebuilds on roster/team changes.
- Only markRelationsDirty() on roster changes in WorkerTerritoryRenderer to avoid repeated expensive uploadRelations() while paused.
2026-02-05 21:46:49 +01:00
scamiv 6f96cab778 Worker renderers: decouple from Game/TerrainMap, coalesce view and sim
- GameViewAdapter: build from tileState/terrainData buffers and game
  updates (players, defense posts, embargo/alliance) instead of Game +
  TerrainMapData; add DefensePostUnit/PlayerLiteView and drop config().
- Worker: keep local renderTileState; tileUpdateSink receives packed
  bigint and updates buffer + dirty queue; no terrain map load in worker.
- Proxies: send view size/transform only when changed, inline in
  render_frame (optional viewSize/viewTransform); remove separate
  set_view_size/set_view_transform messages.
- Simulation: remove main-thread RAF heartbeat loop; worker uses
  scheduleSimPump() on heartbeat/addTurn to coalesce ticks.
- GroundTruthData: take defensePostRange at construction; Territory
  renderer passes it through; remove runtime defensePostRange change check.
- GameRunner: tileUpdateSink(packedTileUpdate: bigint); add
  hasPendingTurns().
2026-02-05 21:46:49 +01:00
scamiv 848697e258 this isnt getting good soon 2026-02-05 21:46:49 +01:00
scamiv 0b9f67c31d flawed but "working" 2026-02-05 21:46:49 +01:00
scamiv a03e09a2c8 flawed 2026-02-05 21:46:49 +01:00