We’ve rewritten the character sound system for improved server-side performance.
(Actually, we just got rid of the whole server part.)
- Avatar sounds will no longer be located in the Head. They will instead be in the HumanoidRootPart.
Character.Soundwill no longer exist. There will be one script in PlayerScripts named
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.
If you currently fork or replace the avatar sound system, this change won’t affect you.
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!