Hi everyone!
I’m currently trying to implement MMORPG-style movement netcode, but I’m unsure which solutions are most commonly used. I’m aiming to replicate the movement systems of games like EverQuest and World of Warcraft. Is there anyone here with MMO development experience who can provide a detailed explanation of how movement typically works in these games?
From what I understand, these games are client-authoritative when it comes to a player’s own position (often over a TCP connection) — meaning the client informs the server of its location. However, I have several questions about the specifics:
- Frequency of Updates:
How often does the client notify the server of its position? Is it around 10-20 times per second, or only when the player presses a key (like WASD) and changes direction? And how often does the server send your positional data to other clients? - Server to Clients Communication:
Does the server send positional data and velocity, relying on other clients to apply dead-reckoning or extrapolation? If so, how do these clients handle lag or network jitter? Extrapolations are bound to be incorrect eventually due to network variations — is there a smoothing technique used to address this? Or does the server send position and rotation data to other clients 10-20 times per second, allowing clients to interpolate between the last two states? If so, what happens when a packet is dropped, does the system switch to extrapolation to maintain fluid movement?
These are the challenges I’m currently facing. If anyone has insights into this topic, especially from MMO development experience, I would greatly appreciate your input! There seems to be a lot of “the blind leading the blind” on this subject, so any expert advice would be invaluable.
Thank you!