UE4 Editor and BSP lag problems


We are two guys trying to make a game in UE4. We are currently in the phase of trying the editor and making some maps. I watched some tutorials and saw the guy using Box Brushes to create walls and floors for a house so I thought that was the way to go to create your map. I have some experience making maps in Hammer and the process in the tutorial reminded me of Hammer which seemed nice.

Now to the problem. I’m currently sitting here, 250 box brushes later, and the editor is almost unusable. It takes about 1-2 seconds for a change in a BSP to take place and if I undo a BSP it might take several minutes or even crash. So i set out to find a fix and there does not seem to be one (please tell me im wrong). I read that you are not supposed to use BSP to sculpture your map. you should rather use it to just create like all the big walls floors and ceilings. just the minimum.

My question is: Lets say you have a large indoor envoirment made out of BSP and inside that you want a small hut. If you make the hut in BSP it will take like 50 meshes. How are you supposed to make that hut? are you supposed to model it in maya and place it like a static mesh or are you supposed to make it in BSP after all? We have no modelers right now, we are only programmers so we were hoping to make some playable, decent looking prototype maps without any mayor commitment like you could in the Hammer editor. As of right now I made that hut out of BSP’s and I also put some detail on other stuff and that brings my meshcount to 250 with a rather small and low detail map. I have maybe only finished 1/4 of the level and its still too much for the editor to handle. I’m obviously doing something wrong but I can’t figure out what.

Things to note: I’m new to mapmaking in UE4. I might have missed the most basic of knowledges and if I did, please tell me.
When the editor is lagging neither my RAM or my processor is at full capacity. They are at very low usage.
The map im trying to make is a multiplayer map and its not that big.

If anything i just wrote is unclear please ask and I will try my best to elaborate.

TL;DR - What is the proper way to make a map? Do we really need model makers just to make a multiplayer map full of tight corners, tunnels and walkways on multiple floors?

BSP brushes are just used to prototype your level. They should be replaced with meshes! (made in 3ds max, maya, blender,…)
To avoid lagging you could disable the “update bsp automatically”. Edit>EditorPreferences>Miscellaneous. But then you always have to click the “build button” to see the end result. :slight_smile:

Yeah, I already found out about the “update bsp automatically” but it does not fix the problem it just transforms it into another problem. Thanks anyway.

So what you are saying is that I basicly have to get someone to model everyhting for me even in such an early stage of development? 250 BSP’s seems kind of low even for a prototype?

thanks for your reply.

A solution could also be using meshes to block out the stuff.
I dont know how far you modify the brushes in terms of extrusion, etc. But using the default static meshes already will speed up your editor responses.
Im using actually Blueprints to block out my levels. Static meshes that display their dimensions on them… Even more convienient :slight_smile:

PS: When I started, I also was very fond of brushes…:
See post near the bottom… :rolleyes:

Im not sure how I feel about using the default static meshes to make a level. You can’t change the size on them. You can only scale them.
I can’t speak for using blueprints with the static meshes. I have no idea how that would work. I have not looked anything into blueprints. As of now our levels should not have any scripted events, maybe doors but thats it so we decided not to put any time into blueprints. Also, I very much dislike the idea of visual scripting. I just want to make a static map :slight_smile:

In case I can’t solve this issue I guess we would have to playtest in big gray empty halls.

What is the difference between scaling and changing the size?.. Scaling is changing the size :stuck_out_tongue:
The default cube is for example 100x100x100. So if I want a wall that is 500 wide, 40 thick and 300 high, I would take the cube and set the scales to X:5 Y:0.4 Z:3.

The BP logic is only added convinience amnd not that complicated.
Here is a little pointer:

  • Create a BP based on the cube brush
  • Add a vector variable called “Dimensions”.
    -Use a “Add local transform” in the construction script and link it to the cube…
    Its really a two-node script.

If you would use a cube with 1x1x1 dimensions you wouldnt even have to care about the local bound values and could use the dimensions value directly.


  • yes I know, there is a typo. Y is there twice, should be Z…:rolleyes:

(I use a variable to compensate for varying mesh native size and because its faster when the positions for the text render components have to be derived.)

So, everything ios better than brushes :slight_smile:

You need BPs for more than your level design. Your game mode, your character setup, they all inevitably touch the BP domain somwhere.
And when you get into making prefabs, BPs are essential.
The construction script is very powerfull, although painfully limited at one specific point (which is driving me crazy).

I’m not sure I agree to that. Scaling and seting a difrent size are two very difrent things. It’s like using choosing betwwen SetRelativePosition() and SetPosition(), might be a bad example but I think you get the point. They might give the same result at first glance and they might continue to give the same result for a while but at some point they are going to differ and that is when you are screwed. I need to understand the usage for theese and choose acordingly. As of now im not sure what the difrence between scale and set size is exactly but they do most certainly differ. Otherwise they would not have included two identical functions. The first thing that comes to mind that would difer is when you apply textures. If you scale, would they not also get scaled all the way?

I did not know this, I will have to look further into that but it will have to wait for now. I thought C++ and LUA would be enough.

Give me one example for that? :confused:

Setting the size is scaling with a unit-cube.
Like the “set number 5” is basically the number 1 scaled with the number 5, as in 5 = 1*5

The Size of an object is understood as the actual dimensions of the object.
The scale of an object is a multiplication factor. It bases on a unit. If an object is scaled “to 1”, it means that the object is exactly one of those scale units big.

The difference is this:
I have a mesh that is 200 units wide and want to make a 1000 units wall, i have to scale by 5.
If I have a mesh that is 400 units wide, I have to use a scale of 2,5 to achieve the same 1000 unit wall.

So the size is absolute, the scale depends on your chosen unit.
Thats why a cube of 1x1x1 would give you a scaling behavior that is identical with the size value.
If I want a 100 wide cube, I scale the 1 wide cube by 100.
Had I used a 10 wide cube I would have only had to scale it by 10. So my cube is 10 of these 10er cubes wide…

Your C++ will interact with BP components at some point. You cant get around exposing some aspects of your C++ code to BP and dealing with it there.
Even if it is just hooking up an execution wire or some data inputs…

When you scale, the UVs get stretched, true, but the same happens when you move the vertices in a 3d app without remapping the UVs.
Try to convert a brush to a (mesh) actor. You will see the same thing.

Thanks for all the elaborate answers by the way.

So that means I have to build my entire level static mesh actors that are all the same exact size? That means every wall floor and ceiling are going to have limited size options.

Lets say my static mesh actor is the standard cube. Then when I apply the texture the texture gets too small so I scale the cube up by 4 and that makes the texture look like it’s supposed to. So lets say the cube is now 400x400x400. That means if I want a wall that is 600 wide I can’t do that? Because if I make the cube 200 wide the texture does not tile with the rest of the wall. Unless there is some way to make the texture remain the correct size independant of how the cube is scaled?

I would also need to be able to apply difrent textures to difrent sides of the cubes but I cant find anything on that either. Is it possible to do?

I Have no idea if this is the right way to go for me. It seems like I have more questions than when i arrived here :slight_smile:
It feels like a monkey should be able to build a basic level in the editor just like you could in Hammer. I Just want to put alot of blocks with texture in the right places. Is it supposed to be this complicated?

No Problem :slight_smile: That is what the forum is for.

No. You can create actors of all shapes and sizes. And you need only import one of each.
Usually the workflow is this: Fiddle with a brush until its the right size. Then replace it with a mesh. If you then later decide to change it, you need to change the mesh and reimport it.

This is achieved with the UVs. If I have a wall that is 500 units wide and I create a texture that fits nicely on it, I can apply the same texture/material to a 1000 wide wall and it also fits in terms that it is tiled twice on the longer wall.
This is done by modifying the UV maps in the 3D application. In this case I would extend then horizontally to be 2 UV units wide.

You would do that eithe by separating the UV faces and tailor a blending mask for this, or you use differtent material elements.
Both approaches have their pros and cons that depend on the use case.

I never used Hammer, but UE4 is a big an d complex engine as most engines are nowadays.
Sometimes I wish the days back when one could create a complete DOOM WAD in a single rainy afternoon … :slight_smile:

Another argument for me to finally record the tutorial series that I have planned for a while. Just need a decent microphone…
All would be explained there :slight_smile:

Allright thanks for your help. I’m going to have to play around with what you’ve given me.

No problem :slight_smile: If you have furtehr questions, just ask.