Skip to main content

Crimsonland

A faithful reimplementation of Crimsonland 1.9.93 (2003, GOG "Crimsonland Classic") in Python and raylib. Survival, Rush, all five quest tiers, Tutorial, Typ-o-Shooter, local co-op and the secrets are here, and they play like the original down to its timings, random rolls and rounding.

The original game assets are distributed with permission from the original developer, and the game downloads them on first launch.

Play

Install uv, then:

uvx crimsonland@latest

Or install it with uv tool install crimsonland and run crimson, as in the examples below.

Python 3.13 or newer runs on Windows, macOS and Linux. On Linux the game runs natively on Wayland, but still needs libX11 installed.

Better than the original

The port plays like the 2003 game, and adds what a modern release needs:

  • Runs anywhere. Windows, macOS and Linux (Wayland included) instead of Direct3D 8 on Windows, at any resolution, with borderless fullscreen that keeps the aspect ratio.
  • Modern controllers. PlayStation, Xbox and Switch Pro controllers are recognized on connect and switch a player to twin-stick controls, with reload on the shoulder like the 2014 remake. Every menu, list and slider works from the controller, with the focus always visible, and each co-op player can use their own controller.
  • Original bugs fixed, and kept on request. 27 gameplay bugs are fixed by default, each traced to the decompiled code: Greater Regeneration did nothing, Bandage multiplied health instead of healing, some bonuses never dropped while you held certain weapons, and several co-op perks only worked for player 1. --preserve-bugs restores every one of them, exactly as the original behaves. The original's text stays as written, typos like "Fire Caugh" and "Plague Sphreader Gun" included.
  • Replays. Every run is recorded and can be played back, verified tick by tick, or rendered to 60 fps video.
  • Sharper art. Textures come from the original uncompressed source art wherever it matches what shipped.

Controls

Player 1 starts on the original's mouse and keyboard controls: WASD to move, the mouse to aim and fire. Everything is rebindable in Options → Controls.

Connect a PlayStation, Xbox or Switch Pro controller, then press any button on it to switch that player to twin-stick controls:

Control Action
Left stick move
Right stick aim
R2 / RT fire
L1 / LB reload
Triangle / Y pick a perk
Start pause
D-pad, Cross / A, Circle / B menus

In local co-op, player 2 uses the second controller, and so on. Menus work with the keyboard too: Tab and Shift+Tab move, Enter picks, Escape goes back.

Key Action
F1 pause and show the key help
F12 save a screenshot
Alt+Enter toggle fullscreen
Alt+Q quit
` (backtick) console

Options

crimson --width 1280 --height 960   # game resolution (1024x768 is native)
crimson --fullscreen                # or --windowed; both are saved
crimson --seed 1234                 # a deterministic run
crimson --preserve-bugs             # keep the original's known bugs

Saves, settings, high scores and replays go to your per-user data directory. Set CRIMSON_RUNTIME_DIR or pass --base-dir to keep them elsewhere.

Replays

Every run is recorded. A replay can be played back, rendered to video, or re-simulated to verify its score:

crimson replay list
crimson replay play <file>
crimson replay verify <file>
crimson replay render <file>    # needs ffmpeg

More

  • Changelog
  • How it was made: reverse engineering, asset formats and AI-assisted decompilation
  • Docs: game mechanics, perks, weapons and file formats
  • Source: the port, plus a matching decompilation of the original
  • Telegram group: chat, bug reports and runs

This is an independent preservation and research project. The original Crimsonland Classic assets are distributed with permission from the original developer; the game code and the reimplementation are independent.

Metadata

Release files for crimsonland 0.14.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for crimsonland 0.14.2
File Size Uploaded
crimsonland-0.14.2.tar.gz 518.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for crimsonland 0.14.2
File Interpreter ABI Platform
crimsonland-0.14.2-py3-none-any.whl Python 3 none any Details

Total release size: 1.2 MB

Release files / crimsonland-0.14.2.tar.gz

Download URL crimsonland-0.14.2.tar.gz
Size 518.1 kB
Tags Source
SHA-256 checksum
How to use checksums
e55a6392a644b91983f8c804c7f8aa410c8884d582f1faf28cf44df6f223a757
BLAKE2b-256 checksum
How to use checksums
d24e5891955e2a9146138a58832b7315e797bf143ee2c2aa5e4dcadee9e39733
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release files / crimsonland-0.14.2-py3-none-any.whl

Download URL crimsonland-0.14.2-py3-none-any.whl
Size 641.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8b603a6516b1adc79b3f9b0d68a4b33258bef3952ce96381b5dd4b340ab5ff3a
BLAKE2b-256 checksum
How to use checksums
8b46e9f945e195794f5dd19d552a7d3a9a3150928362fe513fe682864d4d6d8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release history Release notifications | RSS feed

0.15.1

2 release files

0.15.0

2 release files

0.14.6

2 release files

0.14.5

2 release files

0.14.4

2 release files

0.14.3

2 release files

This release

0.14.2 This release

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page