Aurkad 1.0 · open source · Apache-2.0

Build persistent multiplayer worlds.

The open-source engine for multiplayer 2D games. Paint the map, write the rules and open the doors: players join from a browser, on desktop or phone, on a server you own.

Get started free
Aurkad 1.0 · trailer

Watch on YouTube

Players and Captain Brand hold a lantern-lit churchyard gate as skeletons close in, running in Aurkad

Captured in-engine

2,800+
automated tests
25
official modules
1,000+
players per instance
20 Hz
authoritative tick

01 / Engine

Built for the hard parts

The parts that usually kill an MMO project are the ones Aurkad treats as core infrastructure.

Authoritative simulation

The server owns state. Clients send intent, the tick resolves truth. Deterministic RNG with seeds keeps runs reproducible.

tick p50 37.8 ms

Realtime networking

Differential snapshots, hot/cold tiers, entity-level replication, quadtree AOI and viewer-specific cadence.

websocket · AOI

Scriptable game rules

Write systems in JavaScript or TypeScript against a typed API, with hot reload while the world keeps running.

typed · hot reload

Modular systems

Quests, guilds, magic, trade, crafting and more ship as optional modules over a small, strict core.

25 official modules

Replay & audit

Deterministic replay, audit trail, feature flags, schema versioning and backup/restore for real live-ops.

replay · audit trail

Browser tooling

No-code editors for maps, items, NPCs, quests, loot, dialogs and the game's look, plus a script editor and an admin panel, all in the browser.

10 content types

Under load

Load harness in the repository. Bots and server share one machine, so these figures are a floor.

players in a single crowd
~300–350
players spread across the world
1,000+
tick p99, under a 50 ms budget
46.8 ms
per player, 10 on screen
~12 KB/s
memory per player at 1,000 online
0.22 MB
RSS over 1 h of reconnect churn
−0.6 MB/h

02 / Architecture

Three layers, one runtime

Your game sits on top of optional modules, which sit on top of a strict authoritative core. Each layer can be replaced without touching the one below.

runtime
Node.js + WebSocket
storage
MongoDB
client
React + Canvas 2D
  1. 03

    Your game

    Content, scripts, maps, rules: everything specific to the world you ship.

    maps · quests · scripts · assets · theme · balance

  2. 02

    Optional modules

    Official gameplay systems you enable, replace or ignore.

    guilds · trade · magic · party · crafting · lighting

  3. 01

    Aurkad core

    Networking, authoritative simulation, persistence, replication, live-ops.

    netcode · sessions · AOI · persistence · observability

03 / Modules

Systems, not scaffolding

25 official modules. Enable what your world needs; everything here is optional and replaceable.

Combat7

  • magic
  • PvP
  • archery
  • knockback
  • line of sight
  • status effects
  • pets

Social5

  • guilds
  • party
  • friends
  • mail
  • leaderboard

Economy5

  • trade
  • bank
  • auction
  • crafting
  • equipment sets

Story4

  • quests
  • dialogs
  • cutscenes
  • achievements

World4

  • day/night
  • weather
  • lighting
  • minimap

Platform guarantees

Live-ops

  • feature flags
  • deterministic replay
  • seeded RNG
  • audit trail
  • player analytics

Observability

  • Prometheus metrics
  • distributed tracing
  • health / readiness
  • smoke e2e

Data & security

  • backup & restore
  • schema versioning
  • GDPR export & delete
  • 2FA

Scale & reach

  • multi-instance sharding
  • i18n

04 / Get started

From empty world to live world

Three commands from an empty folder. Docker pulls the engine, the first start writes a small playable game into game/, and the world is up.

  1. 01

    Launch the stack

    Download one compose file, generate a playable starter game and bring it up with Docker. No clone, no build. Health and readiness endpoints report when the world is live.

  2. 02

    Build content in the browser

    Paint orthogonal or isometric maps, wire quests, tune loot tables, write dialogs and restyle the UI through no-code editors that talk to the running instance.

  3. 03

    Define game rules

    Express behaviour in typed JavaScript or TypeScript against the engine API, then hot reload without dropping sessions.

# bash or zsh, from an empty folder
$curl -LO https://github.com/christianaurichzm/aurkad/releases/latest/download/compose.yml
$echo "ADMIN=yourname" > .env
$docker compose up -d

Then open https://localhost and register the admin name you chose. Requires Docker with the Compose plugin. On a server, point a domain at it and Caddy fetches a real certificate.

05 / Origin

Why Aurkad exists

I want Aurkad to help people turn a subject they care about into an online world others can enjoy.

Christian Aurich Zanettini Martins · Creator of Aurkad

In 2008, when I was 8, I wanted to turn my imagination into an online world others could explore. Many MMORPGs I played were pay-to-win; as a kid with no money for games, that frustration gave me another reason to create my own.

I started with Elysium Diamond and Eclipse Origins, engines written in Visual Basic 6. The editor was enough to make a game, but I wanted features in the core, so I opened the source. Eventually, I wrote my own VB6 engine, ran a server and led its community.

Years later, already working as a Lead Software Engineer, I returned to my old engine as a hobby and a test of what I'd learned. Over two years, I rebuilt it around work and other projects: VB6 on Windows gave way to TypeScript, containers and browser clients over WebSocket, with authoritative simulation and maps distributed across server instances.

The name

Aur comes from Aurich, my surname, and aurum, Latin for gold. Kad echoes arcade.

Own the server. Own the rules. Build the world you want.

Free and open source under Apache-2.0. Your maps, art, scripts and modules carry no obligation from the license: keep them closed and sell them.

Support, integration or a custom module? contact@aurkad.com