Large world coordinates - double precision data

I’ve just seen the recent Netcode for Entities webinar and based on what I’ve seen, I can make a guess on what approach Unity might take, at least for multiplayer. Relevant thread is the latest DOTS development status update where it mentions that support for large worlds is coming (but never mentioned the techniques they will take).

My guess is that based on NFE, there is a clear separation between server and client worlds. It might not mean much but this is actually huge because it allows full double precision simulation on the server (or any arbitrary precision for ECS Physics) while maintaining lower float precision on client worlds. This means that network bandwidth will always be at float size, minimizing network transmission.

If Unity can do automatic origin shifting under the hood for the client world and make it as seamless as possible, then this system could in theory be even better than Unreal Engine’s full double precision across the whole game. Benefits being full precision simulation while maintaining minimum bandwidth for communications.

This approach isn’t something new either. For instance, a netcode library for Unity called Coherence already supports large world coordinates for multiplayer using the same exact approach of separation between the server and client worlds. So at least we know this technique works in production.

Of course, assuming Unity is ever gonna make a fully deterministic netcode system like Photon Quantum, then full double precision would still be needed for clients (bandwidth becomes a non-issue in this case). So it would still be nice if they at least give us that option in the future.

2 Likes