-
Notifications
You must be signed in to change notification settings - Fork 0
User Guide
Updated for v1.1.79. The launcher caches unchanged data-scan results and asks which verified version to launch when several versions are present.
- OS: Linux (x86_64), macOS 14+ (Apple Silicon), Windows 10+, Android 8+, iOS 15+
- Dependencies: SDL3, zlib (bundled in release builds)
- Game data: original Captive and/or Liberation media files (not included)
Download from GitHub Releases:
| Platform | Package |
|---|---|
| Linux (Debian/Ubuntu) | opencaptive_X.Y.Z_amd64.deb |
| Linux (Fedora/RHEL) | opencaptive-X.Y.Z.x86_64.rpm |
| Linux (universal) | opencaptive-x86_64.AppImage |
| macOS (Apple Silicon) | OpenCaptive-macos-arm64.dmg |
| Windows | OpenCaptive-X.Y.Z-setup-x64.exe |
| Android | opencaptive-arm64.apk |
| iOS | opencaptive-arm64.ipa |
Requires CMake 3.20+, a C17 compiler (clang or MSVC), SDL3, zlib and Ninja.
cmake -S . -B build -DCMAKE_C_COMPILER=cc -G Ninja
ninja -C buildRelease build:
cmake -S . -B build -DCMAKE_C_COMPILER=cc -G Ninja -DCMAKE_BUILD_TYPE=Release
ninja -C buildRun tests:
ctest --test-dir build -j4 --output-on-failureopencaptive --data /path/to/your/media
opencaptive --data /path/to/your/media --game captive
opencaptive --data /path/to/your/media --game liberation
opencaptive --data /path/to/your/media --lang sv-
Linux / macOS:
~/.opencaptive -
Windows:
installdir\data(relative to the installation directory) -
Android:
/sdcard/OpenCaptive -
iOS:
Documents/OpenCaptive
| Flag | Description |
|---|---|
--data <path> |
Path to game data directory |
--game <name> |
Select game: captive or liberation
|
--lang <code> |
Language code (see Internationalization below) |
--verify-data <scope> |
Verify data integrity: captive, liberation, or all
|
| Flag | Description |
|---|---|
--fullscreen |
Start in fullscreen mode |
--scale <N> |
Window scale factor (1-8, default: 3) |
--scanlines |
Enable scanline effect |
--crt |
Enable CRT curvature effect |
--bilinear |
Enable bilinear texture filtering |
--integer-scaling |
Force integer scaling (default: on) |
--no-integer-scaling |
Allow non-integer scaling |
--vsync |
Enable vertical sync (default: on) |
--no-vsync |
Disable vertical sync |
--fps <N> |
FPS limit: 0 (unlimited), 30, 60, 120 (default: 60) |
--brightness <N> |
Brightness level 0-100 (default: 50) |
--contrast <N> |
Contrast level 0-100 (default: 50) |
--renderer <mode> |
Render mode: original or enhanced
|
--platform <name> |
Platform variant: dos, amiga, or atarist
|
| Flag | Description |
|---|---|
--help, -h
|
Show all available options |
--version, -v
|
Show version and author |
The start menu uses an 8-item card layout:
- Captive card — click or press Enter to start a new Captive game
- Liberation card — click or press Enter to start a new Liberation game
- Each card displays a checkmark (green) if game data passes SHA-256 verification, or a cross (red) if data is missing or fails verification
Appears only when save files exist (opencaptive.sav or liberation.sav). Resumes from the most recent save.
- Settings — opens the 24-item settings panel
- About — version, credits, and license information
- Controls — input reference
- Quit — exit the application
- D — opens the Data Scanner (scans the data path, reports ZIP count, per-game SHA-256 verification status)
- F1 — opens the Controls reference overlay
The settings panel contains 24 configurable items with vertical scrolling:
| Setting | Values |
|---|---|
| Renderer | Auto / GPU / Software |
| Window Size | Preset dimensions |
| Scale | 1x through 5x |
| Fullscreen | On / Off |
| Integer Scale | On / Off |
| VSync | On / Off |
| FPS Limit | Unlimited / 30 / 60 / 120 |
| Filtering | Nearest / Bilinear |
| Scanlines | On / Off |
| CRT Curve | On / Off |
| Brightness | 0-100% |
| Contrast | 0-100% |
| Gamma | 0-100% |
| Volume | 0-100% |
| Music | On / Off |
| SFX | On / Off |
| Reverb | On / Off |
| Sample Rate | 22050 / 44100 / 48000 |
| Game Speed | 50-200% |
| Mouse Sensitivity | 1-10 |
| Data Path | Editable text field |
| Language | 19 languages (see below) |
| Enhanced | On / Off |
| Back | Return to start menu |
| Key | Action |
|---|---|
| W / Up | Move forward |
| S / Down | Move backward |
| A / Left | Turn left |
| D / Right | Turn right |
| Key | Action |
|---|---|
| Space | Fire weapon |
| Enter | Use item / interact |
| Key | Action |
|---|---|
| Tab | Cycle droids |
| I | Inventory |
| M | Minimap |
| Shift+M | City map (Liberation only) |
| Key | Action |
|---|---|
| F5 | Save game |
| F9 | Load game |
| F6 | Cycle save slots |
| F7 | Debug HUD |
| F8 | Minimap toggle |
| Key | Action |
|---|---|
| H | Help screen |
| ESC | Pause menu |
| F1 | Controls reference |
| Key | Action |
|---|---|
| Numpad + | Increase game speed (if enabled) |
| Numpad - | Decrease game speed (if enabled) |
OpenCaptive supports 19 languages, selectable via --lang <code> or in the Settings menu:
| Code | Language |
|---|---|
| en | English |
| sv | Swedish |
| cs | Czech |
| da | Danish |
| de | German |
| es | Spanish |
| fi | Finnish |
| fr | French |
| hu | Hungarian |
| it | Italian |
| ja | Japanese |
| ko | Korean |
| nl | Dutch |
| no | Norwegian |
| pl | Polish |
| pt | Portuguese |
| ro | Romanian |
| ru | Russian |
| zh | Chinese |
OpenCaptive identifies all game files by SHA-256 content hash, never by filename. This means files can have any name and be placed in any directory structure.
Place ZIP archives containing your original game media in the data directory. OpenCaptive transparently scans:
- ZIP archives (including nested ZIPs)
- ADF disk images
- ISO tracks (BIN/CUE)
| Game | Verified files needed |
|---|---|
| Captive | 12 |
| Liberation | 7 |
Press D in the start menu to open the Data Scanner. It scans the configured data path and reports:
- Number of ZIP archives found
- Per-game SHA-256 verification status for each required file
opencaptive --data /path/to/media --verify-data all
opencaptive --data /path/to/media --verify-data captive
opencaptive --data /path/to/media --verify-data liberationHeadless smoke test (Unix):
SDL_VIDEODRIVER=dummy SDL_AUDIODRIVER=dummy \
timeout 5 ./build/opencaptive --data /path/to/media --game captiveThe expected result is a timeout exit after the game loop starts, with log lines for texture loading and verified startup.