I build and operate real-time multiplayer systems.
One live product since 2021: a custom framework I am one of the principal contributors to, the persistence and integrations around it, and the operating work that keeps it healthy while several hundred people are connected at once.
- peak concurrent players
- 350
- building and running it
- Since 2021
- framework, built not configured
- Custom
Lucid City RP
Lead developerOn the product since 2021
Lucid City RP is a persistent multiplayer world running on FiveM. I have been one of its principal contributors since 2021, and its lead developer since 2024.
On a busy evening it holds 350 concurrent players against a single authoritative server. The constraints that come with that — a tick budget, database contention under load, shipping changes without dropping anyone — are the constraints any real-time product has. This one just has them every night.
What I build there
The framework
State synchronisation, the persistence layer, and the interfaces every gameplay system is built against. Written in-house rather than assembled from an off-the-shelf base, so the load-bearing decisions are ours to make and ours to fix.
Discord integrations
The services tying the world to the Discord community beside it. Identity and permissions stay in step across both, and the events players and staff care about arrive in the channels they already watch.
External API integrations
A layer between the world and the third-party services it depends on. Each sits behind an interface the rest of the codebase calls, so a slow or unreachable provider is a handled condition rather than an outage.
The staff website
A web application for the people who run the server. Administration and moderation happen here, against an interface with rules in it, rather than against the database directly.
What I do
- I design systems that hold state for hundreds of people at once and keep it consistent when they all act at the same time.
- I write the framework layer other people build on, so a new feature arrives as code against a real interface rather than as configuration nobody can reason about.
- I operate what I build. Deploys, incidents, and the unglamorous work of keeping a product dependable for years rather than for a launch.