A custom server/backend implementation of the game Silkroad Online written in Go.
The backend architecture consists of several components that may interact with each other. There are the 3 front-/client-facing servers (Gateway Server, Agent Server and Download / Patch Server) and 3 backend servers (multiple Game Servers, Shard Server, Chat Server).
All of them handle different kind of aspects to the game:
- Download/Patch Server: Provide updates and patches to the clients.
- Gateway Server: Perform authentication and transfer to the specific realm or shard.
- Agent Server: Proxy server for the client through which all network traffic is sent. Takes care routing network traffic to the correct servers.
- Game Server: Handles core game logic (navigation, AI, combat, ...) and game objects (players, pets, NPCs, ...). Usually there are multiple game servers, each handling a different region of the overall map
- Shard Server: Handles all region-independent logic (guild, party, market, events, ...)
- Chat Server: Handles overall chat messages (except local/region chat). Could also be handled by Shard Server