Determinism
The same run, everywhere
The simulation runs in 16.16 fixed point with integer angles. A test bans floats, System.Random and UnityEngine from the world code. The same seed and inputs give the same run in the editor, Mono and IL2CPP.
Content
Patterns are data
Bullets, patterns, emitters, paths, actors and per-bullet scripts are small JSON records. Compile errors name the file, the field and the line, and the writer's stable output keeps diffs clean.
Tools
Preview, scrub, check
The Pattern Preview runs any pattern in edit mode. Scrub ticks, play at 0.25x to 4x, drag the target and check determinism. The Record Editor gives every record a form with pickers.
Bullets
More than straight lines
Circles and capsules (lasers and needles), swept collision, piercing, homing, curving, acceleration and bounces. Up to 4 timed phases and child volleys up to 8 deep, for fireworks and splitters.
Replays & rollback
Built-in time travel
Replays store about 15 bytes a tick, with checkpoints that catch desyncs. Ghost runs play beside the live game. Zero-allocation snapshots and a seekable timeline make rollback netcode practical.
Performance
Fast, plain C#
10,000 bullets in under a millisecond a tick on a mid-range laptop CPU, single-threaded, with zero GC. One unlit SDF shader draws up to 1023 bullets per draw call.