Presentation
The decision: does anything observe the world on a different cadence,
thread, or process than the simulation tick? If yes, publish versioned
DeltaFrames; if no, omit the render bridge — it is optional, and
nothing else depends on it.
Branches
| Branch | Pick when |
|---|---|
| Headless | servers, batch experiments, tests: no observer exists, so skip DeltaCollector entirely |
| DeltaFrame consumer | any renderer, UI, or network mirror: the consumer owns shadow state, applies immutable versioned frames, and resynchronizes on gaps |
Consumers never rescan the world: frame records carry either individual changed tiles or box-granular dirty bounds, and the consumer re-reads the named tiles — or repaints the recorded box — from the authoritative world (or receives values over its own channel). Frame versions make missed frames detectable and recovery explicit rather than silent.
What it looks like
Learn and specify
- Teach: getting-started §8, rung 8;
examples/render_delta_consumer.ccrebuilds a shadow grid from frames alone, andexamples/colony_2d.ccshows the bridge inside a full schedule loop. - Specify: simulation note — collection, publication, versioning, resync.