How It Fits Together: Difference between revisions

From OuroDev
Taffer (talk | contribs)
m added links to protocol archaeology
Asuffield (talk | contribs)
Line 33: Line 33:
# Run Launcher. This is being replaced by things like [https://github.com/thunderspynetwork/creamsoda Cream Soda].
# Run Launcher. This is being replaced by things like [https://github.com/thunderspynetwork/creamsoda Cream Soda].
# Launcher runs Game Client.
# Launcher runs Game Client.
# Game Client connects to Auth Server, receives auth token of some sort.
# Game Client connects to AuthServer, receives auth token of some sort. AuthServer sends the token and some related data to dbserver.
# Game Client connects to DB Server, which is the actual "Shard". See [[Client-to-dbserver]] for info about how the client and DB Server interac
# Game Client connects to dbserver, which is the actual "Shard".
 
# Game Client sends [[Client-to-dbserver#DBGAMECLIENT_LOGIN|login]] message to dbserver, and receives a lot of data in return.
# Game Client shows player selection screen
# Game Client sends [[Client-to-dbserver#DBGAMECLIENT_CHOOSE_PLAYER|choose player]] message to dbserver, which begins the process of loading the character onto a MapServer.
# When MapServer has finished loading the character, dbserver sends [[Client-to-dbserver#DBGAMESERVER_MAP_CONNECT||map connect]] message to game client. This contains an IP address, udp port, and login cookie for the client to connect to the MapServer.
# Game Client directly connects to MapServer, as instructed. Most communication will be with the MapServer from now on, until the next time the player changes maps and needs to do a map transfer.
The Game Client also connects directly to ????TODO??? during play.
The Game Client also connects directly to ????TODO??? during play.



Revision as of 15:20, 23 May 2019

Server Architecture

An attempt to explain the purpose of each part, and how they all fit together.

Components

Based on the source directories, it seems like a full CoX system (that is, all servers, and the game client) is made up of these items:

Note: I'm probably slightly off, and will update this as I investigate further. Feel free to correct any lies in here!

Player's POV

From the player's point of view:

  1. Run Launcher. This is being replaced by things like Cream Soda.
  2. Launcher runs Game Client.
  3. Game Client connects to AuthServer, receives auth token of some sort. AuthServer sends the token and some related data to dbserver.
  4. Game Client connects to dbserver, which is the actual "Shard".
  5. Game Client sends login message to dbserver, and receives a lot of data in return.
  6. Game Client shows player selection screen
  7. Game Client sends choose player message to dbserver, which begins the process of loading the character onto a MapServer.
  8. When MapServer has finished loading the character, dbserver sends |map connect message to game client. This contains an IP address, udp port, and login cookie for the client to connect to the MapServer.
  9. Game Client directly connects to MapServer, as instructed. Most communication will be with the MapServer from now on, until the next time the player changes maps and needs to do a map transfer.

The Game Client also connects directly to ????TODO??? during play.

For more info about the Game Client, see Client Architecture.

Server's POV

??? TODO ???

See Dbserver-protocols for info about how the DB Server talks to things.