Room Builder

Each time I’m prototyping new game I’m using such system to create gameplay spaces faster than using static meshes or BSP. Was using this in first person, third person and isometric/topdown game prototypes. It can help graphics artist and level designers to decide which spaces will work with gameplay before even creating modular meshes.

Hope it will help someone too.

Create rooms and iterate them quickly.


Grid based room generation

It’s important to stick with grid when creating games. With room builder you are stuck with the grid. Grid can be changed for your type of game.

Empty spaces and platforms

You can add empty spaces for doors and holes. Platforms can be added as well.

Using instanced static mesh

Room builder is using instanced static meshes to build room.

Grid Material

Room builder is using world space grid material to better visualize dimensions. You can change materials for whole room, ground, ceiling, walls and platforms.

Room Builder Blueprint Documentation

Room Material

Change whole room material if not using UseSeparateMaterials.

Grid Mesh

Change grid mesh. If you want to use your mesh make sure:
– Pivot is the same as original mesh,
– Mesh dimensions are the same as GridSize,

Grid Size

How big should be grid. It should match with Grid Mesh dimensions.

Room Size

How big room should be.

Wall Scale

Change walls scale. Can be useful when using bigger grid size.

Create Ceiling

Should room builder create ceiling.

Hide Ceiling in Editor

Should room builder hide ceiling in editor. Useful when editing room which have ceiling.

Create walls

Should room builder create walls.

Empty Locations

Place for creating empty spots for doors, holes etc.

Move 3d widget to change location. Set how big empty location is – in grid size.


Place for adding platforms to room.

Move 3d widget to chage platform location. Set platform size – in grid size.

Collision Type

Change collision type for all instanced static meshes.

Automatic Text Update

By default text is generated to show you how much gameplay space room have. Can be turn off if you want to use custom text.

Automatic Text disabled to create custom text.

Use Separate Materials

If you want to use separate materials to walls, ground, ceiling and platforms.


You can change separate materials (if UseSeparateMaterials is set)

Text Render Color

Change text render color.

Draw Empty Locations Debug

This is helpful to visualize how big empty locations are.

How to add new room

Just move RoomBuilder/Blueprints/BP_RoomBuilder blueprint into your level like you move other Actor Blueprints.


How can I use custom grid mesh?

Yes you can use your own mesh with your own dimensions. Just make sure pivot is the same as original mesh used by room builder.

Can I create prefabs?

Yes you can.

  1. Put Room Builder into your level,
  2. Mess with it – create a room,
  3. Then when room is selected go to Edit Blueprint -> Create Child.

How this is better than BSP?

  • It’s harder to maintain grid when using BSP,
  • You can’t create prefabs from BSP,
  • Creating rooms in BPS is slower (for me, maybe some BSP experienced dev can create room in 1s) . Placing room builder creates room for you,
  • It’s faster to iterate room and making changes,
  • Room builder can be moved around with all platforms and empty spaces, no need to create groups,
  • BSP pivots aren’t always good for what you are doing,
  • It’s harder to click on BSP brush when you want to iterate,
  • Generally for me it’s faster to create rooms using room builder than BSP,

How this is better than using modular static meshes?

Basically the idea behind room builder is to use it before graphics artist will create modular assets. While you are prototyping your gameplay spaces you shouldn’t be dependent of meshes dimensions decided by graphics artist.

Another thing is it’s faster to build rooms using room builder than having modular meshes. You will be changing sizes, doors and holes a lot – and you don’t need to move X meshes to change room size from smaller to bigger.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.