The Deus Networking Architecture

There are several programs in a complete game of Deus.

The Master Server

There is only one Master Server. Its only roles are in organisation and coordination. It handles logins for players (indirectly), and directs them to the correct Map Server. It maintains lists of all extant map servers and routing servers.

The Map Servers

The game engine is located in the Map Server. A Map Server handles, in general, several maps, and all enitities etc. in them. Map Servers communicate with each other concerning their boundaries.

The Routing Servers

The routing servers form a network, accepting incoming TCP/IP connections from clients, and directing them to their destination by the fastest route. They maintain routing tables indicate the latencies and reliabilities of their connections to the master server, all map servers, and all other routing servers. The connections between routing servers and the other server types are UDP, and compressed, combining all data for that destination. These enable the Deus network to route around internet instabilities (to some extent).

A routing server which happens to be on the same machine as a map server or the master server may be able to communicate by a more efficient protocol (e.g. unix domain sockets) depending on the OS involved.

The Clients

Clients communicate by TCP/IP connections to routing servers. A client should be configured with the addresses of (ideally) several routing servers. However, a client's first action is to download a list of all routing servers. It then runs a quick latency check on each, and decides on the best to use (and should store away this list for later use). There will always be a routing server running on routing.deus.net.

The Protocols

Issues

As I write this, I am unhappy about the multiple map server model - w.r.t such concepts as a mage using a spell to look at a map on one map server whilst he is in another. Maybe we should ditch the concept - but it helps scalability so much. At least, my client to map design needs upgrading to cope with the concept of points of view on different map servers to the entity. Hmm... or maybe I can model that already --- JB.