A strategic battle for the fate of the galaxy. Two asymmetric factions. One hidden base. Fourteen turns to decide everything.
The Dominion holds the galaxy in an iron grip. Its fleets darken the skies of a hundred worlds. Its intelligence networks reach into every corner of civilized space. It has one mission: find the hidden Liberation base and crush the uprising before it spreads.
The Liberation operates from the shadows. Outnumbered and outgunned, they fight not with brute force but with hope — completing daring objectives, swaying neutral worlds, and running the clock until the galaxy rises up on its own.
You command the Liberation. The AI plays the Dominion.
Serve the directory and open it in a browser. No install. No build step. No dependencies.
python3 -m http.server 8080Then open http://localhost:8080.
Each turn follows three phases:
Assign your leaders to missions. The bottom bar guides you through a three-step process:
- Select a leader from the left panel (available leaders pulse to draw attention)
- Choose a mission (missions your leader can't perform are grayed out)
- Click a target system on the galaxy map
Or pass to skip assigning. Both sides alternate assignments until both pass.
Resolve your assigned missions, move fleets, and engage in combat.
- Click Resolve Mission on pending missions in the left panel
- Select a system with your forces and click Move Units, then click an adjacent system (valid targets are highlighted with pulsing rings)
- Combat triggers automatically when forces meet
Automatic — leaders return, missions replenish, production builds new units, objectives are checked, and the time marker advances.
32 star systems spread across 8 regions, from the fortified Core Worlds to the lawless Wild Rim. Systems are rendered as 3D-shaded planets color-coded by region, with loyalty rings showing who controls them (red = Dominion, blue = Liberation, gray = neutral). A gold dot marks systems with production facilities.
Pan with right-click drag. Zoom with scroll wheel.
Each faction fields 6 unique leaders with skills in Combat, Intel, Diplomacy, and Logistics. Every turn, you assign leaders to missions — covert operations that shape the war:
- Send a spy to sabotage enemy production
- Dispatch an envoy to rally support on a neutral world
- Order a commando to hit and run against an enemy fleet
- Task your best operative with relocating your hidden base before the Dominion closes in
The Dominion, meanwhile, runs probe sweeps and intelligence operations to narrow down where your base is hiding.
When fleets collide, combat plays out in two phases — space, then ground. Roll red and black dice, play tactical cards for decisive advantages, and decide when to press the attack or retreat to fight another day. Crits bypass armor. Cards can block damage, double hits, or pierce defenses.
A reputation track starts at 30. Every objective the Liberation completes brings it closer to the advancing time marker. When they meet, the galaxy rises and the Liberation wins.
But if 14 turns pass and the Dominion still stands — or if they find and destroy the Liberation base — the uprising is crushed.
The Liberation draws from a deck of objectives across three tiers:
| Tier | Examples | Points |
|---|---|---|
| Early | Gain loyalty in 3 outer systems, win a ground defense, build a supply network | 1 |
| Mid | Capture a Dominion leader, liberate a Core World, control 4 regions | 2 |
| Late | Destroy the Titan superweapon, inspire 8 systems, win a decisive battle | 3 |
| Action | Input |
|---|---|
| Select a system | Left-click on the map |
| Pan the map | Right-click drag |
| Zoom | Scroll wheel |
| Assign a mission | Follow the 3-step flow in the bottom bar |
| Move units | Select system with forces, click Move Units, click adjacent system |
| Resolve combat | Roll dice, optionally play tactic cards, or retreat |
Vanilla JavaScript, no frameworks, no bundler, no dependencies.
index.html — layout, CSS theme, and structure
data.js — systems, units, leaders, missions, objectives
engine.js — game state, turn flow, mission effects, win conditions
combat.js — dice combat with action cards
render.js — canvas galaxy map with 3D planet rendering
ui.js — panels, modals, step-by-step interaction flow
ai.js — Dominion AI opponent
main.js — entry point and game loop


