Best way to handle networking? (MMO)

For 2D / Topdown 2D Pixel games

  • What’s the best way to handle networking (movement) on an MMO using WASD?
  • What’s the best way to handle networking (movement) on an MMO using point and click?
  • What’s the best way to handle networking (movement) on a non-MMO (so 4 player games)?
  • What are the advantages of using Netty? What are the advantages of using Kroynoet?
  • What are some good places / material to start learning about networking (specifically movement)?
  • What are some open source projects that handle networking really well?

Most of my issues with networking come with movement. I would like to overcome this, but don’t know where to start. Any advice would be appreciated.

My only experience is with KryoNet, I only really experimented with chunk data, movement and the direction a player was facing. I limited updates to only send 5 times per second rather than 60 which is the fixed FPS with LibGDX.

I setup an AWS free server but was soon getting charged as some testing hit the server a bit much for the free tier. The engine was simple to use but did mean writing a client and a server, the project was too big for a solo dev so I scrapped it.

Its worth trying out KroNet https://github.com/EsotericSoftware/kryonet as it was very easy to setup and there are tutorials out there to get you started. When you start testing on a live server you are likely to get some charges.

I think the first thing you should understand is that these are the same question:

  • What’s the best way to handle networking (movement) on an MMO using WASD?
  • What’s the best way to handle networking (movement) on an MMO using point and click?

There should be no dependency between slightly different input methods and your networking code. If there is, you need to look again at what you are doing.

I’m currently developing a multiplayer FPS engine (and games that use it) and I use Kryo for the networking. Seems pretty good to me. However, regarding your questions, volumes could (and have been) written on the “best way”, and it mainly comes down to the specifics of your game. For a “proper” game, you want to run the same events on the client and the server, with the client sending keypresses to the server. The server then sends back it’s interpretation of the current game state back to the clients, and they correct themselves if there’s a discrepancy.

[quote]What are the advantages of using Netty? What are the advantages of using Kroynoet?
[/quote]
Netty gives you more options for customization at the cost of increased complexity.

[quote]What are some good places / material to start learning about networking (specifically movement)?
[/quote]



http://www.gabrielgambetta.com/index.html



Also search for presentations from game dev conferences like GDC or whatever, there are a lot of resources on network programming.

[quote]What are some open source projects that handle networking really well?
[/quote]
MTA SA is open source on github and handles hundreds of players. I don’t think the source code for that is something you want to deal with though. That applies to most open source games i think, you will spend more time trying to understand the codebase than learning about networking by reading through the source code.

It’s not the same thing, WASD spams packets to the server continuously and requires more checks to keep it clean (so only accept the W packet once, and then when they let go of the button, send that information to the server), but regardless of that it still depends a lot on predictions.

The second one spams less packets and depends more on pathfinding algorithms to find the route.

There are different techniques on handling both, and would like to know.

Netty gives you more options for customization at the cost of increased complexity.

[quote]What are some good places / material to start learning about networking (specifically movement)?
[/quote]



http://www.gabrielgambetta.com/index.html



Also search for presentations from game dev conferences like GDC or whatever, there are a lot of resources on network programming.

[quote]What are some open source projects that handle networking really well?
[/quote]
MTA SA is open source on github and handles hundreds of players. I don’t think the source code for that is something you want to deal with though. That applies to most open source games i think, you will spend more time trying to understand the codebase than learning about networking by reading through the source code.
[/quote]
Incredibly helpful, thank you!