Protocols in Client/Server models
Can anyone explain to me how some of these large MMOG send messages to groups and subgroups of users if they do not use standard IP Multicasting techniques? What kind of propriatery systems do you think they use? Do they use some kind of system built on top of TCP/IP for example in which users are listed in groups maintained on the server? The server conversely sends messages to groups of users by performing a mapping from the IP address to a group address that is embedded in an TCP/IP packet? Anyone have any thoughts?
We use a system built on top of UDP. We built custom routers which get all world state that is visible to you, and make determinations about what you see and when you should see it. They manage the downstream based on available bandwidth, how much data is available to send, what's already been sent and other factors.
Each player connection has a send queue, and when there's a broadcast, or shout, or chat, or voice message, or state update, or player UI message, it gets sent to this send queue. The queue is not a linear queue -- in fact, many things don't get sent at all, if they can be derived from other data the client already has.
Note that, with this system, we can enforce visibility permissions (certain things only seen by certain users) without having to burden the simulation servers with this, which is nice.
Each player connection has a send queue, and when there's a broadcast, or shout, or chat, or voice message, or state update, or player UI message, it gets sent to this send queue. The queue is not a linear queue -- in fact, many things don't get sent at all, if they can be derived from other data the client already has.
Note that, with this system, we can enforce visibility permissions (certain things only seen by certain users) without having to burden the simulation servers with this, which is nice.
enum Bool { True, False, FileNotFound };
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement