We’ve rewritten the character sound system for improved server-side performance.

(Actually, we just got rid of the whole server part.)

Changes

Avatar sounds will no longer be located in the Head. They will instead be in the HumanoidRootPart.

Character.Sound will no longer exist. There will be one script in PlayerScripts named RbxCharacterSounds .

The old system was turning into a server-side CPU bottleneck in games with lots of players. As the number of players grows, the server spends O(players^2) time replicating sounds between players. This was unscalable.

We fixed this by removing all server logic – instead of manually replicating sound states up from clients->server->other clients, one LocalScript just listens for humanoid state changes and triggers them locally. Network overhead is zero.

The speedups can be dramatic; In a 100 player test server, server CPU utilization dropped 40% by switching to the new system.

Finally, moving sounds from Head to the avatar’s RootPart reduces unwanted doppler effects and sound offsets caused by animations.

Before

After

If you currently fork or replace the avatar sound system, this change won’t affect you.

Timeline

We’ll be turning the new system on Monday, October 28.

If you anticipate any breakage in your game, respond here or DM me for a temporary opt-out.

If you have forked sound scripts, we recommend unforking to enjoy the performance benefits of the new system!