// the find
TeamHypersomnia/Hypersomnia
Multiplayer top-down shooter made from scratch in C++. Web version: https://play.hypersomnia.io Made in 🇵🇱
Hypersomnia is a fully playable, open-source multiplayer top-down shooter written from scratch in C++ without a game engine, with a browser client (Emscripten/WebAssembly) that shares servers with native Windows/Linux/macOS clients. It has been actively developed since 2013 and is on Steam. The target audience is C++ game developers who want a real-world reference for engine-level problems — networking, ECS, physics determinism — or just players who want a free Counter-Strike-like game.
The cross-platform deterministic simulation is genuinely impressive: getting IEEE-754 floats to agree across x86, ARM, and WebAssembly using a single clang toolchain and STREFLOP is a hard problem, and they solved it. The 'cache reinference' trick for new client joins — forcing existing clients to rebuild physics state from scratch so everyone starts from the same base — is a creative solution that avoids sending full physics state over the wire. The custom memory pool with O(1) alloc/free/deref and deterministic undo/redo allocation IDs (for the editor) is a well-documented piece of infrastructure that spun off into rectpack2D, which shipped in a AAA title. The single executable containing game, dedicated server, editor, and masterserver is a real operational win for community hosting.
Only two game modes (bomb defusal and gun game) after 13 years of development signals that content production, not engineering, is the bottleneck — the codebase is rich but the actual game is thin. The build system is CMake-heavy with a lot of hand-rolled scripts and optional Steam integration that makes first-time builds non-trivial; the README punts to BUILDING.md with no inline quick-start. The player base is small enough that finding a live game outside scheduled community events is hit-or-miss, which undermines the network tech showcase. Floats-must-agree-across-all-platforms is a fragile invariant — any future dependency that does its own math (a new physics library, a scripting runtime) could silently break determinism in ways that are painful to debug.