Lag Efficiency Questions

The game i’m making might have a pretty high max player count, and I want it to keep in mind the lag efficiency as I start.

•Does using Textures, (6 total, one on each side) on a lot of parts cause more lag than using the default Roblox materials?

•Do Unions cause a lot of lag? Are they worse than MeshParts?

•I’m not concerned for the scripting, it will not have any problematic scripts.

•What are the biggest killers in relation to building that end up making a game super laggy?

•How effective is Game Content Streaming for big maps? Will this mean things that are far away will become invisible? Will players’ characters that are far away be unloaded for other clients?

I’m looking for insight from anyone that has experience with this.
Thank you!

2 Likes

I’m not sure about most of these, but unions are laggier than meshes from what I have heard. Don’t use too many unions if they have a lot of parts in them. Hope this helps.

Yes, because you’re using a Roblox material (for the part you’re putting the materials on) and adding 6 new instances onto it. I would not using a texture for sides of parts that won’t be seen.

Unions don’t really “cause” any lag, but, they’re less performant than mesh parts and susceptible to corruption (they might disappear for no reason).

I’m no builder but I would say unanchored parts are the main killer. The number of parts, however, will probably only cost memory.

I don’t think Roblox has the best system, but they do a good job making almost all games work on even the worst devices.

I believe they become invisible, but I don’t think there is a way to increase the render distance of the user, as there’s no API to do so.

I’m not too sure about this one. I believe the server sees all the players and their surroundings so if you have any interaction between 2 players you can try using the server to do that.

1 Like

Yes.

No, meshes are great if you want a good performance.

Unions, unanchored builds and extremely detailed stuff.

Yeah (if streaming is on) they will be invisible you can use atmosphere or fog to make it look better.

Wait aren’t you the guy that owns the camping series?
I’m glad if I helped this cool developer

Yesss, and thanks for the help!

3 Likes

This is some kind of good question tho, worrying about performance. But the question you’re asking doesn’t really belong here since you’re asking more for big maps or building itself. Which actually it isn’t related to programming, I would recommend going to the category #help-and-feedback:game-design-support!

Anyway, for your questions…

  • First thing first all the unanchored parts within your game will cause a lot of lag since the multiple and increasing calculations that need to be done for it. In a more in-depth explanation of this, the Server sometimes take the action to make this calculation and so on once it is done, send the data for the client to be replicated and blah blah blah. Basically, sometimes the server will take action in doing this calculation, and sometimes our client will do this job itself. The most common way to solve this is to actually anchor the parts that aren’t needed to be physically simulated or to set the network ownership for one of these (the server or the client). Either way, both works, and this release already some stuff that could make your game laggy. (I may be completely wrong tho)

  • If I remember, the StreamingEnabled thing was something for not render (or render in low quality) the stuff that isn’t near to our player/client. This letting a dynamic loading and unloading of the stuff that is inside your game if it is not needed or intended to do so. Tho this may seem like a good solution, sometimes it isn’t enough for your game to not be laggy.

  • When it comes to programming performance, it really haves a lot of big deals and well, there’s really a lot of stuff that could go wrong. But either way, Luau is already a really fast, lightweight, and good performant programming language giving us some really cool stuff that comes in hand. Anyway, don’t be too confident with what I’m saying since there’s really a lot of good practices when it comes to code that could get you a better performant, good, and reliable code. Most likely you want the Microprofile to be your best friend for this situation where you will be seeing code not running “fast enough” or that just takes too much memory more than it should. Anyway, having knowledge about Luau's garbage collection algorithm, task scheduler, and other stuff that could help to improve the performance of your code really comes in handy.

Just some to-avoid tips would be: using repeat wait() or too many coroutines, global accesses, _G table instead of a ModuleScript, too many unused connections, avoid string creation (there’s a lot behind of it but generally Lua strings are internalized and so on, they’re just created once and kept around, this makes really fast some stuff, but makes string creation really slow) and many more stuff to be honest there’s a lot when it comes to script performance.

  • Meshparts increase the triangles count within your game, such as a Union. Decreases the part counts, but increases the tris count. Anyway, MeshParts are recommended over Unions itself, I don’t really know why but it is like that. MeshParts come in hand for “lag reducing” tho!

And well, there’s really a lot about how to make a really performant game but regarding to a big map, you will like to keep it with low parts count, such as if you’re doing buildings and you don’t need the interios just put some textures on it and put the sides as they were simulating such behavior, something like that, you get the point. Take in consideration I’m just a newbie developer and to be honest I’m not an expert, but this is my advise.

Have a good day! - @Lil_SharkyBoy