Introduction
As developers, we strive to create the best gaming experiences possible by leveraging platform features. One exciting possibility introduced with the skinned mesh feature is the ability to simulate soft body for vehicles. However, vehicle deformation is rarely used, and I suspect this may be because the feature is not fully optimized for such purposes. When used, it tends to be buggy and visually unpleasant, which is why I am advocating for improvements to the skinned mesh feature.
What is the issue?
The problem arises when an object with a rig is moving. The meshparts sometimes fail to update their positions. This issue tends to occur when the object’s connected parts change transparency or color. On lower-end devices, the problem is more pronounced, and it worsens in low FPS environments (e.g., when the map is loading).
Examples
I’ve recorded examples of this issue occurring on a mobile device, as my higher-end PC rarely experiences the problem. It does occur, but only about once every few minutes. The recorded game was running at around 30 FPS, though the video gives the impression that the FPS was lower. Device Specs
-
Minimal impact: None of the vehicle parts change their visual appearance.
https://youtu.be/z2tRl1RSZaA
-
Medium impact: The vehicle’s hazard lights change their color and material to simulate flickering.
https://youtu.be/yO3qS3Am3ZU
-
High impact: The vehicle’s lights change their color using TweenService, and the emergency lights flicker frequently by changing their transparency.
https://youtu.be/DB--qpz2fRY
2 Likes
I’m having a similar issue with skinned meshes. I’m currently working on a game, and some of my characters use skinned meshes for things like hairs and dresses, but when I walk around the skinned meshes freeze in place for a split second then reattach to the avatar like normal. Like OP, I notice the issue only happens whenever something connected to the part changes properties (e.g. transparency, color), and it gets worse on lower-end devices and in detailed environments.
This bug happens in any game, both inside and outside of Studio, and it’s happened on each device I tested, and it’s also showed up for others who are testing my game. The first bug report I’ve gotten for it was on September 22nd, 2024 at 2:57 PM PST, and it was still happening in my game as of yesterday, December 12th, 2024.
Repro
- Do this in a game with a detailed map preferably. You get results more likely with this than with a baseplate.
- Get a skinned mesh, any works.
- Weld it to anything that moves, like a vehicle or a character.
- Change the properties of anything within the model repeatedly with a script and a while true do loop or an infinite tween.
- You start seeing all skinned meshes within the moving model start to freeze in place (temporarily) before going back to normal.
I created a repro place that shows the gist of it all. You spawn in with a skinned mesh t-rex I got from the toolbox, but there’s also a few t-rexes in the corner that duplicate over time (only to make the game more laggy). The transparency of your upper torso is also tweened infinitely. I waited until there were enough t-rexes to make my device lag before I started recording the video. There’s also a few viewport frames because with my device it only shows up on the viewport frames (also because it adds more to the lag), but it can happen outside of the viewport frame as well.
In my video you can see that the skinned meshes in my avatar (the t-rex and my head) freeze in place in the viewport frames, then reattach to the avatar.
Expected behavior
The skinned meshes should move with the avatar the entire time and not freeze and detach.
A private message is associated with this bug report