Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

Does it make sense to try to offload a large nonlinear level into file-based chunks, and load those on demand? We've implemented level chunking to improve rendering performance, but still all level objects are persistent in RAM.

If yes, then how do we keep the illusion of a living/changing world? Since the level is not linear, but rather like a world in itself, we cannot just pretend that whatever one's gone through is gone forever.

Is it a better idea to make the levels complex enough, but also optimized enough to be always persistent in memory, but implement micro/macro jump points which allow one to jump to a totally distant point (i.e. a whole new level), thus forgetting about the world consistency, and the illusion of a changing world. Also, this would allow us to follow a slightly linear story in a seemingly non-linear world. It would be possible to just apply a new state to the existing state of a "distant" level, if we are to bring the player back to it.

share|improve this question
add comment

1 Answer 1

Creating chunks are really a good idea but you need to use it wisely. there are many big titles that use the same idea to give the illusion of very large world. for example you I can mention Spore or Oblivion.

First let's talk about spore since in it's galactic phase you can easily see how the things work:

there are many planets in the galaxy but not all of them are in memory in same time. whenever you get near one planet game automatically loads a texture for that planet from hard disk. Then if you get close enough you may enter planet and make some changes. while you are inside a planet almost all the data about outer space is deallocated. And you may make any change in that planet you like. then you can return to space view. this time game reloads data for other planets and saves the changes you made in that planet. for example if you created a mountain there, all mesh and texture changes are again saved in files. there are also some events which are saved in files. like when you put the device that help creatures evolve in planets. these events remain active until you get really far away from planet triggering them. but still they are saved and when you get close enough system will check if they need to be triggered based on game clock.

In oblivion thing are a little different, although the base idea is the same. when you walk in wild, the game is constantly loading and unloading areas. if you tried playing oblivion on PS3 this process produced some minor lags in transition area (or at least I heard they did). there are also some areas that completely stop Game and you see a loading screen like when you enter caves you houses. using this method they easily reduced complexity and memory usage in cities. just think of how many houses there is in a city and how much memory they would consume if they wanted to load them. also note that if they wanted to use the same loading and unloading system whenever you get near houses they needed almost all of hdd bandwidth, and it could damage hdd.

to conclude my answer I suggest you use same method in you game for wide areas. you also have to save any changes that player made in an area while unloading it. This method gives a very pleasant experience of a exploring a real world to players. But for areas that there are many objects and you think you may need most of storage bandwidth for data transmission just use a traditional method with a loading screen.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.