Skip to content
All articles
Engineering

How we scaled an MMO server core to 20k concurrent players

MV
Marek Valen
Principal Engineer · May 14, 2025 · 8 min read

Most MMO server cores start life as a single process that does everything: physics, combat, AI, chat, persistence. It works beautifully — until it doesn't. Somewhere around a few thousand concurrent players, the global locks that kept everything simple become the thing that brings the world down.

Measure before you cut

The temptation is to rewrite. Resist it. We spend the first weeks of any scaling engagement profiling the live core under real load, because the bottleneck is almost never where the team assumes it is.

  • Tick-time flame graphs to find the hot path.
  • Lock contention traces to find serialization points.
  • Network path instrumentation from client to simulation.

Shard the world, not the code

The winning move is usually to split the world into shard workers — each owning a region of space — behind a stateless gateway tier. Players hand off between shards as they move, and the gateway hides that from the client entirely.

Horizontal scale is a property of your architecture, not your hardware. You cannot buy your way out of a global lock.

Ship it without downtime

The final piece is rollout. We move zone-by-zone behind feature flags with instant rollback, so the live community never sees the seams. By the time the last zone flips over, the new core has already proven itself under real traffic.

Have a server worth engineering?

Tell us where you are — a new server, a struggling live game, or a legacy core that needs rescuing. We'll tell you exactly how we'd approach it.