quick question about performance

Hey all,

I was wondering what were the main factors to consider when creating a level when it comes to how fast it can run afterwards

I created a simple apartment in unreal and although it runs perfectly on my computer, there is a pretty drastic FPS drop on my laptop

both computers have similar specs with i7 cpu and 16gb ram - graphic card is GTX 460 and the laptop one is GeForce GT 650M

I know the laptop graphic card is considerably less powerful than the other one, but I wasn’t expecting such a drastic drop in FPS

I was mainly wondering if the resolutions of the light maps play a huge role in performance or if I should focus more on reducing the poly count of my objects? Or something else? (ideally I would like to avoid lowering the scalability settings)

Thank you! :slight_smile:

Poly count and lightmap resolution both affect the amount of graphics memory that is used. Most of the time that’s not a big issue, hardware these days is pretty well able to handle a lot of memory use. What can be a big performance killer is a large number of objects, each object adds draw calls where are instructions for rendering the object. Every mesh has a geometry draw call and a material draw call, each additional material that an object uses is another draw call. Usually it’s better to use more memory than it is to have more draw calls. There are other stuff that also have a pretty significant performance hit like post process effects such as screen space reflections (SSR) and anti-aliasing.

Also note, performance in the editor will not be as good as the cooked game, so if you tried the game in the editor on your laptop you should try cooking it which will make a standalone game you can test.

oh ok that clears things up a bit thank you
when you mean large number of objects - do you mean separated objects or in total?
for instance if I have a dinning room with a table and 4 chairs what’s heavier?
A- export an FBX file for each piece?
B- export one single FBX file containing the table and all the chairs (assuming they all share the same UV set)

thanks again

Here’s your options:
Option 1-Export chairs and table separately–in UE4 you would end up with a static mesh for the table and each of the chairs, this option gives the worst performance because of a draw call for each item and you have identical chairs that aren’t necessary to keep each in memory
Option 2-Export one chair and one table as separate objects–you would end up with just the two static meshes in the content browser, you would then have to place copies of the chair in your level for however many chairs you want, however it only keeps 1 chair in memory which saves memory, but each chair is separate which means it uses the same number of draw calls as option 1.
Option 3-combine the table and the chairs into a single mesh, this would use a single draw call but uses as much memory as the first example since you have multiples of the chair which are identical.

Option 3 would probably perform best, usually it’s better to take the memory hit than it is to increase draw calls.
Option 1 is the easiest to do because you can place everything in 3ds Max and export it as it is and then just drop it into UE4 and it’ll all be in the right place, but like I said it gives the worst performance since you have many unnecessary draw calls and you aren’t saving memory by placing the copies in UE4.

When you import to UE4 it has an option that says Combine Meshes, this will make everything into one static mesh regardless if you had them separate or not so it would be like making it Option 3.

For the table and chairs I’d probably go with Option 2, since you would get better collision meshes and you might want to do something with a chair by itself. Plus it would be easier to use the chair as a prop in other places. For that type of object you wouldn’t be using many copies it would probably be OK to have the draw calls. An example where it wouldn’t be a good idea to do it that way is where many people try to build a room where the floor/walls/ceiling are modular sections but they are just boxes or planes and it would get better performance to make a unique wall that’s the size you want rather than trying to make all of your walls out of modular pieces. Also, baked lighting gets processed on each static mesh so you can end up with seams where the lighting is slightly different between the meshes, so two flat objects can look bad next to each other but if you combined them it would get rendered together and you wouldn’t have that difference in lighting.

For option 3, the table and chairs would have to share the same material/textures to count as 1 draw call (and only have 1 material).

For Option 3 that would be 2 draw calls as long as they share the same material–one draw call for geometry and one for the material. If they don’t share the same material then that would be an additional draw call for each material.

awesome! thank you both for the replies
I didn’t know about draw calls so i’ll definitely do more research on it now that I know what they’re called hehe