# How Bramble Arc Built a Deterministic Roguelike for Unreliable Networks

Bramble Arc is a five-person indie studio developing *Cinder Circuit*, a cooperative roguelike where players assemble temperamental machines inside a collapsing orbital refinery. The team wanted online sessions to feel immediate without operating a large authoritative server fleet. That constraint led them to a deterministic lockstep architecture: clients exchange compact input frames, then simulate the same world locally.

## Keeping the Simulation Reproducible

Determinism became the project’s most demanding technical requirement. Floating-point physics produced subtle platform-specific differences, so gameplay movement was rewritten using fixed-point arithmetic. The team also replaced engine-level random calls with seeded generators scoped to individual systems. Combat, loot, and procedural rooms each receive a derived seed, preventing an extra particle effect from changing the next boss attack.

```yaml
simulation:
  tick_rate: 30
  input_delay_frames: 3
  fixed_point_scale: 1000
  state_hash_interval: 60
```

## Detecting Desynchronization Early

Every client calculates a lightweight state hash once every 60 ticks. The hash covers entity positions, health values, active effects, and random-generator state, while deliberately excluding presentation-only data. When hashes disagree, the session records the first divergent tick and uploads a compressed input history. This turned rare multiplayer failures from vague bug reports into reproducible local tests.

## Building Tools Before More Content

Bramble Arc paused level production for three weeks to build a replay inspector. The tool can advance one tick at a time, compare two simulations, and highlight the first field that differs. Although the interruption worried the studio’s producer, it quickly paid for itself: a desync caused by nondeterministic dictionary iteration was isolated in under an hour instead of consuming several days.

## Practical Results

The architecture is not free. Patches that alter simulation logic invalidate old replays, and joining a match in progress requires transferring a verified snapshot. Still, the tradeoff fits the studio’s scale. Bandwidth remains low, ordinary matches do not depend on expensive high-frequency servers, and the same deterministic replays now power regression tests, trailer capture, and automated balance experiments.