Architecture · Real-time systems

Dragon Lords

An independent cross-platform game with a split backend, an API, background jobs and a real-time service. Included because of the architecture, and labelled as an independent product.

Period
February 2023 – present
Role
Design and development
Promotional artwork for Dragon Lords, with a hillside castle and a green dragon.

What it is

Dragon Lords is an independent game, in public alpha, set in a fantasy world and played across desktop and mobile. It is not a client project. It is here because the interesting part, for a business looking at custom software, is not the dragons. It is the shape of the system behind them.

The business problem

There is no client brief. The technical problem is the one a growing product eventually hits: several kinds of work that should not live in one process. A player action, a saved record, a slow piece of processing and a live update to other people are different jobs, and they get in each other’s way if they share a single queue and a single server.

The work

The current client is written in Unity and C#. An earlier version used Angular, Ionic and Capacitor. It was rewritten when that stack was getting in the way of the game itself.

Behind the client, a Laravel API stores the durable data in MySQL, with Redis alongside it. Work that does not need to finish inside the player’s click goes through RabbitMQ and queued jobs. Live multiplayer updates go through a separate WebSocket service written in Go. Redis pub/sub carries events between the Laravel API and that Go service, so the two backends can stay in step without being the same program.

The design work was deciding which responsibility sits where, and keeping those boundaries intact as the game grew. World navigation, combat, gathering, crafting, inventory and multiplayer all had to fit that split.

Why it is here

A bespoke business system rarely starts this large. It does, sometimes, end up with an API, a worker and a live channel. Dragon Lords is the place that combination has been designed and operated as a whole, in public, and still in active development.

Technologies

  • Unity
  • C#
  • Laravel
  • PHP
  • Go
  • MySQL
  • Redis
  • RabbitMQ
  • Docker

dragon-lords.com

Talk about a similar problem

Back to all work