- The netcode relies on full simulation determinism - this includes Box2D physics. I'm using standard floating-point calculations and rely on IEEE754 compliance. I also use STREFLOP for portable math function implementations. This is commonly done for RTS games with a lot of synchronized units, however this technique is rarely if ever seen in games with complex physics, esp. shooters.
- The atlas packer I wrote for the game was reused in Assassin's Creed, Skydio and received 2 scientific references: https://github.com/TeamHypersomnia/rectpack2D
- You can play ranked matches in the browser after signing in with Discord. Your MMR is based on the OpenSkill library.
- Browser clients and native clients (Windows, Linux, MacOS) can play on the same servers thanks to libdatachannel and datachannel-wasm. Host a server from your browser and connect from the Steam version, or vice versa.
- I use LLVM to build it for all platforms: Windows, Linux, MacOS. I use Emscripten to compile it to WebAssembly.
- There were significant challenges in making Box2D suitable for this, e.g. it comes without operator= so I had to implement complete cloning of the physical world for when I have to roll back the predicted world to reconcile it with the server state. Note it's not enough to just recreate the b2World from velocities and positions - you have to clone all contacts, generated trees, and all cached state so that the order of subsequent operations stays identical.
Read more about the interesting tech aspects of the game here: https://github.com/TeamHypersomnia/Hypersomnia#tech-highligh...