Awesome
OpenClaw - Captain Claw (1997) reimplementation
- This project is a multiplatform C++ reimplementation of original Captain Claw (1997) platformer game
- Whole codebase was written from scratch
- Game uses assets from original game archive (CLAW.REZ)
Level 1 youtube playthrough:
Build status
Windows:
Linux (debian), macOS, Windows, Android, Emscripten:
Static analysis / Code coverage:
Tech
- SDL2 Libraries (SDL2, SDL_Image, SDL_TTF, SDL_Mixer, SDL2_Gfx) for graphics, input, font and audio
- Box2D Library for Physics
- Tinyxml library for data-driven approach
Building and running
For all platforms you will need original CLAW.REZ
game archive in Build_Release
directory from original game
Zip all content inside Build_Release/ASSETS
directory to ASSETS.ZIP
file.
Windows
- Project contains VS2017 solution with all libraries and include directories preset
- Project also contains CMake files if you want to use other IDEs.
mkdir build
cd build
cmake -G "Visual Studio 15 2017" ..
msbuild OpenClaw.sln
# Or
cmake -G "NMake Makefiles" ..
nmake
- Box2D is generated by CMake and it hardcodes the file paths. If you want to compile it on your own, you must run CMake on the CMakeLists.txt in the Box2D root directory
- Do not try to use different versions of SDL libraries than the ones which are already included in the Build_Release folder
Linux
Prerequisites for Ubuntu 16.04 (should be almost identical for Fedora/CentOS/*):
sudo apt install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-gfx-dev
You could also install libtinyxml-dev
but this library will be compiled and linked from ThirdParty/Tinyxml
directory.
Edit root CMakeLists.txt
file to change this behaviour.
Compilation:
git clone https://github.com/pjasicek/OpenClaw.git
- CLAW.REZ iz required from original game in the OpenClaw/Build_Release folder
- Use
cmake
to build fresh Makefile. There is no need specific arguments. make
(it's going to use all threads to compile, edit Makefile in Build_Release folder to whatever number of simultaneous threads you want it on your machine to run)
Remarks:
- For hearing background music play, you need to install timidity (or timidity++) and freepats. Some linux distributions come with it by default, some do not (fedora, archlinux)
- Does not work with SDL 2.0.6 - if you have the latest one from repository, you should be fine
Android
- Compilation / Deployment steps will be updated in near future, game itself is successfully running on Android
WebAssembly (Emscripten)
The project can be compiled as wasm code. This code is executed by modern web browsers without any additional runtime dependencies. Compiled once this code can work on any devices with different operation systems.
Compilation:
- Install Emscripten SDK from official website. I'm not sure that compilation will be successful on a Windows platform. If you use Windows then don't show off, enable Windows Subsystem for Linux (WSL), download Linux-like system (for example, Ubuntu) from Windows Store and install Emscripten SDK. It should be something like:
git clone https://github.com/emscripten-core/emsdk.git cd emsdk ./emsdk install latest ./emsdk activate latest source ./emsdk_env.sh # Try to use latest version. # If it doesn't work the project was successfully compiled on 1.39.11 version.
- Make sure you have python and cmake packages. Ubuntu:
sudo apt install python cmake
. - Make sure you have fresh
ASSETS.ZIP
andCLAW.REZ
files inBuild_Release
directory. - Compile:
mkdir build cd build emcmake cmake -DEmscripten=1 .. # -DExtern_Config=0 parameter includes config.xml file in game resources make
Run:
You will need web server to run compiled project. There are 2 options:
- You can upload
openclaw.html
,openclaw.js
,openclaw.wasm
andopenclaw.data
(andconfig.xml
if you build the project without-DExtern_Config=0
parameter) files fromBuild_Release
directory to any web server. - Or run Python server:
cd Build_Release python -m SimpleHTTPServer 8080 # Go to http://localhost:8080/openclaw.html
Remarks:
There are some limitations:
- Some old web browsers does not support WebAssembly code. Hi Internet Explorer!
- Some web browsers does not support
.wav
file formats. Microsoft? Again? - All web browsers does not support
.xmi
(MIDI) file formats. This files should be converted to another compatible formats. All MIDI audio are disabled for now. - Some specific
SDL_Mixer
audio functions aren't implemented (you can find it byTODO: [EMSCRIPTEN]
search query) but the game is playable. - Death and teleport fade in effects are broken. Emscripten erases graphic buffer after each draw call. Do not use buffer from previous calls.
- There is a FireFox bug with a very long story which doesn't allow to prevent ALT default actions. ALT key presses will open window menu. Workarounds:
- Contribute to Mozilla and finally close this bug.
- Use fullscreen mode.
- Disable default ALT actions in FireFox
about:config
properties.
In-game images
- TODO - add screenshots
Claw Launcher
- Precompiled for Windows natively and for Linux use through Mono runtime
- Locates Claw binary and corresponding config.xml file
- Provides GUI to modify configuration (Video/Audio/Assets)
For Linux
Prerequisites for Ubuntu 16.04 (should be almost identical for Fedora/CentOS/*):
sudo apt install mono-runtime libmono-system4.0-cil libmono-system-windows-forms4.0-cil
Then run it like this:
~/OpenClaw/Build_Release$ mono ClawLauncher.exe
- TODO - add screenshots