Skip to content

architect the rich simulation pipeline #748

Description

@zgeoff

Decide and land the engine architecture that combat depth builds on, before feature work bakes in per-tick assumptions the future design would have to unwind. The #729 harness supplies the measurements; this epic turns direction into decisions and landed structure.

Scope

  • Decide the stepping model: discrete-event simulation — a deterministic priority queue keyed by (time, schedule sequence), continuous effects as self-rescheduling events, the 50ms grid surviving only as client presentation — versus the current fixed timestep. Decide from replay-harness numbers; a switch is a deliberate simVersion bump through the replay registry.
  • Modifiers-as-data stat system: flat/increased/more buckets, conditional modifiers, source tracking, and cached resolution with dirty flags — stats recompute when a modifier changes, never per tick. Checkpoints keep carrying inputs only, everything derived stays recomputable.
  • Entities as data, systems as functions: plain serializable state records iterated by pure functions, retiring the closure-per-entity factories as mechanics deepen. No ECS framework unless the entity count demands one.

Notes

  • Determinism invariants carry over unchanged: seeded RNG only, deterministic identity and total event order, and every change shows replay equivalence or bumps simVersion deliberately.
  • Blocked by run an optimization and update pass over the core engine #729: its determinism fixes and optimization passes shrink and stabilize the code this epic reshapes, and its bench data drives the stepping-model decision.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/gamearea: simulation, aether, game systemsepiccapturing related workp2-mediumpriority: mediumrefactor

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions