Deterministic tick-stepping combat — physics-grounded weapon dynamics, skill contests, injury accumulation, and formation resolution.
Combat resolution is pair-based and deterministic. Given the same worldSeed and command sequence, every fight produces identical tick-by-tick outcomes. Injury is physical — based on energy transfer, region coverage, and anatomical tolerances — not a simple HP pool.
Each tick advances all entities simultaneously. There is no turn order — simultaneous resolution is inherent to the fixed-point tick model at 20 Hz by default. Adjust tickRateHz in session config for tactical vs real-time resolution.
Archetypes created in the Body Plan Editor or Species Forge are persisted to localStorage and shown here. Import a saved archetype to inspect its combat parameters, or create a new one.
To add a new archetype to the codebase: export as JSON from Species Forge, add it to src/archetypes.ts, write a test in test/archetypes.test.ts, then open a pull request ↗ with the title feat: add [NAME] archetype.
Select an archetype to view typical combat parameters. Values derived from built-in archetypes. For a live 1v1 duel, see the Playground →
| Parameter | Value | Notes |
|---|---|---|
| mass_kg | 80 kg | affects KE at charge |
| weapon | arming_sword | 800 g, 30 J typical strike |
| reach_Sm | 80 000 | 8 m max (incl. weapon) |
| fearThreshold_Q | q(0.35) | morale break threshold |
npm run run:trace-attack in the repo to trace a single attack through the full kernel pipeline.src/sim/combat.ts:resolveHit() for the skill-contest resolution and energy-transfer calculation.worldSeed in createSession to explore outcome distributions — same archetypes, different results per seed.