Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changes between Initial Version and Version 1 of dev/projects/Masterserver


Ignore:
Timestamp:
Oct 6, 2010, 3:21:01 PM (14 years ago)
Author:
smerkli
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • dev/projects/Masterserver

    v1 v1  
     1= Concept =
     2The master server keeps an up-to-date list of all public servers available on the internet. If a client wants to play an online game with others, it can retrieve this list from the master server and then select a game server to connect to. Game servers inform the master server of their availability and of any changes to their state (number of players online, ping, server name etc). They also send keepalives packets every once in a while so the master server can find out if servers abnormally went offline.
     3
     4= Program structure and parts =
     5The following list is to be used as a programming guideline and will ultimately be removed from this wiki entry. It's only here because it might be subject to discussion.
     6
     7 * Server-list related
     8  * manipulations
     9    * add server,
     10    * update server data,
     11    * remove server
     12  * efficient storage
     13
     14 * Communication-related
     15   * Client - master server communication
     16     * Process queries
     17     * Send replies
     18   * Game server - master server communication
     19     * Process queries
     20     * Send replies
     21
     22= Draft protocol outline =
     23The protocol to be used should be kept as compact and overseeable as possible. This is currently only a draft, so feel free to add/remove/comment things.
     24
     25== Game client queries ==
     26Queries a game client sends to the master server.
     27  * get server list
     28  * get stats (uptime, number of servers, etc)
     29
     30== Server queries and actions ==
     31Queries and requests a game server sends to the master server.
     32  * register new server
     33  * update server data
     34  * remove server
     35  * keepalive
     36
     37
     38== Replies ==
     39  * data: server list
     40  * data: stats (different kinds of stats to follow)
     41  * acknowledge
     42  * bad request
     43
     44= Open design questions / Problems =
     45  * TCP or UDP?
     46  * Networking library or own implementation?
     47  * Server browser in game client and communications code in game server