Skip to content
Homesliced Software
Available nowBullet hell · Shmup patterns

Bullet Heck

Deterministic bullet patterns and fire control for bullet hells and shooters.

Unity
6000.0.85f1+
Version
1.0.0
Price
$45
License
Asset Store EULA
01 / 17

The trailer: the showcase scene, four gallery patterns, the Pattern Preview and Record Editor at work, the shooter's waves and boss, and rollback.

At a glance

A bullet-pattern engine where the same seed and inputs give the same run on every machine. Write patterns as data, preview and scrub them in the editor, and get replays, ghost runs and rollback support. It runs 10,000 bullets in under a millisecond a tick.

144 µs
A tick of 10,000 bullets vs 4 receivers (IL2CPP)
0 B
Allocated per step, snapshot, restore or replay
~40 µs
To snapshot 10,000 bullets
696
EditMode tests, in Built-in and URP
Bullet patternsDeterministicReplaysRollback-readyZero GCSource included

Features

What it does

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.

Patterns are data

Every pattern in Bullet Heck is a small JSON record. Bullets say how they look and move. Patterns say how a volley spreads. Emitters run short scripts: wait, repeat, rotate, aim and fire. Actors put emitters on a path. Records compile into a library, and errors point at the exact file, field and line, with a suggestion when you've made a typo.

You don't have to write JSON by hand. The Record Editor gives every record type a form, with pickers for references and red fields for numbers that don't parse. The Pattern Preview plays the result right in the editor, and reloads it as soon as you save.

Determinism you can use

Bullet Heck doesn't treat determinism as a box to tick. Because a run depends only on its content, seed and inputs:

  • Replays store inputs only, about 15 bytes a tick, with checkpoints that catch a desync early.
  • Ghost runs play a previous run beside the live game, as in the Shooter sample.
  • Rollback can save and restore the whole world without allocating, and WorldTimeline can seek, branch and check determinism.
  • Tests run patterns headless under dotnet test, so a balance change can't silently alter a boss fight.

Five samples to start from

  • Quickstart: a turret, a spiral and a ship you fly. R records a run, G plays it back.
  • Gallery: 18 actors and 85 records firing at a weaving target. Arrow keys switch actors.
  • Shooter: a one-minute vertical stage with waves, a four-attack boss, grazes, score and a ghost of your best run.
  • Rollback: two peers side by side over a simulated network with adjustable delay and loss.
  • DeviceCheck: checks bit-exactness and benchmarks on whatever device you build it for.

Ready to try Bullet Heck?

Check the specs and FAQ, or ask us whether it fits your project.