My Dodgeball game has A LOT of player animations. It seems after extensive testing, the server will pretty much pause what it’s doing until everyone is caught up and has downloaded each animation asset that is being played.
For example, a large 30 player server has players all throwing dodgeballs, each are playing equip/throw animations on their client. Anytime a client plays an animation, their client tells the server to tell each other client to also play the animation. Each client will download the animation data themselves, and play it on their client. The server LAGS while it waits for the client to finish before processing anything else.
Let’s say another player joins the game, as they’re joining the game the entire server will freeze/lag and stop processing for example RemoteFunction inputs until that new player is finished loading the player animations in the game.
This is very annoying when there are constant players leaving and joining the game, some with terrible internet connection that can end up taking a full minute before the game will allow me to throw another dodgeball. This hurts the experience in my game.
This system of how player animations are played was never always like this. In the past, the client would send packets to the server of each keyframe for the animation, and server would replicate the keyframes to each client. This new system prevents exploiters from using Fiddler to change the animation, however, the server should not freeze and lag while it waits for everyone to catch up.
TL;DR: Client plays animation → Server tells everyone else to play said animation → Each client downloads the animation data → Server haults all RemoteFunction requests and waits for each client to play animation → New player joins game and server haults again waiting for new player to load animations → repeat.
It’s very apparent and noticeable if you play the game yourself. You’ll notice mostly when a round starts, the game freezes for up to 5 seconds. It’s also apparent anytime a new player joins.
I have tested this myself by forcing all clients in my game with a special command to play an animation they haven’t loaded before, and again the entire server will lag and freeze until everyone has started to play the animation.