Lag reducing tips and Organzation tips!

Hi, welcome!

Hello everyone, I’m AerialsAbove,
a highly talented builder and modeler with seven years of Studio experience. During my seven years of making showcases and builds within studio, I’ve learned a lot of useful tricks and tips to help optimize and organize your games.
These are tips, advice, and tricks that can make a huge impact right away or over time. Follow the steps if you want to really get the best from your showcases, games, and projects!

Let me show you a quick example of my previous showcase projects!

Showcase examples




Let’s Begin

First step first, let’s open up Studio.
Find the place or game you’ve made that you want to begin to optimize and organize.

I will be using my creation called Springs Rock.

Springs Rock is a very large sprawling showcase that I have worked on since 2014. Within that seven year time span, I’ve learned A LOT on optimizing my worlds. Now to share those tips with you.

Tip 1:

Collision Box Rendering

I’m just going to go ahead and put this up top. This is the most IMPORTANT and EASY tip on this list.

Do you often use meshes and unions? Do you know how to set and define their collision boxes?
If you do not, then this is the one thing to keep in mind for your future projects.

Let me explain.
Every single mesh AND union you make or add to your world is made up of triangles.
Triangles, polys, ngons, faces, what ever you call them, all parts, spheres, unions, and meshes would not exist if not for triangles.

When you create your union, Studio calculates it’s triangles/faces into the new shape you just made.
This is the same case for meshes when you import them into Studio.

However, Roblox, under the hood, also beings to check and calculate your new union/meshes collisions.
Roblox has to do this for nearly every single item in your when you run a world and begin to explore it.

Roblox defines how the players walks, hits, and reacts to a item based on the triangles and how they are set to interact with the player.

This is fine at first, until you start to really feel up your world with a lot of meshes and unions.
Now the game will begin to draw a lot of resources calculating how players should react to items in the environment.

Thankfully we can free up some resources by defining each union and mesh collisions.

Here is how:

  1. Make sure you have both your ‘Explorer’ and ‘Properties’ tabs open and on screen.

  2. Click on any union or mesh or model in my case.

  3. Check here in the “Behavior” tab.
    t2

What are we are looking for is “CanCollide” and “Collision-Fidelity”
I also have the parts themselves checked in “CanCollide.”
What does this do? This simply defines if a player can walk, run, climb, or clip into this object.

Imagine a basic wood floor. If you set it’s CanCollide to True (The check mark) players can now walk on the floor. If you set it to off, players will now fall through the floor as if it did not exist.

For my lamp, pictured above, I have all of it’s parts set to “box” in Collision-Fidelity.
What does this do? This one is a bit more complicated. As I mentioned above, each union and mesh render both their triangles and how the players will clip into or interact physically with said mesh.

To keep it super simple:

Box - Makes the whole mesh, no matter how detail, rounded or curved, always act like a box. Imagine just a basic wall in it’s place. This is THE quickest rendering method.
Default - A mix of Hull and Box, this is the best of both performance and collisions supposedly.
Hull - This is more resource heavy to render, basically makes every single surface of an item “touchable.”

You want to define each of your unions and meshes based on these three rendering options. There is a forth, which is even more complex, which I won’t discuss.

Here is what this tip is best used on!

Examples

Don’t know what items to set to box or hull?
Think about it this way. Any plants, or small and out of reach items that will never be “touched” by the player do not need their physics and collisions boxes render in. Set them to "box.’

Big items like large rocks, walls, roofs, stairs, crates, cars, items the player should obviously run into and “touch” should be set to “default” or “hull” so they can walk on these items accurately.

Grass and plants

In this image, there is several plant objects on the ground.
The mushrooms, tuff of grass, and clover on the ground all have their collision set to “false” and to “box.”

  • This makes walking nears plants super easy and enjoyable to do.
  • This reduces all of heavy math and calculations Roblox would need to do just for these super small details.
  • Make sure to set all your vines, mushrooms, grass, and small plant material to off! This will have great FPS benefits in the long run!

Trees

In this image, the tree leaves themselves. All of these leaves have their collision set to “false” and to “box.”

  • This reduces a lot of calculation done by Roblox
  • Improves the performance!
  • Makes it easy to climb tree limbs and not get stuck in crazy collision boxes.

Examples

In this image, these bookshelves are packed full of triangle heavy meshes/unions. All of their collisions are set to “false” and to “box.”

  • Again, this helps with game performance as these items stack up in your world space!

Rocks and Walls

In this image, it’s best to set all larges items that players can obviously run into to “default or hull.”
You don’t want the player to clip into walls and terrain!

Tip 2:

FIB Lighting and shadows

FIB3 adds dynamic lighting to Roblox, awesome stuff! However a lot of you may have noticed that your game will quickly tank when you used FIB3 in your games.

Here is my suggestions on reducing this performance impact.

  • Not every single items needs to cast shadows. Set this to off in properties where it says “Cast Shadow.”
    (Custom grass doesn’t need to cast shadows, they’re barely visible for example. Items you can’t see, don’t need to cast shadows. Items in pitch black do not need to cast shadows.)
  • Don’t over do the lighting sources! You do not really need fifteen light sources in one spot, spread them out.
  • Minimize light source overlays. Don’t place a lot of lights too close together if not necessary, basically.
  • Remember that complex unions and meshes cast complex shadows. Don’t be surprised if you put several lights next to a very detail tree and see a FPS drop. Every shadow costs resources to render.

Tip 3:

Spring Cleaning

Springs Rock is a seven year old showcase. That means there are a ton of hidden parts and objects right under the terrain, hiding behind walls, or duplicated items.
These items go totally unseen by your players. Take the time to remove any items you cannot see.

  • This includes assets just outside the view of a map!
  • Random parts out of reach
  • Copy/pasted models under a map
  • Duplicated parts hanging out in the open

Just take the time to keep your world clean and organized. :slight_smile:

Tip 4:

High-poly models

Roblox allows you to import meshes up to 10k triangles. That is a LOT of triangle. That is roughly 833 parts or 9,996 triangles.
You do not need to make ALL of your models maxed out at 10k tris.
Instead, keep your ordinary items like rocks, crates, tables, chairs, barrels, and bricks around 12 to 2,000 triangles if you can!
This will help in the long run when your world becomes full of parts, unions, and meshes.

Tip 5:

Named parts, models, and folders

Alright now, it’s time to stop being lazy and get your world into order. I may be one of the few people on Studio who takes the time to name their models, parts, and meshes to the degree I do, but I hope I can convince you to adopt this behavior as well.

As of now, you should start naming all of your parts and items with short descriptive names.

Why?

Because your world space is going to quickly become a cluttered mess.
Giving all of my models and parts semi-unique names helps organize them when that time comes.

Look at all of these lamps! This takes up my entire explorer window. Let’s move them to a folder that I named “Workinglamp.”

Now I can close this folder where ever I want and significantly reduce the Explorer window clutter!

This is a quick task to preform as long as you name your models as you go or before you start to duplicate and copy them around a map!


The end? For now.

Alright. Here are five tips that I use every day to help optimize and organize my world space.
I was tired at the time of finishing this guide draft. Will expand on this soon! :smiley:


Share you tips!

Correct me where I am wrong and add your own tips. I will edit them into new tips!

101 Likes

As somebody whose organizational skills consists of making five hundred parts all called “part” I can definitely appreciate this tutorial. I also didn’t know about changing collision boxes to minimize lag so this is very useful. :+1:

6 Likes

Incredibly helpful tips! I’ll keep them in mind

4 Likes

As someone who has issues with performance and optimization in my showcases and projects, this post will be helpful for me and I hope that other builders and 3D artists here on Roblox take the time to read Aerials’s post and improve the performance of their game.

5 Likes

This Helps a lot! Thank you my kind Man

4 Likes

Wow this is very informative and detailed. This guide will really help with my game!

1 Like

This is gonna come extremely handy when managing the way my Explorer tab looks, cheers!

1 Like

Awesome, this is gonna improve my games performance by a ton. Thanks!

1 Like

Pretty good tutorial - something I would mention would be to re-use the same meshes and textures; you’d want to try and load in as little unique assets as possible. This becomes especially important because Roblox caches the assets and re-uses the calculated data rather than calculating it every time.
In regards to textures on the meshes, if you can’t use default Roblox materials (which are more performant due to them being baked into the engine), then at least try to UV map your meshes so that you can use as little unique texture assets per mesh as possible.

3 Likes

Something to note is that builds are not always the source of lag, and in fact many games lag from the code behind it. Regardless, awesome tutorial!

3 Likes

Very helpful tips. I would definitely add onto this that using Streaming Enabled and also Render Fidelity set to automatic and performance (for meshes that can handle being deformed without compromising the build) are also some extremely useful tools for optimization.

1 Like

As a programmer I can’t stress enough the last point really is important. I usually get invited into games where they are only using models and not folders and they don’t bother even renaming stuff.

2 Likes

same and I absolutely hate it. most of the projects I’ve worked on have hundreds of parts called Part and they aren’t even organized in any kind of folder. I end up doing the organization for them because there’s no way I can reference any of those parts that are parented to the workspace or a model called Model

4 Likes

I got a really old game where I just gave a friend of mine TC access to work on. He cannot stand how disorganized it is haha.
I think close to 16k items, but at least they are mostly named at this point, just lack a folder. x.x

3 Likes

I’ve never stayed on a project for any longer than a day because of this. No one actually organizes their stuff.

2 Likes

Last night I went into my team’s studio and did a LOT of optimization with collisions and collision fidelity. I realized that your guide missed the CanTouch feature. Granted that this is a newer feature, CanTouch now goes through the extra process of making the mesh/union “scriptable”. I didn’t look into the specifics of it, but the CanTouch option should always be disabled for Builders, Scripters can enable it as needed. There is virtually 0 need that the builder themself would need to have it enabled, as it just adds more labor into the rendering process.

1 Like

I could be wrong, but I don’t think there is much value to turning it on and off for now. All it does it define if a part is or is not in a scripts trigger I reckon.’

Anyways, it is a good practice getting used to toggling it on/off too just in case. :slight_smile:

Do you know forum on this topic and if it directly takes long to render/calculate?

1 Like

“There’s a small performance gain on parts that have both CanTouch and CanCollide set to False , as these parts will never need to compute any kind of part to part collisions. (They can still be hit by Raycasts and Region3 queries however).”

1 Like

Alright. Sooner or later I will find the motivation to fix this guide up again soon and will take the time to add this bit in. (Anything else, btw?)

Thank you!

1 Like

If you use unions make sure to turn them into meshes so you can set the renderfidelty to performance that will increase your fps.

1 Like