Unforeseen circumstances prevented me from returning to this topic for a while as I had promised, but here’s take two. I’m sure people won’t mind if I do not edit my previous post and instead make a new one.
1. Level Design.You say you are worried about the cost of such a huge scene in the editing process. A valid worry but ask yourself this; Why edit it all in the one scene? For each area that your world is divided up into make a separate blend file. Group the entire map together as a single blender group and link the group into your final file. Now arrange these objects in your final file to make your world and you can edit each section separately in their own file. The results will be automatically transfered to the final blend file.
A good point, but from the way you describe it, I still wonder if the method wouldn’t make have a few major setbacks. I will try to describe them here.
Imagine, for example, that we want a river to criss-cross through the landscape of a hypothetical game application. That landscape is divided into a number of “plots” of a shape and configuration that are of no importance right now. (Plots is the catch-all term I use here to denote one particular blend file that constitutes the final scene.)
Imagine that each of those plots corresponds to a separate blend file, the way you describe above. Obviously, we want to be able to sculpt this river in a scene that combines all of the individual plots (scenes), so that any changes to the landscape at the edge of one particular plot also propagate to the adjacent plot, so as to make a smooth, continuous landscape. The only problem here is that the scene that links all the individual plots together cannot directly be edited.
Instead, we’d have to edit the blend file of every plot individually and painstakingly try to make its edges line up with the rest. Otherwise, the landscape in the final file will look like it is “falling apart at the seams”. To use a metaphor, it would be like trying to draw a picture on a blank jigsaw puzzle, without being allowed to put the puzzle pieces together first.
In a related vein, you could probably see land textures end abruptly at the end of one plot. You’d constantly need to consult the “jigsaw puzzle” scene to make sure any buildings or objects you place in one plot do not bleed into something from an other plot etc.
2. LOD. There are many prototypes for LOD (Level of detail) in Blender. It can be done with python and even with logic bricks. You want to carefully map out how to run your LOD system for each section and for the map as a whole. Remember also to use the lowest LOD level as the object seen when editing the map. Since in the 3D viewport all the objects will be giving their impact you want to be using the versions with the lowest polycount to avoid editing impact.
Very good point, thanks.
3. Heavy use of occluders. Occluders are a relatively new feature in the BGE that, if active, will prevent anything hidden behind an occluder being rendered. For instance if you have a big building and a park behind it full of trees by making the building an occluder you prevent having to render all those trees and save yourself FPS. Just remember never use your detailed game model as the occluder. They should be as simple as possible. It can be handy to just use the same parts as your collision map for your occluders but remember to think in simple shapes. If your detailed building is in essence a tall cuboid tower then have an invisible cuboid with only 6 faces the same size in the same place. Have it act as your occluder.
I wasn’t aware of the existence of occluders, but I had certainly hoped something like it would exist. They could be a lifesaver.
4. Collision map. This is something to bare in mind for every game you make. You want a nice detailed environment but these details will cost you in terms of speed when it comes to collisions. You want the detailed environment to be a ghost and to have an invisible map with the most basic geometry possible while maintaining the approximate layout as the map that the objects actually collide with. This is a method that has been used in practically every game since the PS2 era began so it is an important factor in speeding up your games performance. The extra polys are well worth the save in collision calculation time.
This was already the method I had in mind. Like you say, I figure that the collision mesh can often double as an occluder, especially for geometrically simple, opaque objects.
6. Dynamic Loading and Freeing. This is a feature that is available in some builds of 2.49 but is officially coming in with 2.5. Dynamically loading and Freeing objects and even entire sections of scenes will remove them entirely. Rather than only removing the calculations pertaining to the objects rendering they are removed from calculation entirely greatly saving your frame-rate.
Joy. I will be reading into this. Thank you.
Magnum Opus: That proof of concept works remarkably well. Obviously the mechanics would have to be edited quite extensively to work on a larger scale, but it’s a start. Thanks.