Optimizing TOWER DEFENDERS

T’sup fellow devs! :grin: Owner & creator of Tower Defenders here. Some gameplay footage

I’ve been a dev for a very long time on Roblox and yet still I learn new things every day. I’ve seen the platform grow and become more optimized. And I’m proud to be here and I look forward to Roblox’s success even after I’m gone.

I’ve come to accept and learn that Roblox’s engine isn’t particularly strong when it comes to graphical optimization. At least in contrast to say games on Steam (or other gaming platforms) with; photo-realistic scenes, ultra high resolution texturing, super high poly models with silky smooth high FPS animations, immersive and high quality particles, life-like stunning lighting, etc, etc.
But then you play Roblox… I mean we genuinely don’t even have a heat/fire distortion effect lol.

But back to Tower Defenders. I genuinely I believe that I’ve striven to push the boundaries of graphics in the Tower Defense genre on Roblox. And I can confidently say no other Tower Defense game (to my knowledge) even comes close to the amount of graphic quality Tower Defenders has.

And yet it has it’s faults, low-end PCs and mobile devices are almost completely excluded from this game as they just aren’t powerful enough to run it at intensive points in the game.
And yet I have spent an unhealthy amount of time trying to improve and optimize my game. Almost as much time as I’ve spent creating content. This is of course in part my fault (arguable on how much), but I’m also restricted to how optimized and powerful the Roblox engine is.

So, with that tangent stated, any suggestions on optimization?

How do I make a very high quality Tower Defense game optimized for all devices seamlessly?

Maybe try adding some settings for quality so that the player will be able to toggle various options off such as bloom, decreased particles ect. This will allow lower end devices to be able to run the game and increase user experience.

4 Likes

Looking at the Gameplay Footage, there are some unneccessary elemenets, UI choices, etc.

Corner has a character display which although is nice, doesn’t really add anything to the game? Make it optional, that might be a mini-optimization but will surely help.

Make effects that the player isn’t looking at (Ik its possible, just forgot the function name) 0/invisible and parts as well. This will keep it hidden lessening strain on performance for clients yet still functioning completely normal.

Wanna go crazy? Make the entire map a single mesh with optimized faces of course, just shove the whole map into blender, cleanup with merge from distance, tris to quads for extra optimization/cleanage.
It may also allow you to have better looking maps.

Amount of tweenage on the client/animations makes it a little hasty on performance, consider slowing down framerate on animations/less if player is far away OR there are much more troops. And if you’re scared of sacrificing quality because of that, just add a setting that is enabled on default and if disabled, causes the quality to stay as good as you’ll like.

If you haven’t already, make sure you’re disabling all unneccessary states on humanoids or making custom ones that don’t use humanoids/are very simple to the maximum.

Lessen part usage on bosses/enemies/towers, if a part is very hidden, delete it. This in the end will save on “clumping” as I’d like to call it. Essentailly, if a clump/area (usually small) has a load ton of parts/instances/anything, it will lag expentionally.

Also, it’d be great to see script performance on your game/other things so we can get a better idea of whats causing issues. Consider using a microprofiler as well.

However, small little side note, there are some design issues I see with the game but of course this post is asking for optimization, if you’d like a mini-roast, just let me know :ok_hand:

1 Like

YEET the texture trees. Textures on a transparent mesh are super laggy.
This is due to how roblox’s render system works.

1 Like

I honestly would try to make a better gui. I would make it in photoshop, with gradients and stuff, and if you don’t have photoshop you can commission someone to do it. Apart from that, the game looks really good, keep up the good work.

I do already have settings options; low-medium-high. Low graphics puts the entire game at a point where the client renders no particles, no animations, no pathing, no flashy effects, and anything else intensive to a device.

This massively helps FPS for a lot of people. But I still get complaints about “lagginess”. Complaints from people who don’t know the options are there, to those who do and it still doesn’t completely remove the problem.

Edit: But I do appreciate the suggestion. :smile:

I wasn’t aware you could change animation FPS during runtime? What method is this? Where can I find it?

Thank you for the suggestions, for better or worse I either do some of these already or I can’t do them at all. As their implications would bring massive complications. I.e. A single mesh file would be chaos for player collision / tower placement.

Lmk anything else! :^)

Add the option to disable roblox terrain water from rendering on your client.
The Conquerors 3 has this as a setting for their low gfx mode.
In lieu of the roblox terrain water, they use a singular transparent blue brick if you enable this stetting.

2 Likes