As a Roblox developer, it is currently impossible to set the Transform property of Motor6Ds and Bones in bulk in a way that is performant.
A few of many use cases:
- Physics simulated bone movement (one common use case: The Strongest Battlegrounds uses physics-based cape movement, which has 30+ bones per cape * 15 players per server = potentially hundreds of bones moving per frame. In an empty server, wearing a cape, I can check the microrprofiler and see that bone transformations sometimes take up >50% of the entire heartbeat time (0.747ms/1.464ms). On my device, this is enough to make the game CPU limited instead of GPU limited.)
- Implementing a bone-based “Wind Shake” system (tons of games use this for parts, but the performance without a bulk transform method prevents this from being viable with bones)
- Custom animation systems (useful for performance gains, or to add on more customization than what’s possible in Roblox’s animation system)
- Extra-performant subsistute for CFraming: Setting Transform is more performant than setting CFrame (unless in bulk with BulkMoveTo), so if this is still the case in a bulk method you could use it as an extra optimized subsitute for BulkMoveTo for use cases where it wouldn’t cause any issues
- IK systems
- Any other procedural animation systems or any use case at all where you might want to set Transform to multiple things at once
Some games do these and just eat the performance cost, but it’s not really ideal. Some others will hold off on some things entirely because it’s not worth the performance cost. A bulk Transform method (or just adding Transform support to the existing BulkMoveTo) would be a game changer for doing a lot of transformations at once.
If Roblox is able to address this issue, it would improve my development experience because it would expand the possible uses of Motor6Ds/Bones that are currently hindered by performance.