A single-player strategic wargame in the browser. Four powers — the Earth Federation (blue), the Vraygon Star Realm (gold), the Zandrax Horde (red), and the Krelath Empire (green) — fight a limited war over a contested zone of independent worlds where their spheres meet. Mutual deterrence closes each power’s home sphere to invasion, so the war is fought entirely over the independents. Victory is worlds held when the war ends.
Original setting and ships; no licensed material.
The repository contains a headless strategic prototype (placeholder world graph, seeded PRNG, save/load and a WEGO turn loop) and the current tactical game: a deterministic fleet-combat engine, scenario editor, replay viewer and interactive one-side-vs-AI playfield.
node test/harness.js
runs a full 48-turn war on random legal orders from all four powers and verifies: determinism (seed + order log replays exactly), lossless mid-war save/load, and the deterrence rule (no foreign fleets in home spheres).
| Power | Color | Doctrine |
|---|---|---|
| Earth Federation | Blue | Deep shields, torpedo throw-weight; absorbs independents slowly, holds durably |
| Vraygon Star Realm | Gold | Richest treasury, sturdiest hulls, slowest yards; buys what it cannot storm |
| Zandrax Horde | Red | Speed and heavy beams on thin shields; conquers fastest, holds worst |
| Krelath Empire | Green | Short-range warp jump and ambush volley; smallest economy |
The common tactical ladder is Frigate 2, Destroyer 4, Missile Destroyer 4, Light
Cruiser 10, Heavy Cruiser 16 and Battleship 32 — six hulls, and every power
fields all six. Unique roster hulls are Earth Gunstar Battlecruiser 16, Vraygon
Monitor 24, Zandrax Corvette 1, and Krelath Strike Cruiser 8 plus Carrier 16. The Earth Command Ship is retired from the roster and retained
only for old replay compatibility. data/tactical-tuning.json is the source
of truth for points and rosters.
node test/fleet-trial.js
Runs point-buy fleets against each other and reports win rates, plus a
concentration-of-force matrix. --watch EAR KRE narrates a single battle.
Design and current findings: docs/tactical-design.md.
src/tuning.js — strategic-layer tuning constantssrc/prng.js — seeded PRNG (mulberry32); all engine randomness flows through itsrc/map.js — warp-lane graph, pathfinding, deterrence rule, supply tracingsrc/model.js — game state, new game, save/loadsrc/orders.js — order validation + random legal-order generationsrc/combat.js — strategic-layer combat interface (still a stub)src/engine.js — WEGO turn pipeline: movement → combat → assault → economy → unrestdata/worlds-placeholder.json — placeholder graph: four home spheres around 12 contested worlds (to be replaced by the Achernar Campaign map)data/factions.json — four orders of battle, first-draft stats for reviewassets/models/ — original fleet STLs plus the later gunstar-battlecruiser/carrier prototypessrc/tactical/ — hex geometry, ship model, and combat resolverdata/tactical-tuning.json — all tactical balance constantsdata/loadouts.json — which weapons each power fits to each hulltest/harness.js — full-war harnesstest/fleet-trial.js — fleet action trialsThe browser tools now include a scenario editor, static replay viewer and
interactive turn-by-turn playfield. Start them with npm run arena; operating
details are in arena/README.md. The original viewer brief is
kept as implementation history in docs/arena-brief.md.
The original 24-hull Blender pass is complete, with later Earth Gunstar Battlecruiser
and Carrier prototypes also present. The starting brief and subsequent intake
notes remain in docs/ship-asset-brief.md and
docs/*inspection*.md.
The scenario editor and battle arena are published by GitHub Pages: https://candc3d.github.io/orion-wars/arena/editor.html