Optional initial materials. Each must have a unique id in the valid range.
Registers a material so it can be sampled, rendered, and used by carve and deposit operations.
Per-cell timer thresholds (burnDuration for fire materials,
settleAfterTicks for materials with a settlesTo promotion target)
must be integers in 1..256 because the underlying timer is a
Uint8Array that saturates at 255 — a threshold above 256 means the
counter current + 1 (max 256) never reaches the threshold, so the
cell silently never burns out / never promotes. The check at
registration prevents that footgun. See
docs-dev/04-tuning-research.md.
Registry mapping material ids to Material descriptions.
Air (id
0) is implicit and is never registered. Registered ids must be integers in the range1..255so they fit in the one-byte cells of aChunkedBitmap.