Here's another suggestion. I'm in the process of creating a huge world too and I'm mainly using models for my buildings and so on. To avoid the whole problematic collision with models (where players walk right through them) I've placed invisible blocks/cubes around, to get good collision. I've created a world with 4 labyrinths in it where the walls are models surrounded by these invisible blocks.

I had a problem for the ground though. I want to use fog, but when I created my ground from a block I always get the 'to big for shaded' error. Tried to use very small blocks to no good either. I can set the texture to flat, but then the whole texture dissapears becasue of the fog (I get one huge red plane --- red is the fog color used). Here's what I ended up doing. I creaed a huge block as my ground and made it invisble. On top I placed the texture I wanted as a ground as a sprite, duplicating as much as needed to cover the whole area. This works very well and no demand on the frame rate at all.

Perhaps buildings can be constructed this way to, by putting together sprites and placing invisible blocks around them...... this would give a great framerate.

At the moment I'm still using models, since the walls are a bit detailed in shape. At the moment my level is 16000 x 16000, it has far over 300 models in it (10 different models, duplicated lots of times), about 60 mountains (10 different hmp files), using fog, and I still get a framerate between 50-70. Except for at the biggest labyrinth, when looked at from one certain side, the framerate drops to 40, as soon as you go one step closer or further away the frameratr goes up again. Building time of the level is around 3 secs.