A unified combat engine
One set of maths for infantry, mechs, vehicles and capital ships — built on real physics.
Every 6 re-rolls and adds. Results are unbounded.
The anchor for every modifier in the game.
The player rolls. No opposed rolls, ever.
You cannot reach a vital system without exploding.
What this system is
A combat engine for military space science fiction that runs infantry, powered armour, vehicles, mechs, aerospace craft and capital ships on one set of maths. Not three rules layers stitched together — one.
It is built on real physics. Hit chances come from angular size and weapon dispersion, wind drift comes from ballistic lag time, and space combat obeys light-lag and the rocket equation. Where the physics produces something unplayable, the rules say so out loud rather than quietly fudging it.
The resolution engine
Roll 3d6. Any 6 explodes — re-roll it and add. Meet or beat the Target Number. Everything downstream reads the Margin: how much you beat it by.
The gaps at 6, 12, 18 and 24 are real: those totals are impossible on a single die, because a 6 always explodes. That quirk is load-bearing — it is what creates the hit-location tiers.
Hit location by depth
Location is rolled on an exploding d6, and a critical system cannot be reached without an explosion. The die partitions itself into exact tiers of five.
Outer hits are common because outer surfaces are what gets shot. Reaching something vital means punching through. The dice mechanic and the layered-armour premise are the same statement.
Where it stands
| Settled | Still open |
|---|---|
| 3d6 exploding, roll-over | How skill enters the roll |
| One roll per situation, player-facing | What a player rolls when attacked |
| Margin drives damage and progress | Rebuilding bounded bands for an unbounded roll |
| Logarithmic cross-scale damage | Armour, disablement and repair detail |
| Angular size as the to-hit spine | Action economy and initiative |
Tell us what is wrong with it
This is an early prototype and the numbers have not been playtested. Use the Feedback button in the corner — every note lands in a triage queue and gets read.