Open source October 2026
Open Dark Colony

Open Dark Colony

A playable remake of Dark Colony (SSI, 1997) for the browser, written in TypeScript. It runs on the files of your own copy of the game.

A playable remake of Dark Colony (SSI / Alternative Reality Technologies, 1997) that runs in the browser. Play it here with your own copy of the game: it asks for the game folder, or a ZIP of it, reads the files locally and keeps them in the browser for the next visit, without uploading anything. The code is on GitHub under the MIT licence.

Open Dark Colony

What you can play

Skirmish on any of the 55 multiplayer maps, as the humans or as the Taar, against the AI. Exploiters and Brozaars deploy on the Petra-7 vents and turn into mining towers, cities drop from orbit as pods onto their pentagonal platform, and the day and night cycle changes how far your units can see.

Both campaigns are there too, 15 missions each, driven by the original mission scripts. Reinforcements arrive by dropship, briefings and objectives show up on the HUD, some tiles fire events when a unit steps on them, and each mission ends with its own victory or defeat text. The original encyclopedia also works, with its rotating 3D renders and the narration.

Reading the original files

Dark Colony keeps everything in its own formats: sprites, composed animations, tilesets, maps, scenarios, stat tables, the HUD layout and a small scripting language for missions. To read them I decompiled DC.EXE with REA, an MCP server for reverse engineering, running Ghidra headless underneath. The binary is 32-bit Watcom C with 1,269 functions, and its assertions still carry the source file names (animate.c, mapit.c, trigger.c), which led straight to the loaders.

Every guess was checked by rendering it. Sprite placement is a good example: the first version used each frame's offset on both axes, which worked for soldiers and broke on vents and explosions. Following the draw list into the renderer showed that only the horizontal offset is used and that every sprite stands on its bottom edge. With that rule the five buildings of a city land exactly on their platform.

The mission language got the same treatment. The original compiles each condition to Polish notation and evaluates it every eight frames, and its && and || are 16-bit bitwise operators, so the interpreter here does the same to keep the campaign scripts behaving as they did.

The full specification is in docs/FORMATS.md and the process in docs/REVERSE-ENGINEERING.md.

How it is built

  • TypeScript and Canvas 2D at the original 640x480, with no game engine
  • A simulation running at 15 ticks per second, like the original
  • Team colours by remapping the same palette ramp the original uses
  • Cast shadows with the squash and shear values taken from the original blitter
  • A* pathfinding and fog of war with separate day and night vision
  • An AI of its own that mines, builds through the tech tree, attacks in waves and defends its city
  • Sound driven by the game's own tables, positioned in stereo
  • Tests that parse every file of the game, load every scenario and play an AI against AI skirmish to the end

Open Dark Colony

Running it

The quickest way is the browser version. To run it on your machine instead, you need Node 20 and an installation of Dark Colony.

git clone https://github.com/edulazaro/open-dark-colony
cd open-dark-colony
npm install
DC_DATA=/path/to/DCOLONY npm run dev

Then open http://localhost:5173. On Windows PowerShell, set the folder with $env:DC_DATA = "D:\Games\DCOLONY" before npm run dev.

I could not find a digital re-release of the game, so in practice you need the original CD.

Open Dark Colony

What is missing

The special powers of the artifacts, network multiplayer, the AVI cutscenes and the CD music. The AI is my own rather than the original one, and damage and build times were tuned by hand because they are not in the data files.

Legal

The repository holds the engine, the format documentation and the reverse engineering tooling. There are no game assets, no game data and none of Ghidra's decompiled output in it: everything the game shows is read at run time from the installation on your machine. Dark Colony and its assets belong to their respective owners.

built and maintained by Edu Lazaro · MIT license