01Case study

Virtual World Platform — Backend & Live Operations

Role
Backend / platform engineer

Backend platform for a flagship social virtual world — Go realtime game server, NestJS Alpha API, versioned content releases, Kafka telemetry contracts, and an internal support console for live operations.

  • Go
  • NestJS
  • SvelteKit
  • PostgreSQL
  • DynamoDB
  • Redis
  • NATS
  • Kafka
  • WebSocket
  • Kubernetes
Virtual world platform — backend and live operations workstation
02Challenge

The problem

The product needed an authoritative multiplayer backend that could carry persistent player profiles, rich world systems, realtime session state, commerce and frequent live content releases — without redeploying game logic or exposing support teams to the player hot path.

  • Persistent player profiles, progression and economy
  • Rich world systems — quests, NPCs, neighborhoods, collectible traits
  • Realtime session state across multiple server instances
  • Paid commerce and on-chain asset flows
  • Frequent live content releases without redeploying game logic
  • Safe operational tooling for support and content teams
03Solution

How it was solved

An existing TypeScript monorepo covered early Alpha domains. The live product required a purpose-built realtime architecture without losing coverage of progression, social and commerce systems. Work spanned nine related services: application backends, database tooling, event contracts, a Kafka data-platform library, and customer-support UI/API.

04Evolution

Delivery path

  1. 01 · Alpha API

    NestJS monorepo — REST + WebSocket modules for players, quests, rewards, traits, eggs, minigames, leaderboards and analytics

  2. 02 · Realtime server

    Go authoritative game server — 100+ WebSocket action handlers, login/reconnect lifecycle, cross-instance messaging

  3. 03 · Content pipeline

    Versioned PostgreSQL migrations (schema + seed content) with selective release apply tooling

  4. 04 · Telemetry

    Shared Protobuf contracts + Kafka / Schema Registry transporter

  5. 05 · Live ops

    Go support API + SvelteKit console for profile repair, reward grants and dialogue CMS

05Architecture

Platform topology

Hybrid persistence matched access patterns: relational config and content in Postgres; high-churn player documents in DynamoDB; hot cache and rankings in Redis.

Game clients ──WebSocket/HTTP──► Go game server
Support agents ──HTTP──────────► Support API + SvelteKit UI
                     │
                     ├─ Ory / JWKS auth
                     ├─ PostgreSQL (config, narrative, balance data)
                     ├─ DynamoDB (profiles, purchases, inbox)
                     ├─ Redis (cache, leaderboards)
                     ├─ NATS (cross-instance player actions)
                     ├─ Kafka + Schema Registry (analytics events)
                     └─ Open Match / Agones (multiplayer allocation)
06Product

Product surface

  • Progression

    XP, levels, badges, quests, story arcs, daily streaks

  • Avatar & traits

    Customizable characters, trait boxes, collectible traits

  • World systems

    Neighborhoods, NPCs, dialogue, secrets, tutorials

  • Gameplay

    Fishing, eggs, minigames, obstacle courses, leaderboards

  • Social

    Friends, chat/voice, referrals, appear-offline

  • Commerce

    Storefront, Stripe, battle pass, redeemable campaigns

  • Realtime infra

    Stateful WS server, NATS bus, matchmaking

  • Live ops

    Versioned content DB, support grants, dialogue → GitHub PRs

07Engineering

Technical highlights

  • Realtime authority

    Stateful WebSocket dispatcher with reconnection, login hooks (inbox, referrals, quests), and a NATS server-action bus so commands reach players connected to other instances. Multiplayer allocation via Open Match, Kubernetes and Agones.

  • Content as releases

    PostgreSQL migrations double as a content platform. Quests, NPC dialogue, fishing populations, storefront SKUs and battle-pass data ship in ordered version folders; a Python release tool applies selected feature sets to named environments.

  • Schema-first analytics

    Shared Protobuf event families (UserConnect, UserTransaction, GameLog, FrontendError) with Confluent wire framing. 80+ transaction types cover acquisition, gameplay funnels, economy, social and purchases.

  • Support outside the hot path

    Internal console for searching/editing player profiles, granting compensatory inbox rewards, reviewing purchases and editing NPC/quest dialogue. Dialogue edits integrate with GitHub PRs so narrative changes are reviewable, not silent production writes.

08Scope

What the team delivered

  1. Evolved an Alpha NestJS game API into a production Go realtime server

  2. Built 100+ WebSocket action handlers with login/reconnect lifecycle

  3. Designed hybrid persistence across PostgreSQL, DynamoDB and Redis

  4. Shipped versioned content releases without redeploying game logic

  5. Established Protobuf + Kafka telemetry contracts for analytics

  6. Delivered Go support API and SvelteKit console for live operations

09Services

Repos & services

Anonymized service family across the platform.

ServiceResponsibilityStack
Legacy Game APIAlpha REST/WS API, shared packages, contractsTypeScript, NestJS, TypeORM
Realtime Game ServerAuthoritative gameplay, commerce, socialGo, Chi, WebSocket, NATS, Kafka
DB MigrationsVersioned schema + game contentPostgreSQL SQL
DB Push ToolingSelective release apply to environmentsPython, psql
Event ContractsShared Protobuf schemasProtobuf, Go codegen
Data Platform LibKafka + Schema Registry adapterGo, Kafka
Support BackendCS / live-ops APIGo, Chi, DynamoDB, Postgres
Support FrontendOperator consoleSvelteKit, Vite
10Outcomes

Results that matter

Migrated a broad game domain toward a purpose-built Go realtime server while preserving progression, economy and social systems.

  • Migrated a broad game domain from NestJS toward a purpose-built Go realtime server while preserving progression, economy and social systems

  • Designed hybrid persistence suited to mixed config vs. high-churn player data

  • Established a versioned content-release pipeline and an event-contract layer for analytics-ready telemetry

  • Shipped internal live-ops tooling so support and content teams operate safely outside the player-facing game path

Rough scale across the service family: ~1,500 source files and 3,000+ commits over an 18+ month evolution window.

Realtime multiplayer backends, hybrid data modelling, content-release tooling, schema-first analytics and safe live-ops platforms.

11Visuals
Architecture overview of the virtual world backend platform
Internal support console for live operations
13Next step

Need similar technical experience applied to your requirement?