Categorygithub.com/walkline/ToCloud9
repository
0.0.3
Repository: https://github.com/walkline/tocloud9.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

ToCloud9

ToCloud9 provides a variety of microservices that operate alongside AzerothCore/TrinityCore and enable clustering support, making the system scalable and highly available.

Architecture

The primary concept underlying the current architecture is to enhance the scalability of TrinityCore/AzerothCore with minimal modifications on their end.

To fulfill these objectives, a game-load-balancer microservice has been developed. Functioning akin to an API Gateway, the game-load-balancer analyzes packets and strategically routes them to the Gameserver or generates requests to other services for handling.

The simplified architecture described below.

If you'd like to read more, you can take a look at the pillars that form the foundation of ToCloud9 here.

Current state

Currently, it is possible to play the game, but some functionalities still do not support a distributed architecture (clustering). Here is a list of features/tasks that, once completed, will enable it to replace the widely used unscalable monolith (vanilla TrinityCore/AzerothCore). The status is relevant for integration with AzerothCore.

Feature/TaskStatusComment
Gameservers and other services discovery
Services communication with NATS and gRPC
Redirect players from one gameserver to another on map change
Gameservers crash recoveryPlayers would be redirected
to the another available gameserver
Automatic load balancing maps between gameservers
Shared pool of GUIDsSharing Players, Items, Instance GUIDs
"Who" opcode handling
Whispering in cluster support
Guilds in cluster support90%Guild creation functionality is missing
Guild bank in cluster support0%
Mail in cluster support
Auction house in cluster support0%
Friends list in cluster support0%
Global channels in cluster support0%
Parties and raids in cluster support80%Not implemented:
ready checks, instances reset on player request,
prolonging instance bind,
moving raid members between groups,
and updating group members state
like health when on different maps
Battlegrounds in cluster support0%
Arenas in cluster support0%
LFG in cluster support0%
Sync transports between gameservers
Helm chart support

Deployment

Kubernetes Cluster

Utilize the helm chart to seamlessly deploy the solution in your Kubernetes cluster. Kudos to @2o1o0 for the solution.

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

Without Docker/Orchestration

For Windows & AzerothCore use this guide.

For Linux and Mac - TBD.

You can utilise Perun tool to simplify managing of all apps/microservices.

Community

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

License

See LICENSE.