Player basic data module sends < 48k, battle module sends < 128k, zone heartbeat information 128k ~ 256k (no more than 4 per second push only), there are a few other modules depending on the area (indoor vs outdoor, singular buildgs etc), if you have ever played Dungeons and Dragons Online, you would understand the type of system I am working on. All broadcasts are limited to the area the players are centralized in. The global update happens ~2 times a second since the global update is for time keeping and synchronization along with global chats.
Most people make the mistake (not saying you are, just from watching general threads about networking) of trying to shove everything in one serialize object. Taking the character data for all characters and broadcast it to all other characters, this is bad practice. You have to know how close one person is to another person to decide what to send to that person. If a person is in the same game level area (what I call zones, and what almost all MMO’s call zones), all you really need to know is how close they are to each other, so basic vector information only across the zone so the other clients know about the players location, not what they are doing.
Now, you have ‘visual range’ this is the desired distance that additional information gets passed around, this is both server and client defined, first the clients machine capabilities, this you have to determine what the machine can handle, PLUS you have to take into consideration server load, see, another common misunderstanding is that each level (zone) in an large player game (not even talking MMO here, talking >64 player base), is that each level is all taken care of by the same server, in truth, this is server banks (up to 8 virtual servers per bank depending on the processors, but most have Itanium or Xeons and about 16 ~ 32 gig of ram and 8 quad core), each virtual server handles just 1 zone, this way when a zone has an issue, they can just reboot that single virtual server, thus only causing issues to those players in that particular zone. In a single game heartbeat they force save all characters that will be effected and reboot, worst case, they reboot without that save and the players are stuck with the prior save heartbeat.
That said, I save character info in incrimental saves (bits of changed data), if need be I rebuild the character data in up to 12 chunks. If you understand SAN backups with snapshots you get the idea, same concept since frankly it takes too much time to save all of the player data on every save, I only look for changes between saves, its the difference between a character file being 25 megs and 128k, think nano-second shots vs a second or two per player. This is never discussed (atleast no one has ever brought it up around here).
Large player based games are more than just sending data about the players around. All you have to do is break everything up into chunks and make the chunks as small as humanly possible. Otherwise you end up with sparatic movement, battles that bog down to nothing and lost information.