Build from source
The recompiled game code is generated from your own copy of Blur, so there is no build without the game files. Nothing game-derived goes into git.
Requirements
Section titled “Requirements”Apple Silicon Mac, Xcode Command Line Tools, CMake, Ninja, Python 3, Go (server tests), Ghidra 12.1.4 and JDK 21. Set GHIDRA
and JAVA_HOME if they aren’t in the default locations (tools/recomp/ghidra/discover.sh). A disc or ISO of Blur for PC
(or an installed copy plus the disc for two runtime DLLs).
tools/recomp/build/from_game.sh modules /path/to/Blur.iso work/mods # extract + checksum the 5 game modulestools/recomp/build/from_game.sh pcode work/mods work/pcode # Ghidra analysis, ~8 mintools/recomp/build/from_game.sh gen work/pcode # -> work/recomp/m3/genpython3 tools/app/make_icon.py work/mods/Blur.exe work/app/Blur.icns # optional app iconcmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release [-DBLUR_ONLINE_KEY=<key>]ninja -C build app # -> build/Blur Native.appctest --test-dir buildThe pipeline stages are explained in The recomp pipeline. work/ and build/ are gitignored.
Dev and release builds
Section titled “Dev and release builds”BLUR_DEV defaults to ON: debug flags (Debug and test flags), tests and tools are included. Releases pass
-DBLUR_DEV=OFF. Without BLUR_ONLINE_KEY, online only works when the
key is set at run time.
tools/ci/build_mac.sh builds the release .dmg; see CI and releases.
Rebuilding after changes
Section titled “Rebuilding after changes”- Emitter or discovery change: re-run
from_game.sh gen(only changed shards are rewritten), thenninja. - Host or renderer change:
ninja -C buildis enough. - Several features at once: one
git worktreeeach, symlinkingwork/andtraces/from the main checkout. Regenerating recomp code from a worktree affects every checkout.