Ability to change CollisionFidelity locally

I set nearly ever part that has collision turned off to have a CollisionFidelity of “Box” to improve performance so collisions are not calculated on parts that do not collide. However, there are certain circumstances where I would like to have an un-collidable part have “PreciseConvexDecomposition” as its CollisionFidelity on just one player’s client if they are interacting with in in a specific way.

Currently, this is not possible because CollisionFidelity can only be changed in Studio and not when the game is running. The only workaround would be that I would need these parts to always be “PreciseConvexDecomposition” which could lower performance.

I’m uncertain of if this would be possible currently on a technical level without significantly increasing the performance impact of collisions for all PVInstances on the platform.

Based on what I know, collisions for a given mesh (including for roblox primative meshes) are stored within the .mesh file of the asset. Although enabling box collisions would not pose a massive issue, allowing for a developer to change collisions from Box to PreciseConvexDecomposition at runtime would require a new collision mesh to be calculated and synced to all clients - introducing a significant potential for latency, potentially introducing unreliability (e.g. if a new collision mesh fails moderation or is for any reason unusable), and significantly increasing network traffic.

These same issues would be present with changing mesh detail level settings arbitrarily at runtime - although potentially amplified there considering that a new mesh asset is generated when that setting is modified.

1 Like

Another solution is to replicate different versions of the asset to different clients, though I don’t think roblox allows for that atm (I might be mistaken though)

1 Like