Improbable Icon

Spatial World Resolution


#1

Im curious how spatial staff would describe the resolution of the spatialos tapestry. I’m not REALLY asking about how many square or cubic meters a game space could be, I’m curious how small entities could be that can be accurately tracked without running into floating point errors.

If i shrink a player down to the size of an ant or smaller, with what kind of resolution can their position be tracked? can i move them by 0.001 meters and still have very accurate updates and interactions on that level of granularity. I know some of this may depend on Unity’s tooling as well, but maybe some light can be shed on the topic.

thanks,

AnTennA


Huge scales and floats
#3

Though I am not Spatial Staff I think I can help with this since I have been working on a Galactically scaled game and have been heavily hit by position precision and how far you can go.

In the end, it all depends on how you perform movement. If you rely on Unity / UE’s Physics then you are bound by floats and thus a 7-decimal precision (look up PhysX if you want to know why-ish). This means that as long as the position of a coordinate stays within 7 decimals that you can precisely change the position.

For example:

0.001 is easy, just 4 decimals. However: 100000.001 is not because this is 9 decimals. This number becomes 100000 because the .001 just falls off.

SpatialOS’ Coordinates are in Doubles, which have a far higher precision. So if you do not rely on Unity for Physics then you can go much higher. But trying to run your game in Unity needs a translation from Double to Float, so you need to do some trickery (such as floating origins and scaling) to preserve your precision.

As far as I know, the fabric (SpatialOS’ internals) does not do anything other than store the position as a series of coordinates and no precision should be lost. Perhaps @dvanamst can confirm this?


#5

Passing by only now. Sorry for the slow response. :sleeping:

The SpatialOS runtime does indeed store the coordinates as the doubles that you are manipulating yourself (not the PhysX floats) without any loss of precision.

Hope this helps.


#6

@draconigra – thanks! I wouldnt really need to rely on anything from PhysX as there are no physics. I may, at some later point, want to have physics play a part in the space, but only for a for a very tiny subset of physics based objects.

thanks, @dvanamst