I'm making a rig of a spiked monster. How well will this impact performance? Is it even a good idea?

I am making a humanoid rig of a creature that is covered in spikes. It’s entire body will be covered in spikes, save for the bird legs. It will resemble the reference picture in the background.

Will the amount of spikes attached to moving parts destroy the performance of my game? Should I use a specific type of weld to attach the spikes or should I turn off collisions, or anything at all that will make it less performance heavy? Thanks.

1 Like

I think we both know that this is going to be a little more expensive then your average game character on the platform. That being said, how performance is going to turn out depends not only on your character models.

You obviously have an idea of what you want your game to look like, your map and all of its details also take a part in how good it is going to run for the average player. If you want your map to be similarly detailed in terms of geometry then I think you have a problem.

Is a detailed character like this feasible? Sure, but there are a few things you can do to your model that will somewhat improve your odds of making this work out.

Make sure your geometry is as simple as you can get it:

I can’t tell by the screenshot whether or not your spikes have round edges because of the shading.
Make sure that they’re not, because smooth shading is supposed to take care of that illusion.
Also remove the bottom face of your spike if you haven’t already, this will save you 2 triangles / spike.

Overall, a rule of thumb; the less geometry the better.

For the collisions, disable them, please.

MeshParts have something called instancing, it’s worth reading the entire post if you don’t already know what this rendering technique does. But does it apply to your character? Maybe, maybe not.

Make sure you know what instancing is before you continue, otherwise the following isn’t going to make much sense.

You probably want to make a seperate mesh for each body part, but that wouldn’t be very efficient since every part of the body would require a unique MeshId.
How would this apply to your case specifically? Well, instead of creating a mesh for each body part, why not create a cluster of spikes and duplicate that over your character wherever needed? How many spikes you want to contain within a single cluster depends on how much you want to add, so trial and error.

NOTE: Parts and Unions also instance, but there are a few exceptions where it does not (MeshParts included). Be sure to carefully read the Batching efficiency portion of the hyperlink above, all is there.
Apply instancing and LOD to the map as well, this will lighten the load of your game and help carry the burden of your character models.

So in conclusion, is it possible? Yes. Is it efficient? Not really.
It won’t hurt to try though, so give it a shot.

Good luck.

3 Likes

Thanks for the really well written response. I didn’t make the spike mesh though, here is the link: RenderMesh - Roblox
Seems that instancing simply makes parts that are exactly the same or similar less laggy, and the above mesh is the only one I’m using (for spikes), so that should be fine for that. As for collisions, they are gonna head out.
Finally, I’m thinking that once I’m done with the model, it would be a good idea to run a test game on a lower-end phone or tablet, then make adjustments from there. I have a couple back up meshes if I ever need them.
Once again, thanks for your fast and informative answer. Oh, and one last thing, what type of weld should I use if I turn off spike collisions?

Stress testing your game on a lower-end phone / tablet is fine, as long as those are the intended platforms.
Otherwise those numbers won’t really be applicable to PC since Roblox already cuts out on a few core processes that just aren’t optimized for mobile yet. If this will be a PC only game, go with a lower-end desktop or about the average laptop if you want to have a good point of reference.

And as far as welds go, just use WeldConstraints.

1 Like

actually, the biggest thing that lags games (regarding parts) is when they’re unachored, anchored they’re totally fine, but if they aren’t it can mess up performance greatly.

maybe instead of tons of spikes everywhere, try using custom textures that look like spikes or something

You are talking about physics. Every single physical object within a player’s character model is unanchored.
The reason that works fine is because of CanCollide.false, if disabled it will be completely ignored by the physics engine. These spikes would solely be a visual add-on to the character, not a big deal as long as he doesn’t go overboard on the geometry part.

And as far as overall game performance goes, nothing is less important than the other. Everything has to be well optimized if you want it to work out.

2 Likes