   Bigger bottleneck on server -- CPU or Bandwidth?
  I don't have any experience with stress-testing servers for online games, so I'm wondering what your experience in this matter is? How much up/down bandwidth, and cpu power could you expect a typical game server to have? Does the server use a lot of it's up time, while the down goes mostly unused? Is there even a distinction between the two for game servers? Thanks in advance for replies.   
  It really does depend on the game. What kind of game is it going to be? A turn-based strategy game? A fast-pace FPS? A middle-of-road RPG? Something else?   ;Quote:Original post by MortusMaximusHow much up/down bandwidth, and cpu power could you expect a typical game server to have? Does the server use a lot of it's up time, while the down goes mostly unused? Is there even a distinction between the two for game servers?Playing entirely by ear (no practical experience in this area), each client needs to receive data about many clients, but only has to send data about itself, so the bandwidth requirements on the server side should be heavily slanted towards send.   ;  @Codeka It's a 2-player RTS game with only around 10 units per player. For more detailed information, see my thread in the game design forum:gamedev.net game design feedback threadThanks for the fast replies!   ;Quote:Original post by MortusMaximus@Codeka It's a 2-player RTS game with only around 10 units per player. For more detailed information, see my thread in the game design forum:Considering that 8-player RTS with thousands of units worked flawlessly over a 28.8k modem, I'd say that if designed properly, network load will be negligible.   ;  >Bigger bottleneck on server -- CPU or Bandwidth? In the case of sacred 2: Neither CPU, not Bandwith, but Memory was the bottleneck ^^cpu-load for one game-server was 2% (normal) with occasional peaks to 4% - I think that was for 16 players... Memory could go up from 35 at startup to 70-100 (guestimate), and that was the limiting factor in the number of x-player gameservers we could start per physical machine.Note that we were cheating a bit, and pathfinding & AI are calculated on the clients - so the server didn't have much to do except logic, moves & timings.Funny fact: When enabling debug-info, cpu-load went through the roof (30+ %)Regards;  Bandwidth, as in bits per second, is not a problem for a commercially hosted server. Each client only has limited receive bandwidth (between 1 and 8 megabits per second for most broadband), and you don't actually want to send that much in general. If each client is 1 megabit per second (very high!) then you can do 1,000 clients on a gigabit Ethernet port, which is standard on even the cheapest motherboards these days. I'm assuming you're hosting in a well-connected data center.However, 1,000 users per server means you only have 1 millisecond per user per second per core. If you have a quad core, and you want to step the world 30 times a second, that means you get 0.13 milliseconds per user per step, which is not a whole lot -- and that assumes there is no process overhead, and that you scale perfectly over 4 cores.So, in commercial cases, CPU scaling will almost always be a bigger bottleneck than network bandwidth. Another question is memory usage, and memory bandwidth. If you have 6 GB/s in bandwidth (last generation servers), and 1,000 users, then each user can only touch 6 MB per second, which means about 200 kB per step. Once you add up all the data that needs to be touched per user per step, and add overhead, that becomes quite challenging. Similarly, if you have 2 GB addressable memory (32-bit server), and shared code and data is 1 GB, then you can only use 1 MB/user in total memory, which may also become a problem. (64-bit processes, 24 GB memory, and 20 GB/s throughput in the latest generation helps a little bit).