How It Fits Together
From OuroDev
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:
- accountserver
- arenaserver
- auctionserver
- authserver
- chatserver - chatadmin, chatclient
- cmdrelay
- dbserver - DB Server is the actual "shard" (and does surprisingly little database work).
- game - Game Client
- launcher - Launch the game servers.
- mapserver
- missionserver
- queueserver
- raidserver
- statserver
- turnstileserver
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:
- Run Launcher. This is being replaced by things like Cream Soda.
- Launcher runs Game Client.
- 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 dbserver, which is the actual "Shard".
- Game Client sends a login message to dbserver, and receives a lot of data in return.
- Game Client shows player selection screen
- Game Client sends a 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 a 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.
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.