Hello, first of all i didn’t know what section to put this post so decided to put it here.
Basically I am doing this project with the idea of making an Open World space game, where roblox allows me, and while doing Quantum Jump, used to travel between planets and solar systems, I discovered a bug that makes my ship shake as I move away from point 0.
The planets are positioned relative to the point 0 thanks to coordinates that I give them, they are very large distances (1 AU = 100000 Studs)
I was wondering if this is a roblox related bug or fixable in some way, I’ll leave the videos down there.
In this video i basically teleport the ship in the targetted planet, as you can see when i am in the nearest planet (The green-yellow one) the camera looks fine without problems but as i get the ice planet every start shaking
This is what happen to the ship, it start shaking.
This is a floating point precision problem that is in just about every 3D environment that uses floats as coordinates. Essentially, floating points have about 6 significant figures of accuracy. This means that for low magnitudes, you can be more precise with location with decimal points, but at high magnitudes, in the millions or so, you use all your significant figures for distance, and don’t have enough for precise locations. This leads to rendering problems, as the renderer doesn’t know where exactly the edges of the parts are when you’re that far out.
I’m making a space game as well, and while I’m in the early stages of development, this is something I’m aware of and something I need to be mindful of in the future.
The most common solution (and only one I’m aware of) used is to move the world relative to the player back to the origin, so that they always have enough sig figs for decimals, but for multiplayer games, this can be a bit tricky. I recommend trying to take advantage of filtering enabled and use a local script to reorient the player.
Now it makes sense. But when you say “take advantage of filtering enabled and use a local script to reorient the player” i got a bit confuse, could you provide an example?
Well, the biggest problem with trying to reorient the world in a multiplayer game, is that I’m assuming that players will be on different planets, so if you move one planet near the origin, another player on another planet might be sent extremely far out. To get around this, use local scripts to move the world on the client, because the client’s workspace doesn’t replicate to the server. That way every player can be near the origin without interfering with others.
Be aware that I haven’t tried fixing this yet, and my suggestion could be completely wrong. It’s just the only solution I can think of at the moment.
There are lots of games out there that have massive play spaces, like Kerbal Space Program, Outer Wilds, or even procedurely generated games like Minecraft. There are solutions out there and I bet they’re just as applicable on Roblox Studio as well. If what I suggested doesn’t work, don’t be afraid to expand the your scope for looking for help.