// the find
Warzone2100/warzone2100
Command the forces of The Project in a battle to rebuild the world after mankind has been nearly destroyed by nuclear missiles. A 100% free and open source real-time strategy game for Windows, macOS, Linux, BSD+
Warzone 2100 is the 1999 Pumpkin Studios RTS, open-sourced in 2004 and community-maintained ever since. It's a full, playable game — not a demo or engine — with a story campaign, multiplayer up to 10 players, and AI scripted in JavaScript. The target audience is developers interested in game engine architecture or contributors who actually want to work on a real C++ game codebase.
- Multi-backend renderer (OpenGL, OpenGL ES, Vulkan) maintained in a single codebase, plus an Emscripten/WebAssembly target — the CI matrix covers Windows, macOS, Ubuntu, Fedora, Alpine, Arch, FreeBSD, and WebAssembly, all green
- JavaScript AI scripting via a custom QuickJS fork (quickjs-wz) means game logic, maps, and campaigns are moddable without recompiling — a sane choice that keeps the core engine decoupled from game rules
- libsodium for networking crypto and GameNetworkingSockets for transport are solid, modern choices bolted onto what could easily have stayed as raw sockets from 1999
- vcpkg with custom overlay-ports means the build is actually reproducible across platforms; the overlay patches for angle, basisu, and protobuf show the team patches upstream rather than forking and diverging
- The Linux dependency list is brutal — 15+ libraries including SDL3 ≥ 3.2.12, HarfBuzz, FriBidi, libsodium, libzip, and optionally the full Vulkan SDK. The helper script covers the named distros but you're on your own on anything else, and vcpkg doesn't handle all of them
- Videos are a separate manual download with version-specific paths (`warzone2100-<version>/sequences.wz`) and the instructions have placeholder version strings — new users routinely miss this and wonder why cutscenes are silent black screens
- The C++ core is 25 years old with 20 years of community patches on top; there's no coding standards document or modernization roadmap visible, so contributing means navigating legacy patterns, global state, and pre-C++11 idioms mixed with modern code
- The submodule requirement is a real contributor friction point — the README warns against GitHub's Download ZIP in bold, which means every person who skips the README (most of them) gets a broken build with cryptic errors