Well, this is the first post for a project I've been working on for a few months already.
So, let me rewind a bit....
A few months back I started toying with the idea of making a game with an actual spheroid planet as the core of the environment. Yay Unity and Blender!! A few weeks of toying around and I had a pretty neat little 5000m diameter spheroid planet with custom gravity and a player character(UMA v2) running around on it.
Well, that was way easier than I expected...
It was at this very point, the actual madness began to set in. Well, it's working, I guess I should make a game out of it... Okay. Hmm, online? Of course! Hmm, mmoYES! Oh, damn, I've really lost it now. Crafting, well, certainly. Mining and hunting?! Don't be silly, yes yes yes yes, all the yes.
Bigger? hmmm.... hmm... yes?
Let's try 10000m radius.. hmmm... Jittery character movements.. and jittery everything... hmm...
9000m radius? all good... hmmm...
And this is where I learned all about the floating point precision problems of 3d engines at great distances from 0,0,0.. Fun stuff. Only slightly maddening. But, in the end, also easily solved by rotating the entire freakin planet periodically so the player character and camera stay close to 0,0,0.
Let's pump this guy up to 30000meter radius and call that good for now.
I ran across a few other jitter problems along this winding path but those were solved through the careful use of the "FixedUpdate" vs "Update" method selection. Moving anything that involved my custom gravity or physics in general to a FixedUpdate method was the solution for most cases.
So, we got a character and a planet... I guess we need stuff to do.
And from here the rabbit hole only started lengthening, until there really was no beginning or end.
So, there's one of the nutshells... The inception!
Over the next few days I'm going to try to detail as much of the current guts of this beast as I can for anybody who's crazy enough to follow along, while trying to not distract myself from creating more of them of course.
Project Stats:
Unity Game Client Lines of Code: 24,032
Avatar Server Lines of Code: 2,480
Economy Server Lines of Code: 387
FYI - There are issues with Unity and very large numbers for positioning that leads to jitter problems, the floating point precision in unity suffers at large numbers as you've already discovered, when you talk about 30km radius objects you're going to hit these.
I read about this issue in passing so i'd have to find links again, but i do believe there are some assets on the assetstore that will help with this... the work around is something in the realm of 'rehoming' the camera to origin and moving the game world around it when you have the camera position exceed a set limit from origin. IIRC it was somewhere around the 10,000 mark but thats going by memory.