Memory usage efficiency: High-poly unions or high-part-count meshes

The building style I adopted for a game I’m currently working on relies heavily on spheres and cylinders to create a smooth, cartoony and “bubbly” aesthetic.

Since memory usage can become a problem because of the potentially high poly count, I’m torn between the two following options:

  • Union operations on Roblox’s default spheres and cylinders meshes can result in a high poly count but fewer parts:


2 parts, ~4400 triangles

  • Alternatively, building objects with small mesh segments of lower-poly spheres and cylinders can result in a lower poly count but many more parts:


15 parts, ~1500 triangles

Both UnionOperation and MeshPart techniques would limit the collision fidelity to boxes and smooth plastic material

Is there an obvious choice, considering the fact that hundreds of these objects can be found within a close range?

Is this aesthetic ultimately going to make the game unoptimiseable on weaker devices?

4 Likes

I would go for the option with the least triangles, I don’t know much about the topic but i’m always careful when it comes to the triangle count of things. If you are familiar with blender or any other program like it I would suggest making some models there, because it’s easier to control how many triangles there will be.

Or model it in blender to achieve both a low tri count and a low brickcount.

I’ve stated this on a few threads before: Total Polycount is not the number you should be looking at (respectively) since instancing can make those numbers wildly inaccurate.

Unions and MeshParts are instanced well, Parts are instanced incredibly well (the old term is featherweight). Instancing applies to anything that has the same properties/MeshId and are anchored. So even with a few thousand of those fence segments, so long as they’re identical, you should be ok.


That being said, I will say that unioned spheres are extremely high poly because the Roblox Sphere shape is extremely high poly (but that’s fine because it’s a Part, which means that the geometry is known and thus polycount doesn’t matter). But for unions it is not good. Instead, use an Iconosphere with a cylinder on the base, like this:

FencePost01.obj (3.6 KB)

Here’s the .obj for you to use instead of a union.


Side tip for any Blender wizards out there: The Wood material’s grain always runs along the x axis, so if you rotate your mesh along the x axis (the red arrow) like in the picture, your wood grain will be correct if you’re making a post/beam/load-bearing object. (shout out to @WoodReviewer for sharing this wisdom)


8 Likes

I would try taking two copies of a blank baseplate; One being filled with x number of models using unions and the second game being filled with an equal number of those low poly meshes.

Then just play each of the games and use the developer console and the microprofiler to analyze how much memory the parts/meshes take up.

Then, go with whichever method is less taxing on the game.

1 Like