How do video games like Counter Strike and Apex Legends match players from queue to game server? Many developers never implement these systems themselves, since it’s more convenient nowadays to offload this to third party services like Agones.
In this dev blog series, I’ll be documenting process of building of a full multiplayer backend platform which consists of a matchmaker to pair players, a container orchestrator to spawn game servers, and other services like databases and authentication. I’ll also be modifying and adapting an existing game to integrate with this backend infrastructure.
Enter Chungus
Chungus is the name of this multiplayer backend system that I’m building on top of this arena FPS, Cube 2: Sauerbraten. If you’re unfamiliar with Cube 2, it’s a neat open source game engine developed in 2004 with an in-game, real-time, and co-op map editor with Quake like gameplay. I specifically aim to replicate FACEIT, a third party competitive match making platform, mostly used for Counter Strike, where players get paired and play on FACEIT servers for rankings.
In order to integrate Cube 2 with Chungus, I’ll be modifying Cube 2’s C++ server source code and will be using a Lua modding framework named spaghettimod to slightly modify its gameplay.

Why Build?
I want to get some hands on experience with container orchestration, distributed system design, and real-time multiplayer architecture, and I thought hosting game servers would be a neat real-world experience for it. The orchestrator and matchmaker are built in Rust, so I could learn and understand how it explicitly feels compared to other programming languages that I’m comfortable with such as Go.
This is my second distributed systems project, my first being Necoconeco, a distributed file sync system to toy with message queues, that I personally use everyday in replace of Obsidian Sync. I also built a monitoring service named Deathbox, which my PC and laptop send heartbeats to on boot, to health check myself since I’m always on the puter. This is my biggest project yet, so I wanted to challenge myself by building and managing on this scope and scale.
Other than my addiction to competitive FPS games, Cube 2 also has a special place in my heart. This game was used as lecture and lab material in the first half of my high school game design class where we’d explore the primitives of map and gameplay design.

Roadmap
There’s no specific roadmap. Since this is exploratory, there will be features/services deleted or added. If you really want a very general roadmap, here:
- Orchestrator
- Matchmaker
- Auth
- Game Modding
- Website
- Hosting/Deploy
What to Expect
I’ve been working on this for 3 months (from this post) and already have MVP of the orchestrator, matchmaker, and some game modifications. But since I have time, I want to refine it into a service that people can play on every day. With that said, I’ll probably write about previously completed problems and their solutions. I’ll be going over concepts, architecture, implementation decisions, debugging, and thoughts about this project and its development.
Info
Here’s the link to the project, Chungus on GitHub!
Comment and discuss under my Twitter thread