** THIS BUILD IS AN UNOFFICIAL PROOF OF CONCEPT. IT CURRENTLY USES GPL3.0 LICENSING BUT AS A PERSONAL FORK DOES NOT REPRESENT THE OFFICIAL METAFORCE REPO**
Disclaimer: This fork of Metaforce is a proof of concept, as I am not a particularly strong programmer. Much of the code here is heavily based on existing projects (Randovania, randomprime, Dusklight and the Dusklight Randomizer), and a good amount of it was written with help of an AI agent. It isn't slop, but it's closer to a 'working prototype' than a 'final implementation'. For example, the mouse controls feel right, but the way they're wired into Borealis is probably the dumbest way it could have been done. What I can vouch for is the behaviour - nothing here is first pass guesswork. Everything has been repeatedly iterated on and checked against the vanilla game, backed by 23 years of knowing how Prime plays and how its engine works. I'm also genuinely proud of the room shuffle randomizer solution. If you find a bug, open an issue here or message me on Discord @tomlube.
Metaforce is a reverse-engineered reimplementation of the engine from Metroid Prime, which started development in June of 2015 by Cirrus and Antidote. It is a labor of love, built with deep respect for the incredible work of the original developers at Retro Studios in the late 90s and early 2000s.
We want to acknowledge the passing of two exceptionally talented developers, Mark Haigh-Hutchinson and Andy O'Neil, whose work helped shape this game. We'd also like to thank former Retro developers like Zoid Kirsch and Jack Matthews for their seemingly endless talent, friendliness, and encouragement.
Metaforce was recently rewritten on top of the Metroid Prime matching decompilation. Builds are currently unavailable as the project stabilizes.
- Windows 10+ (64-bit, D3D12 / Vulkan / D3D11)
- macOS 10.15+ (Metal)
- Linux (Vulkan)
- Android (Vulkan & OpenGL ES)
- iOS (Metal)
Windows:
- Open
metaforce.exe
macOS:
- Open
Metaforce.app
Linux:
- Ensure AppImage is marked as executable:
chmod +x Metaforce-*.AppImage - Open
Metaforce-*.AppImage
-l: Enable console logging--warp [worldid] [areaid]: Warp to a specific world/area. Example:--warp 2,2--load-save [1, 2, 3]: Loads numbered save in Memory Card A--lock-aspect: Lock Metaforce to original game 4:3 aspect ratio.
- CMake 3.25+
- Windows: Install
CMake Toolsin Visual Studio - macOS:
brew install cmake
- Windows: Install
- Python 3+
- Windows: Microsoft Store
- Verify it's added to
%PATH%by typingpythonincmd.
- Verify it's added to
- macOS:
brew install python@3
- Windows: Microsoft Store
- [Windows] Visual Studio 2019 Community
- Select
C++ Developmentand verify the following packages are included:Windows 10 SDKCMake ToolsC++ Clang CompilerC++ Clang-cl
- Select
- [macOS] Xcode 11.5+
- [Linux] Actively tested on Ubuntu 20.04, Arch Linux & derivatives.
- Ubuntu 20.04+ packages
build-essential curl git ninja-build clang lld zlib1g-dev libcurl4-openssl-dev \ libglu1-mesa-dev libdbus-1-dev libvulkan-dev libxi-dev libxrandr-dev libasound2-dev libpulse-dev \ libudev-dev libpng-dev libncurses5-dev cmake libx11-xcb-dev python3 python-is-python3 \ libclang-dev libfreetype-dev libxinerama-dev libxcursor-dev python3-markupsafe libgtk-3-dev - Arch Linux packages
base-devel cmake ninja llvm vulkan-headers python python-markupsafe clang lld alsa-lib libpulse libxrandr freetype2 - Fedora packages
cmake vulkan-headers ninja-build clang-devel llvm-devel libpng-devel- It's also important that you install the developer tools and libraries
sudo dnf groupinstall "Development Tools" "Development Libraries"
- It's also important that you install the developer tools and libraries
- Ubuntu 20.04+ packages
git clone --recursive https://github.com/tomlube/metaforce.git
cd metaforcecd metaforce
git pull
git submodule update --init --recursiveFor Windows, it's recommended to use CLion or Visual Studio. See below.
You can either build Metaforce with the built in Build workflows in VSCode, CLion, etc; or use CLI.
cmake --preset relwithdebinfo
Cmake --build --preset relwithdebinfo(main development / debugging IDE)
Open the repository's CMakeLists.txt.
Optionally configure CMake options via File > Settings > Build, Execution, Deployment > CMake.
Open the repository's CMakeLists.txt via File > Open File or Project.
Configure the desired CMake targets to build in the Projects area of the IDE.
Verify all required VS packages are installed from the above Build Prerequisites section.
Open the metaforce directory in Visual Studio (imports CMake configuration).
MSVC and clang-cl configurations should import automatically.
cmake -G Xcode ../metaforceThen open metaforce.xcodeproj
This fork builds on the work of:
- Metaforce and the Metroid Prime decompilation
- Randovania: Metroid Prime logic database, pickup database and Starter Preset used by the randomizer (GPL-3.0)
- randomprime: pickup location tables, pickup models, door tables and door textures (MIT)
- Dusklight (CC0 1.0)
- Dusklight Randomizer (CC0 1.0)
This fork is distributed under the GNU General Public License v3.0. Original code written for this fork is also dedicated to the public domain under CC0 1.0. See THIRD_PARTY_NOTICES.md for which files that covers and for the licenses of third-party code.
