- Home /
Dynamic World which saves user changes
Hey All,
I am new to Unity and would like to advice.
I am working on a new project and basically want some feedback. I am working on a very simple idea within Unity. But everything needs to be Dynamic. For example, I am working on the idea that everything is destructable similar to MineCraft which is in Java. Everything will be Block based and the terrain will be coompiled of pureley simple blocks with different colours.
What I need is some feedback on the way of saving these custom made terains which are built up from the characters playing in some form of file which is read by the server and saved. What I dont want is each time the server is reset all of their changes are lost and the game is reset.
Can anyone provide some feedback on the best way to do this within Unity, IE.. Database, Files etc?
Cheers,
Steve
Answer by Statement · Mar 11, 2011 at 12:18 PM
Well, a simple and reasonably efficient way is to store chunks of data into a separate file, like Minecraft does. IIRC minecraft uses Base64 encoded strings that represent chunk x/y/z and you can make the chunks any size you prefer. To save such blocks, you can just save them all in one big array of ints or bytes, depending on your needs. A perhaps slightly better compression can come if you perform some octree based representation, where each bucket can be compressed if the contents are all of the same value.
- Note however, that webplayers don't allow file access and you only got 1MB to use with playerprefs. In that case you might need to access a webservice/database.
Another thing that might come in handy for a project like this is Morton Coding, in case you're treating the blocks as having a location in an array and need to manipulate neighboring objects. This Curve is cache friendly and can cut down memory access times to about 33%. Whether or not it applies or has any effect on your particular project is up to you to find out. Anyhow, it was just a little off-topic chitchat. If you feel you don't appreciate it you won't be missing out on much if you wouldn't try it :)