Gotchi World

Zone-sharded MMORPG — Unity WebGL client, headless Unity zone servers, Nakama backend, on-chain economy.

Year
2026
Role
Solo build — client, netcode, server architecture, deployment
Discipline
Game Development

The problem

A persistent multiplayer world cannot run as a single simulation. One authoritative server hits a hard ceiling on concurrent players, and browser delivery adds its own constraints: WebGL has no threads to spare, the transport must be WebSocket-based, and every megabyte of build size costs players before they ever see the game.

The approach

The world is split into zones, each simulated by its own headless Unity process, with Mirror over SimpleWebTransport handling authoritative networking to a Unity WebGL client. Nakama backed by Postgres and Redis owns identity, sessions, storage, and matchmaking so that zone servers stay stateless enough to be rescheduled. Ownership and the in-game economy resolve against Base — Aavegotchi NFTs, GHST, wearables, and REALM parcels — while a Next.js shell handles wallet connection and delivery of the WebGL build. The whole thing is containerised for GKE so zones scale independently of each other.

Outcome

A working zone-sharded architecture: authoritative Unity simulation per zone, browser-delivered client, and on-chain asset ownership resolved at session start rather than trusted from the client.

Details

  • Zone sharding — one headless Unity simulator per zone, scaled independently
  • Mirror over SimpleWebTransport (WSS) for authoritative WebGL networking
  • Nakama + Postgres + Redis for identity, sessions, storage, and matchmaking
  • On-chain ownership on Base resolved server-side, never trusted from the client
  • Docker + GCP GKE deployment; Next.js shell for wallet connect and build delivery

Built with

  • Unity
  • Mirror
  • Nakama
  • Next.js
  • Postgres
  • Redis
  • Docker
  • Base
  • Web3

Need something like this? Unity & WebGL Game Development is what I do.

Related work

Last updated .