~/organiccode.net

← work

Romjakten — a 1999 game, ported to Godot

wip

A from-scratch Godot 4 port of a Norwegian educational space-strategy game originally built in Macromedia Director 6. Playable in your browser, downloadable for Windows, Linux and Android.

Godot 4 GDScript Python Reverse engineering Director 6

Romjakten is the Norwegian localization of the Swedish educational game Rymdjakten (“The Space Hunt”), originally developed by Monsterland Produktion AB and published by Levende Bøker / Kunnskapsforlaget in 1999. You played a space program manager piecing together an alien probe by recovering its parts from across the solar system.

The game was built in Macromedia Director 6 for Windows 95/98 and Mac OS 7-9. It’s been unplayable on modern hardware for a long time — the original runs at 800×600 in 16-bit color, hits virtual-memory limits on contemporary Windows, and the Mac version targets PowerPC. So I’m porting it.

Web build runs entirely client-side via Godot's HTML5 export — no server-side processing. open full-screen ↗

Downloads

Choose your platform:

What’s in the port

  • 7 autoloads (Lingo compatibility, game data, sound, sprites, interface)
  • Building system — 7 building subclasses (rocket, vehicle, astronaut, space station, ship, probe, research)
  • 6 puzzle minigames — moon lander, satellite communication, asteroid steering, orbits, aerobraking, alien decoder
  • Full launch system — per-rocket animations, flight simulation, crew workflow
  • Observatory — project overview, narrator, easter eggs, milestone flow
  • Space map — three zoom levels, planet interactions, orbital buildings, in-flight probes
  • Win/lose conditions — interstellar ship launch (win), alien power depletion (lose)
  • 24 automated tests with Python snapshots and Godot headless mode

Romjakten gameplay in Godot

The reverse engineering side

Most of the work isn’t in the engine port — it’s in pulling assets out of Director 6’s binary formats. The repo includes custom Python tooling for:

  • Bitmap extraction — 3,716 PNGs, recovered with the right palette and per-sprite transparency. Director uses a custom 256-color palette embedded in CLUT chunks, which I extract separately.
  • STXT text parsing — 103 JSON files containing all in-game strings and game data, parsed from Director’s text member format.
  • Audio extraction — 1,984 WAV files indexed by their original member name.
  • Smacker video conversion — 5 cutscenes converted from .smk to .ogv.

Along the way I found a handful of Director 6 format quirks that aren’t documented in ScummVM’s Director engine — notably the D5+ CASt field order (castType + castInfoSize + castDataSize, INFO first, DATA second), opposite of D4. These findings are preserved in the project’s scummvm-patches.diff for a potential upstream contribution.

Status

Nearly complete — the game is fully playable end-to-end. Remaining work is polish: a few edge-case animations, audio cue timing, and platform-specific input handling on Android (the original was a strict mouse-driven UI).