An early playable space colony simulator inspired by Dwarf Fortress. Keep seven alien founders alive, build a planetary colony, and send supplied expeditions into orbit to recover material for its next expansion.
Play online · Online elements lab · Release v0.1.4 · Roadmap
The game is still in development. The current build has one colony floor and fixed orbital destinations. Long-lived staffed outposts, connected vertical decks, a generated universe/history and much of the wider simulation remain unfinished. The implementation status separates working systems from plans.
Version 0.1.4 keeps save schema 46 and the existing gas rules. The atmosphere inspector now distinguishes oxygen concentration from Oxygen at this pressure, shows the safe 16–30% nominal range and explains the same first failed limit used by crew and local-agent observations. The original unsafe room contained 20.736% oxygen, but its lower pressure left only 15.8476% of nominal oxygen available. Importing a save now preserves the actual prior speed, including pause, on completion, failure or cancellation.
One full local run passed 1,282 checks, zero failures and one intentional skip. Seven affected panel checks then passed after a presentation-only change that made the warning span the inspector width. Browser review confirmed that importing the original tick-144 save while paused kept its clock still and showed the shared low-oxygen explanation clearly.
A separate paid recovery first stopped at its tick-384 budget after producing ten air without reaching breathable conditions. A reviewed continuation then ran 384→460: 76 ticks and three commands, producing 40 air from four water and keeping home breathable for 12 consecutive ticks. All seven crew and five animals stayed fully healthy; three checkpoints reopened exactly. The processor was paused with its next paid batch preserved.
The final room held exactly the minimum 56 oxygen units, with suit reserves only 76.79–78.49%. This proves bounded recovery, not a durable reserve or sustained exterior work. The original tick-144 livestock stop and tick-384 recovery stop remain recorded; the full ordinary livestock/kitchen chain is still unverified. See atmosphere and verification status. The v0.1.4 release record tracks the final commit, required CI/Pages results and hosted checks; local evidence here does not establish deployment success.
The release build uses six-sided hex tiles for terrain, construction, movement, sealed rooms and utility connections, with the isometric view retained. Directional devices face one of six neighbors. Experimental pressure-cycling airlocks recover and refill actual gas while crew retain their work and cargo.
Version 0.1.3 includes three crops, two productive livestock species and ten recipes with ingredient and skill requirements. Livestock now inherit individual temperature preferences and production pace: faster products require faster feed use, while cold tolerance trades against heat tolerance. A carried brood saves the offspring's inherited traits at conception. See animal traits and breeding.
Wild fungal caps and sunberries grow through visible stages and can be gathered by crew; lichen supports grazing. Crew can also plant matching raw food as ground beds, deliver finite water and harvest their regrowth. See cultivation for costs and growing conditions. Persistent fire and temperature injuries use delivered medicine and gradual recovery at a post. Food identity, age, maker and quality survive physical hauling and cooking. See flora, livestock and cooking for combinations and progression, and veterinary care for treatment.
Livestock deaths now leave physical bodies that handlers can carry to a husbandry post for butchery. Tame adults can be ordered for slaughter; fresh bristleback and glazefoot meat combine with fungal caps or sunberries in two new meals. Body age continues through carrying and processing, and spoiled bodies require disposal. See butchery for fixed yields, work and restrictions.
Local verification covers 1,264 distinct passing checks and one intentional historical skip. The first full run passed 1,263 checks and found one stale recipe-option expectation; its exact repaired check then passed, without repeating the full suite. Focused food, body, interface and integration checks cover 8, 49, 9 and 77 cases. Actual schema-45 saves preserve their prior state through migration, with six exact current reloads.
The ordinary livestock trial stopped at tick 144 after 78 additional ticks and three commands because home air was no longer breathable. Two paid posts finished at tick 85 and two care deliveries raised the target's trust to 80. All seven crew and five animals stayed healthy; no slaughter, body, meat or new meal occurred. The complete ordinary chain remains unverified. Habitat and exterior-work air reserves are the next priority.
Local browser review passed fresh save/reopen, actual save import, ten recipe choices, applying and preserving Bristlecap braise selection, and a readable 390-pixel layout. It did not cover corpse handling or a cooked meat meal. See release readiness for local scopes and the v0.1.3 release record for hosted verification. Earlier results below describe their own increments.
The preceding trait build passed 1,210 regression checks, zero failures and one intentional skip on its first full run. Actual previous-build migration preserves physical state and reopens exactly; focused checks also cover carried broods, offspring and injuries. One supplied-parent/pasture trial produced a healthy inherited hatchling at tick 301 using three commands, with six exact reloads. Folded founder/brood/offspring details and a 390-pixel layout passed browser review; ordinary herd construction and long-term balance remain unverified. Earlier 26 Python checks apply to unchanged tooling.
The preceding cultivation increment completed a fresh-colony planting→watering→harvest cycle at tick 853 using six commands: one gathered fungal-cap portion and one water produced two cultivated portions. All seven crew and five animals stayed healthy, and 24 checkpoints reopened exactly. Its browser checks covered planting/watering cancellation, growing and mature beds, harvest availability and a narrow layout.
Earlier ordinary play built a galley, gathered native caps and cooked two fungal-stew portions, with everyone healthy and four exact reloads. A preserved colony checkpoint has healthy founders, a repaired scrubber and two restored solar arrays. Paid airlock enclosure, commissioning, a parcel roundtrip and long-term food balance remain pending. See the verification record for exact scopes and remaining acceptance work.
An early construction trial exposed air loss during hauling. A continuation delivered all mined ore, sealed the door and restored breathable air; both manufacturers resumed work and all seven crew stayed healthy. A saved continuation met the recovery reserve target. Crew now share breathing air before optional suit charging, with warnings when habitat breathing needs suit reserves. The complete airlock construction journey still needs play testing.
Hex colonies now use save schema 46. Schema-40/41/42/43/44/45 hex saves have explicit migrations preserving existing plants, animals, food, health, ancestry and progress. Balanced livestock traits preserve current rates and temperature ranges; later offspring can inherit stronger expressions. Migration grants no plants, animals, medicine or healing and does not invent old wounds or turn old food into named ingredients. Animals already dead in older saves gain an exhausted legacy record, with no new body or meat. Square saves from schemas 1–39 cannot be loaded into this version; their original contents remain protected and exportable. Continue those colonies with the matching square version. The separate gravity-based elements lab keeps its square grid.
- Physical freight manifests: workers load and unload existing goods, with cancellation, capacity and flight reserves preserved.
- Experimental wreck settlement: delivered local construction, measured habitat readiness, named residence and return-passenger controls.
- Crew work, meals, rest and care use their actual site; compact inspectors expose supplies and offsite warnings.
- An explicit one-person service visit to an established wreck leaves a seat for a resident pickup.
- More reliable departure loading, blocked-carrier parcel recovery and physical shuttle checks; save schema38 preserves older owned supplies and crew.
Outpost endurance is still experimental. Bounded real freight and residence controls passed player checks, but a complete fresh-colony settlement, delayed resupply, ordinary remote care and final pickup walkthrough remains unfinished. Plan actual gas, heating and night battery reserves; a room being ready now does not prove it can survive the night.
The v0.1.2 build passed 958 tests with one intentional historical skip, plus 15 Python checks. See the verification record, changelog and roadmap for scope and next work.
The hosted game and separate elements lab use the links above. The first online load fetches static HTML, scripts and styles from the same GitHub Pages origin, then the simulation runs in your browser. There is no gameplay backend, account requirement or cloud save service. Use the local setup below for offline play.
You need Python 3 and a recent desktop browser with JavaScript and Canvas support. Node.js 20 or newer is needed only to run the tests. Linux development currently uses Python 3.12 and Node 20, with scoped Firefox and Chrome browser checks; wider platform/browser coverage is limited.
Clone the public GitHub repository with:
git clone https://github.com/Jaredcastorena/spacefortress.git
cd spacefortressYou can also download and extract the source archive from the repository page. In the project directory, run:
python3 tools/serve.pyOn Windows, use py -3 tools/serve.py if Python is installed through that launcher. Open http://127.0.0.1:8420/. Keep the terminal open while playing; Ctrl+C stops the server. Use the server rather than opening index.html directly, because the game loads JavaScript modules.
If port 8420 is already in use:
python3 tools/serve.py --port 8421Then open http://127.0.0.1:8421/. A different port has separate browser save storage; export your colony before moving between addresses.
There is no build step or package installation. Python serves the files on your own computer; the simulation runs in the browser. All game code and graphics are included in the checkout. Local play makes no external runtime network calls and needs no account, cloud service, additional asset download or model download. Once you have the source and tools, it runs offline through the local server.
- Pause with Space and inspect the starting colony. Colony, Crew and Log open details; Esc closes menus.
- Use Build to select a structure, then click a valid tile. Crew reserve real supplies, collect them and work at the site. Inspect blocked work for its reason.
- Use Extract on deposits. Keep routes clear, supplies accessible, and life support powered and stocked. Pressure doors, leaks and cold rooms affect the crew.
- Open Regions → Relay K-07, choose two ready crew and prepare an expedition. Workers must load its supplies before the selected pair walks to the shuttle. At the wreck, extract satellite material, let crew carry it to the dock, then recall them.
- Use returned parts for an advanced solar array or a paid shuttle fitting. See the colony-to-orbit walkthrough for the complete loop and its limits.
| Input | Action |
|---|---|
| Click a tile | Inspect it, or designate the selected work |
| Drag the map / arrow keys | Pan |
| Mouse wheel / − and + | Zoom |
| Home / center button | Center the view |
| Space / time buttons | Pause or select 1×, 3× or 8× speed |
| 1 / 2 / 3 / 4 | Inspect / Extract / Repair / Dismantle |
| Esc | Return to inspection and close drawers |
| Build / Regions / Crew / Colony / Log | Open the corresponding menu |
| Cutaway / Power / Water / Gas | Toggle map views |
| ? | Open the in-game guide |
Keyboard shortcuts are inactive while editing a form or using a dialog. If a button has focus, use the time controls or focus the map before pressing Space.
- Colony work: physical material reservations, mining, hauling, construction, staffed production, finite depots, food preservation, farming and recycling.
- Crew lives: work duties and skills, hunger, rest, social needs, housing, injuries, medical treatment, carrying patients and bedside care.
- Environmental systems: compartment gases, pressure doors, finite gas networks and retained exhaust, room heat, water plumbing and spills, fire/smoke, wired power, batteries, reactors and wet-fault breakers.
- Orbital expeditions: explicit two-person crews, physical loading/boarding, limited cargo, satellite salvage, comet resources, solar collection, return trips and supplied fittings.
- Wreck settlement preview: physical freight, local building, readiness, residence/return selection and site-local care controls. Full endurance and resupply acceptance is pending.
- Original setting: alien crew, bristleback and glazefoot livestock, biomass-eating tibbles and small fictional anomalies, shown on an isometric map with details in drawers.
- Local simulation interface: shared player/agent actions, stable entity IDs, structured observations and optional bounded recordings. No model or training service is included.
These are game-scale models with documented gaps, not full Dwarf Fortress parity or realistic engineering simulations. The conversion inventory tracks the broader work. The staffed outpost design describes the implemented preview and remaining gameplay acceptance.
Save writes the colony into this browser's local storage under spacefortress-save-v1. The game also autosaves every 30 simulation ticks and when the page is hidden or closed. Saves are tied to the browser profile and page origin, including the port; clearing browser data can remove them. Nothing is uploaded to a server or written into the source tree.
Hosted play and local play have different origins and therefore separate saves. To move a colony, use ⋯ → Export save at the old address, then ⋯ → Import save at the new address. Saves remain browser-local on GitHub Pages too; they are not synchronized between browsers or devices.
Use ⋯ → Export save for a portable JSON backup, and ⋯ → Import save to restore one. Import replaces the current colony after validation; export first if you want to keep both. New colony also replaces the current colony and asks for confirmation. If an existing save cannot be read, the game protects it from automatic replacement and offers its original contents for export. When browser storage is unavailable, use export to keep your progress.
Optional Start recording / Export recording controls export local NDJSON observations and actions. Recordings are bounded, are separate from save files, and do not change simulation results. See the simulation interface.
Use the online elements lab, or open http://127.0.0.1:8420/elements.html after starting the local server, for the separate air/water/fire/vacuum/electricity sandbox. It starts paused; choose a scenario or brush, then Step or Run. The reactor scenario includes finite fuel, waste heat, radiators and overheat recovery.
The lab has its own state and does not change the colony save. Its cell simulation is separate from the colony's room simulation. Lab rules and controls explain the differences.
From the project directory:
node --test testsThe suite uses Node's built-in test runner. No npm install is required. If npm is already available, npm start and npm test provide project aliases; use the explicit Python launcher above on Windows. Windows/macOS instructions are source-derived, not claims of completed platform test runs.
The local server has a separate standard-library regression suite:
python3 -m unittest discover -s tests -p 'test_*.py'On Windows, replace python3 in that command with py -3.
Simulation modules live in src/; the interface and Canvas renderer are separate from simulation state. Tests and save fixtures are in tests/. Keep the compressed save fixtures when copying the project.
The verification record describes historical checks and their limits. Release readiness tracks the current publication checks; a passing test suite does not establish that the whole game is finished or every browser is supported.
| Topic | Start here |
|---|---|
| Current scope and roadmap | Roadmap, changelog, implementation status, conversion inventory |
| Supplies and construction | Construction logistics, production, storage |
| Crew and care | Crew life, medicine, rescue and nursing |
| Environment and utilities | Atmosphere, gas networks, plumbing, power, fire |
| Travel | Departure preparation, expedition logistics, orbital loop, cycling airlocks |
| Developer interface | Simulation actions and recording, elements lab |
See CONTRIBUTING.md for development conventions and pull requests, the Code of Conduct for community expectations, and SECURITY.md for vulnerability reporting.
SPACEFORTRESS is licensed under the MIT License, copyright 2026 Jared Castorena. Code, code-native artwork and project data are covered by that license. No third-party game assets are bundled.
