Tips on level design - Optimization, function and method?

Hello,

I’ve gotten to a point where I have pretty much implemented all the functionality I need for my game, so it is time to go into production mode. I first want to tackle level design and was hoping someone had some tips or pointers to good tutorials.

I have basic knowledge of designing levels already, in forms of how to make assets, build the structures etc. What I am clueless about is level streaming/optimization/world composition.

This is a third person singleplayer game and the characteristics of the levels are:

  • No open world

  • Series of tunnels,
    shafts and “rooms” of varying size,
    from simple square rooms of moderate
    size, to larger caverns semi-open
    areas.

  • View distance limited by design - aforementioned structure with bends etc obscure view. Some areas with larger view distance may be possible, but limited to

  • I do not expect any sky sphere
    to ever be visible.

  • I will use a mixture of landscapes and geometry to make levels if possible (larger, more open areas like caverns will have sculpted landscapes to make up their floor. Tunnles will have planes or boxes).

I’ve gone ahead and watched Mathew Wadstein as he always explains everything in a simple and organized manner, so I believe I have a reasonable understanding of the simple basics, but his videoes are almost 5 years old now.

Things I am wondering about are generally best way to get going? Should I use planes or boxes for the floor (heard using 2d planes can cause problems with collision etc)? Do I need world composition for this? What are the newer features I can use?

Any help would be greatly appreciated.

Also wondering how I should handle this with respects to AI. Doing some initial testing with level streaming and of course they fall through the world when I unload a level they are standing on. Also disappear if I unload the level they are placed in. I don’t really believe placing them in the persistent level would be a good idea.

I suppose I can mask these by level size anyway and follow distance from origin location. Just wondering if anyone has any good pointers for how to deal with this.