Originally Posted by BountyHead
Nice, using frostbite scares me, we need at least 64 man battles, i was hoping for 128. So far frostbite has shown us 32....
The number of players isn't necessarily limited by framerate or the power of the PC/console/server, but also by bandwidth. Not only do you not want all of your servers to require expensive high-bandwidth internet connections (especially if you want players to be able to run their own dedicated servers), but you also need to have a setup that doesn't require large amounts of bandwidth for each player connecting to the server.
I'll try to explain this in less than a full page wall of text.
Lets imagine a 16-player map. You stand in the middle of the map while 15 others are watching, and now you jump. You have to send a packet for your jump to the host (which may or may not be dedicated). Then the host has to send a packet for you jumping to 15 other players.
A packet for just saying you're jumping may be very small, but it's also likely to include your current position, and orientation, and possibly some other minor things. Lets just say the packet is 1 kilobit in size to the host, and 0.2 kilobits in size down to each of the 15 other clients. If you're the host, that's 1 kb download, 3 kb up.
Lets now say you jump once per second. Now bandwidth for the host is 1 kbps down, 3 kbps up. Not too bad yet, right?
Now all 15 players begin jumping up and down. That is now 16 kbps down, and 48 kbps up. Bear in mind, this is just for small amounts of information that would go along with jumping.
Now lets use the same situation as above, but increase the number of players to 32. Bandwidth is now 32 kbps down, and 198 kbps up (32 players each receiving 0.2 kpbs of data from the 31 other players jumping once per second).
So lets make the players more active. We'll say this is an FPS game, and they're running, jumping, switching weapons, firing weapons (includes firing rate, the insection points for each bullet), getting shot at (includes telling the server if you think you were hit), if you've crouched or gone prone, if you used a secondary weapon (grenade, smoke grenade), if you've used an attachment, if you've used a perk (which perk, which direction did you place it, which location did you choose for it). The list of crap you send a host goes on and on. I'd say on average amount of data you're sending a server is closer to 3-4 kbps. At this point it is worth mentioning that a host doesn't send ALL data it receives from a client to all of the other clients. For example those clients don't need to know all of the details about the perk they just used. However, the server does need to send clients other information that doesn't come from clients, like when a grenade exploded, who died. When a bullet hit someone, where did it hit them, did they die from it, etc.
You have to send each client all of the information they need to be able to realistically predict what other players are doing. So this means that each client is sent more information than they're sending to the host. But you don't have to send every client info in high intervals. For example a client can send a host a lot of information twice per second, but the host will only send other clients updates about that player once every second. Each client takes the info it gets about the other clients and tries to predict what will happen during that second.
Anyway, for our new scenario with players doing many things, we'll say that all players are uploading 4 kbps, and downloading 7 kbps, and that we have 32 players. This means that the server is downloading 128 kbps, and uploading 224 kbps.
Same scenario with 64 players. Downloading for players is now doubled to 14 kbps. Server is now downloading 256 kbps, uploading is 896 kpbs. By doubling the players, we've doubled the download requirements for each client, and quadrupled the upload requirement for the server. If we increase to 128 players, downloading for players is doubled again to 28 kbps, uploading for server is at 3.6 mbps. At the point of 128 players, though, I must admit that performance of the hardware is probably an issue as well as bandwidth, for both the server and the clients. I'll leave that discussion out of this wall of text, and can post about that later if anyone is really interested.