ToCloud9

module
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 4, 2024 License: MIT

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/Task Status Comment
Gameservers and other services discovery
Services communication with NATS and gRPC
Redirect players from one gameserver to another on map change
Gameservers crash recovery Players would be redirected
to the another available gameserver
Automatic load balancing maps between gameservers
Shared pool of GUIDs Sharing Players, Items, Instance GUIDs
"Who" opcode handling
Whispering in cluster support
Guilds in cluster support 90% Guild creation functionality is missing
Guild bank in cluster support 0%
Mail in cluster support
Auction house in cluster support 0%
Friends list in cluster support 0%
Global channels in cluster support 0%
Parties and raids in cluster support 80% 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 support 0%
Arenas in cluster support 0%
LFG in cluster support 0%
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.

Directories

Path Synopsis
apps
perun Module
game-server
gen
shared

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL