Game Development Community

Bandwidth calculations.

by Kelvin MacKenzie · in Technical Issues · 09/26/2005 (7:14 am) · 5 replies

Is there a way to be able to approximatly estimate the bandwidth requirement of a project? I know having less polys and less physics involved, has a effect of lowering it, but what I was wondering is how you estimate it besides just "testing."

#1
09/26/2005 (8:12 am)
I may be completely wrong but I can't see how the number of polys would make a difference to network bandwidth.
I'm still a network newbie, but I would think that Bandwidth is made up from the size and frequency of client->server or server->client calls. So the number of objects in your mission which communicate with the server would have the greatest impact. So if you can keep these communications to a minimum, your bandwidth will be much smaller.
#2
09/26/2005 (8:38 am)
Jason is absolutely correct: the number of polys has no real net effect on networking. It DOES have effects on collision checks server side, and rendering client side, but since the model itself is on the client already, and nothing related to the polys themselves are networked (except for the datablocks that tell the client which model to use, but these are networked over to the client during mission start, NOT during game play), the complexity of the model has no direct effect on networking.

What effects networking is basically the number of objects that are in scope to a particular client, and the number of data elements that are modified by the server during any one processTick() per object...as well as how well-optimized your pack/unPack functions are for that object.

Also keep in mind that Torque auto-throttles bandwidth requirements per client, so once you being to match up against the throttle limit (and it's not a hard and fast number we can quote except for "4kB per second downstream, roughly), what will happen is certain objects will receive less updates per second, not more bandwidth per second.
#3
09/26/2005 (1:41 pm)
So lets say the project Im about ready to test out is a glorified "3D chatroom" with no real gameplay perse. Im assuming nothing wrong with storing the avatar art, avatar animations, and enviroment art all client side. The only real traffic is the chat client and updates as to where the avatar is. This would mean the bandwith used is extremely minimal?
#4
09/26/2005 (3:06 pm)
That's how things work already: artwork, animations, environmental art is all client side.

In your case above, you're looking at only the chat messages themselves actually being networked, and the avatar motion, so yes!
#5
09/26/2005 (3:22 pm)
Depending on how you implement this obviously, but you could make the 'game' clientside only, and feed it information from an IRC channel.

at that point, you pretty much have control over how much data is transmitted.

how often you want the person's location updated (and/or let there be a variable update setting)

Location: X,Y,Z (3 bytes)
Direction: X,Y,Z (3bytes)

Action: X (1byte
Text: 1-255 chars (255bytes max, or 510 bytes if unicode)

so very simply, if you assume 1 update per second, that means each client would send to the server 8 to 263 bytes. If you assume people can type 1word per second that would be 13Bytes/second/user (104bits + network overhead)

of course, unless you are doing peer-to-peer then you need to also calculate the re-broadcast to other clients. that would be ServerOutput=(UserInput*(NumberOfUsersInChatRoom-1))*NumberOfUsersInChatRoom

so if you had 10 people in a chatroom, all chatting away at max capacity, it would be (104*(10-1))*10 = 9360bits = 93Kbits. FYI a 56K modem is 56Kbits.

If my numbers are wrong here, please someone correct me.