Skip to content

walkline/ToCloud9

Repository files navigation

ToCloud9

ToCloud9 is an attempt to make TrinityCore and its forks scalable and cloud-native. The project is at the beginning of development and has limited functionality.

The current architecture described (in simplified form) in the image bellow: Since project is at beginning of development more components would be added and modified.

At the moment, it supports 3.3.5 client and has the next applications:

  • authserver authorizes players, provides realmlist and connects a game client to the "smart" game load balancer with the least active connections;
  • game-load-balancer holds game client TCP connection, offloads encryption, reads packets and routes requests to other services. For every character creates connection to the game server (TrinityCore) that Servers Registry provides. Also intercepts some packets and uses information from them to sync some states between services.
  • servers-registry holds information about every running instance of Game Load Balancer and Game Server (TrinityCore world server). Makes health checks and collects necessary metrics (active connections at the moment). Assigns maps to Game Server instances.
  • chatserver at the moments holds characters online and handles "whisper" messages;
  • charserver provides information to handle SMsgCharEnum opcode. Holds information about connected players. Handles Who opcode.
  • gameserver is modified TrinityCore world server with sidecar library, that registers GameServer in Servers Registry and handles health checks.
  • guildserver handles some guild opcodes. Still misses guild creation and guildbank functionality.
  • guidserver provides pool of guids of items and characters to the gameservers.
  • mailserver handles mail opcodes.

Run with Docker-Compose

Prerequisites:

  • Database for TrinityCore or AzerothCore;
  • TrinityCore or AzerothCore data folder (dbc, vmaps, mmaps) and config (ect folder).
  • Docker & docker-compose (for 'Docker-compose' approach);

Steps:

  1. Fill in .env file with relevant data.
  2. Apply migrations to the characters DB from this folder - sql/characters/mysql/*
# For TrinityCore:
$ docker-compose --profile tc up -d

# For AzerothCore:
$ docker-compose --profile ac up -d

Run without Docker

For Windows & AzerothCore use this guide.

For Linux and Mac - TBD.

Community

We have the next Discord channel where you can ask any questions and share your feedback.

License

See LICENSE.