I know it is very big topic and maybe my question is very beaten, but I'm interesting of basics how to write highload server for UDP/TCP client-server communications in MMO-like game on C++/C#? I mean what logic of retrieving hundreds and thousands packages at the same time and sending updates to clients? Please advice me with architecture solutions, your experience, ready-to-use libraries. Maybe you know some interesting details how WoW servers work. Thank you!

Edit: my question is about developing, not hardware/software tools;

  • \$\begingroup\$ better suited for serverfault.com \$\endgroup\$
    – user827992
    Sep 4, 2012 at 12:21
  • 3
    \$\begingroup\$ This is overly broad to be answered. We expect questions about actual problem that you face, check the FAQ for details. \$\endgroup\$ Sep 4, 2012 at 14:00
  • \$\begingroup\$ This also shows very little research effort... I'm sure you'll find loads of relevant information if you search Google for some of these topics. \$\endgroup\$
    – notlesh
    Sep 4, 2012 at 17:12

1 Answer 1


Since I can't give a short comment - here a long answer.

First of all: What lorancou said!

To go more into detail: What do you need axactly? Chat - check some common protocols (like IRC) ... BTW a good hint for the gaming relevant things

But I guess it is about gaming relevant issues, so there some general hints I can think of boosting the performance

  1. Minimize traffic
    • It is enough to send a movement vector from time to time (try the exact duration)
    • In most cases UDP is sufficient - no ack necessary
  2. Minimize number of server requests
    • let the client do a lot of the calculations (if you share the random seed and the stats, it is enough to transmit the actions, every client can calc the exact values and from occasionally there can be a check)
    • you don't need to send the action instantly, it can be enough to send them bundled from time to time)
  3. Partition the area, similar to Occlusion Culling in graphics

That are some things I can think of right now w/o much thinking, if you think hard enough you get a lot more information.

Maybe I'm missing the point of your question - in this case you need to clarify.

  • \$\begingroup\$ +1 but I'd say "TCP/IP is sufficient" ;-) and the client-calculations must be redone by the server anyway (you can nicely order up things in the client though), the most traffic is almost always movement anyway. \$\endgroup\$
    – Valmond
    Sep 14, 2012 at 12:00

Not the answer you're looking for? Browse other questions tagged .