VERY large game world ?

Hey, I’m just wondering what I’m going to do with my “little” game here.
I’m going for a zelda wind waker style of world. Like a BIG ocean and a lot of island in it.

So I’m just wondering If I could have all island in one scene and use the Umbra in Unity 3.0 to handle the rendering of stuff.

Or should I manually load island when I’m close to them ?

What would you guys do ? and whats running best ?

If I’m placing say 200 islands in the scene but only 2-3 are visible at one time, does the 197 other island take up memory if I’m using Umbra ?

Thanks :wink:

You could probably have one large world and load levels in and out asynchronously. For the nearby islands, you would probably just load the island itself and not things on the island. I’m near certain it can be done, but you need to load and unload objects judiciously.

Ok, So I couldn’t just make the whole world then setting up Umbra and make it do all the work ?
I have to do it manually ?

I’ll think I do something from both ideas I think :wink:

Umbra simply wont help with not loading objects and running scripts (not sure the right word)“physically” just visibly. The items still need to be loaded into memory, lets say you have giant ring on the 190th island that rotates. Even if you cannot see it, its still rotating and that script is still running. This is where you would need follow what JRavey said.

Thats what I was looking for ! Thanks.

I think you could test this on a very small scale. Just make a level which is within the visibility of the camera, set up a bunch of objects that are notionally your islands. Find a way to keep them in order, then move about the level and have the objects load and unload as needed. Don’t forget about Application.LoadLevelAdditiveAsync, it might be helpful. But there is no unload counterpart to it, so you still need find a suitable solution.

It’s certainly not an impossible task, but know that you could not run the entire thing in the editor with everything loaded all at one time.

OK, I think I know what to do :wink:

Because it’s a lot of “open” water between the island and also a lot of fog.
So I think I’m going to divide the ocean in 10by10 squares and load each when I’m inside their square or something.

wouldn’t setting the camera frustum to say 200 instead of say 2000 help any???

don’t know :wink: But I’m using my own skybox"sphere" so that might cut of :S

Also, for this style of world you want to make sure any objects with or without physics do not animate/simulate when not in view.

I’ve been making a forest generator that makes trees on my procedural terrain – along the term of 50,000 - 100,000 trees for a 4x4km terrain.
When they were done generating (camera cull at 200) my fps was about .9
I than CombinedMeshes - resulting in around 20,000 game objects. 30~ fps
Finally I realized I would have to disable them, even though they were not being rendered. When I did this my fps shot up to 900.

So even if game objects only have the bare components (no physics, basic rendering) it will still slow the game down.
If you are doing it in blocks of islands - than (excluding memory requirement) you could have large sections of terrain.
Each section of terrain would have several child-dummies. “Small Rocks” “Buildings” “Chests” “enemy Spawns” ectect.
In each of those child dummies they have the actual game objects you’ll use.

When the camera has moved X distance you do a check on all terrain blocks. If they are close enough than slowly enable the child-dummies 1 by one - otherwise it will slow the game down terribly.