Skinned Meshes cause frame lag on geometry creation/deletion

Reproduction Steps
When there’s a large quantity of skinned meshes (~100) in the game world, the creation & deletion of parts causes considerable frame lag. One example of where this can occur is with skinned seas in naval games, as a large number of skinned meshes are required.

Steps to reproduce:

  1. Generate a large number (e.g. 100) of skinned meshparts in workspace.
  2. Generate parts and delete them rapidly.

These parts can be parented anywhere in Workspace and will still generate lag. The rate of creation does not matter, but a higher rate will allow you to see the lag more easily.

The frame lag only occurs in live games, and not in Play Solo.

It seems the best way to reproduce this lag is to generate the skinned meshes on the client.

Repro place file:

skinnedmesh_bug_repro.rbxl (35.0 KB)

In the repro place, the green button will generate parts rapidly. The red button will toggle the skinned meshes invisible, mitigating most of the lag.

System Information:
CPU: Intel Core i9-10850k @ 3.6GHz
GPU: MSI GeForce RTX 3080
Memory: 32GB

This bug does not occur on MacOS or the Windows 10 App.

Expected Behavior
Before the 6th of October, this would not have caused any issues. The creation of deletion of parts would not cause lag spikes. No code was changed before and after this bug started appearing, so we know it arrived with the latest Roblox update.

Actual Behavior
Considerable frame lag seems to come from ‘updateInvalidatedFastClusters’, which can be seen in the screenshot and microprofiler dump attached below:

microprofile-20211007-003139.html (6.3 MB)

The lag is proportional to the number of skinned meshes present.

This makes games with large quantities of skinned meshes unplayable, as any creation or deletion of geometry will cause considerable frame lag.

Issue Area: Engine
Issue Type: Performance
Impact: High
Frequency: Constantly
Date First Experienced: 2021-10-06 22:05:00 (+01:00)
Date Last Experienced: 2021-10-07 03:10:00 (+01:00)

14 Likes

Thanks for the report, we will investigate. Do you have any live games that are adversely impacted by this?

3 Likes

Normal parts are also affected by this. In the game I’ve been working on, FPS drops significantly when simple parts like the shell casing or the debris that appears when shooting the ground are created. Luckily we created a feature that allows the user to disable these from appearing. When it is disabled, FPS increases significantly. Although I forgot to save the microprofiler data, I did record this video.

System Information:
CPU: AMD Ryzen 5 3600
GPU: 4095MB NVIDIA GeForce GTX 1050 Ti

2 Likes

Hello - thank you for the report and all the info attached. Would you be able to place the generated skinned meshes under a model instead of directly under the workspace in a folder? I am attaching an updated sample for you to look at.

Placing skeleton under models rather then in a folder under the workspace is a lot more efficient for performance (you can imagine the model as a “special” folder in this case)

skinnedmesh_bug_repro_fix.rbxl (35.1 KB)

If you are no longer seeing the issue with the original repro. you can check this fix is working by enabling CageMeshDeformers beta feature and reproducing it again.

8 Likes

Ah ha! It works perfectly if kept in a Model.

Thank you so much for looking into this for me. Shall have to keep this edgecase in mind in future.

If I might ask, is there any particular reason this started causing issues just yesterday? It seems like a drastic decrease in performance for something that worked fine before.

Thanks again for your help.

2 Likes

Hello @Arch_Mage - while the impact you have experienced is new, the underline issue that end up treating the workspace as parent model for skeletal mesh parts is not new. It was simply exposed by a recent change that is meant at improving the overall feature set. Thank you very your patience and providing a sample, it is appreciated.

4 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.