Hi Unity Community,
I’m working on an open source lockstep networking layer (atop socket.io) built for large scale RTS style games requiring thousands of units moving dynamically in real time. We already have all the server and lockstep code working perfectly fine, the only issue is the non-deterministic physics engine that causes floating point calculation entropy to degrade the game state too quickly in order to maintain synchronicity across multiple clients.
I’m writing today in hopes of finding others working on this issue whether that be by virtualizing floating point calculations deterministically like Java with a special compiler flag (slower at crunching, but faster at syncing), or by running an integer based physics engine instead to maintain determinism. I’ve also read of one person attempting a type of “floating point correction” with no luck.
Until we can achieve deterministic simulation we are limited to roughly 100 networked game objects in real time - consider that the original Starcraft could handle upwards of 1200 networked units in real time no problem (and that was over 15 years ago). Determinism is a powerful feature to add for game developers, and until it exists in Unity we can’t really make a great RTS with Unity, without altering our design radically to the point where it wouldn’t be the same game.
If anyone at Unity can give any details towards determinism in the engine it would be greatly appreciated!
Thanks,
Adrian