Level Design Philosophy for Space Ship Interior


I’m in the process of working out how best to take on this task. I’m building the interior of a fairly large space ship (perhaps a bit smaller than an aircraft carrier). My ship has discreet decks, and so I’m currently organizing the level using them as folders. My file structure is “Ship>Deck XX> Room/Area” with each deck in its own folder. My questions are as follows:

  1. Do you think I’d be better off making each deck a ‘level’ and using level streaming?
  2. Can I use my file structure to instruct the engine to hide whole decks at a time, or are folders just for the artist’s benefit?
  3. Would the engine be overtaxed if I made every segment of hallway into a blueprint instead of just a static mesh? I want to be able to place lights and things once instead of being forced to manually place such things down every hallway.
  4. Have any of you done anything similar, and what did you learn?

My thoughts are, if the player can only occupy one deck at any given moment, it should be easy enough to keep the other decks hidden. I plan to use elevators/turbolifts to teleport the player from deck to deck, which should allow me to tell the engine to prepare the next deck, but this is starting to sound a whole lot like level streaming. My preference would be to allow the player to go from point A to B across the whole ship without loading, so that it feels like one plausible space.

A bonus question if you have time:
Where does BSP fit in to modern level design in UE4? I’ve been told it should only be used for blocking out things, and should be replaced with a model. Is this true? Am I going to run into problems using BSP for some walls and things?


  1. This depends on how complex and how big each deck is. I don’t know how big they are but it might be an idea to have multiple decks in one streaming volume.
  2. UE4 does not render objects that are out of view automatically. As for actually getting rid of objects, O think a blueprint can handle that. I do not know if blueprints can reference folders.
  3. Pretty sure it doesn’t assuming that the objects are spawned only once.
  4. I have been working with maps using many instances. I can tell you that using material instances really helps you out. Also I did not manually place my instances in UE4. I set up my whole level in 3dsax and used TS_tools to get the trnaslation, rotation and scale converted to UE4. This was a major timesaver for me as it is much easier to instance objects in 3ds max.
    Bonus question: BSPs should be used as blockouts yes. But you can turn them into static meshes which I advice to do so if you plan to keep them. They will have no.lightmap UVs incase you are planning to use either static of stationary lights.

Thanks for the quick and helpful response Mootjuh.

I’ve been told that UE4 automatically hides obscured objects, but when I move about my level in wireframe it doesn’t seem to actually hide anything. I’m not sure if there is a step I’m missing or if I’ve disabled the system due to how my level is built.

About the blueprint hallways, I was just worried blueprints might be dealt with differently than static meshes, in ways that may harm my level’s performance. I figure it is rare for a level to be built up of many parts which are blueprints. For now they are static meshes, just in case.

Can I ask you a question about material instances? I’m just learning a lot of this stuff, so perhaps I’ve missed something, but when I create a material instance and apply it, the effect doesn’t seem to change. For example, I have a primary hull material with a 3vector that can be used to change its color as a instance, and while the thumbnail reflects the changes, it looks unchanged in the world.

Thanks for the solid answer on BSP. I’ve heard and seen conflicting ideas about them, and I wanted to be sure. After so many years of working with BSP (Source engine, Source Gold) it is bittersweet to say goodby to them.

Could you post a picture of your material instance aswell as your parent material?


I don’t see anything wrong. Did you make sure you applied the material instaace your mesh instead of the parent material?

Sounds like you’re already on the right track, you definitely have most of your info correct when it comes to env art with UE4.

Feel free to aggressively stream levels if you are having performance problems, each game/level/environment is different per project, so there’s no exact instructions as to how to split your level streaming volumes. Try to do what makes sense and then if performance is still bad, stream some more if you have to.

The nice thing about level streaming is you can edit them quite easily.