What is OpenClaw (Captain Claw reimplementation)

OpenClaw (pjasicek/OpenClaw on GitHub) is a from-scratch C++/SDL2 re-creation of the engine of Monolith’s 1997 platformer Captain Claw, which loads the player’s own retail data file rather than shipping any assets.

Why it matters

The original game is a closed-source Win32 binary that will not run cleanly on a 64-bit OS, modern GPU, or anything non-Windows. OpenClaw is the canonical study case for “preserve a dead game by re-creating its code” — a pattern shared with OpenRA, OpenMW, devilutionX, and OpenTTD. It demonstrates how far you can get by reverse-engineering only the data formats while writing 100% new logic.

How it works

OpenClaw is a clean-room engine, not a decompilation. It pairs a new C++ codebase with the original asset blob:

  • Code (new, MIT-licensed) — game loop, rendering, audio, actor logic, physics — all hand-written. See reading-an-existing-c-game-codebase.
  • Assets (yours, never redistributed) — supplied by the user’s legally-owned CLAW.REZ archive.

Library stack (real dependencies of the repo):

ConcernLibrary
Window / input / timingSDL2
2D textures, sound mixingSDL2 + SDL_mixer
Rigid-body physicsBox2D
XML actor/level definitionsTinyXML2
BuildCMake

Architecture is actor + component: each entity (Claw, an enemy, a checkpoint) is an Actor assembled from components defined in XML, decoded out of the REZ archive at load time.

Example

A typical boot sequence: main() init SDL2 window open CLAW.REZ read GAME.WWD (the level) instantiate actors from XML enter the fixed-timestep loop. No bytes of Monolith’s .exe are linked, copied, or disassembled into the build.

Pitfalls

  • Expecting a standalone download — you must own Captain Claw; OpenClaw without CLAW.REZ will not start.
  • Confusing it with a decompiler — it is a reimplementation; behaviour is observed and re-coded, not byte-for-byte ported.
  • Assuming pixel-perfect parity — physics run on Box2D, so movement is close, not identical to the 1997 fixed-point math.

See also