The engine

The engine behind Arcanor

A complete 2D MMORPG engine in Ruby: an authoritative 20 Hz game server, a Phaser client, deep RPG systems and a full in-browser world-building toolkit — the same stack serving the game you just saw.

Real-time
Live multiplayer
In-browser
Nothing to install
7 / 105
Classes / spells
Open world
No loading screens
The Grassland at 20 ticks a second — every system on this page is running in this frame.

The Grassland at 20 ticks a second — every system on this page is running in this frame.

What's inside

A complete engine, not a demo

The whole stack of a live MMORPG — the game, the world, and the tools to build more.

Authoritative game server

A real-time, server-authoritative simulation: movement, combat, AI, spells and loot are all decided on the server, so cheating doesn't work.

Fast, lightweight netcode

Each player only receives what's in view, so the game stays smooth and responsive — even on a modest connection.

Deep RPG systems

Classes, stats and leveling, a full spellbook, gear and paperdoll, crafting, shops, an auction house and player-to-player trading.

Seamless open world

Multi-layer maps you walk edge to edge with no loading screens, Z-level bridges to pass over and under, and a live day/night cycle.

Castle War

Scheduled guild castle sieges — break the guardians and barricades, smash the Emperium to conquer, then defend your guild dungeon and treasure vault.

Full creation toolkit

Build worlds right in the browser: a map editor, character generator, asset library and editors for every entity — plus an MCP server so an AI can build content for you.

Architecture

Two processes, one clean seam

A conventional web app handles accounts, admin and content; a separate authoritative server runs the real-time simulation. They share one database, so there's a clean split between "content & accounts" and "the live world."

  • Web app authenticates players, serves the client, and mints short-lived signed socket tokens.
  • Game server verifies the token, spawns the player, and streams a culled view to the client every tick.
  • No web request/response on the hot path — just a tight loop and a binary socket, so the action stays instant.
              Browser (Phaser client)
        HTTPS ───────────┬─────────── wss:// (binary)
                         │                  │
   ┌─────────────────────▼─────┐  ┌─────────▼───────────┐
   │  Web app (:3008)         │  │  Game server (:3009)  │
   │  accounts · admin · CRUD  │  │  async reactor      │
   │  map editor · billing     │  │  20 Hz authoritative│
   │  MCP · socket tokens      │  │  binary WS protocol │
   └───────────┬───────────────┘  └──────────┬──────────┘
               │      shared SQLite           │
               └───────────────┬──────────────┘
                   ┌───────────▼────────────┐
                   │  storage/*.sqlite3     │
                   └────────────────────────┘
Create

A world-building toolkit — in the browser

No external editor. Paint maps, generate sprites and author every entity from the admin panel — or let an AI build it through the MCP server.

Tile map editor

Paint multi-layer tiles with autotiling, set collision, and place warps, NPC spawns and resource nodes.

Character generator

Compose character and NPC sprites from a parts library and export paperdoll sheets.

Asset library

Browse animations, sprites and paperdolls in one searchable library.

Entity editors

CRUD editors for NPCs, items, spells, classes, quests, events, shops and recipes.

Castle & siege panel

Design castles, schedule Castle War, and review conquests and ownership.

MCP authoring server

A token-scoped MCP (Model Context Protocol) server so an AI agent can build content for you.

Built with

A modern web stack

Ruby 3.4 Rails 8.1 async + async-websocket Phaser 4 Three.js Hotwire / Stimulus Tailwind CSS v4 SQLite + Solid Queue/Cache/Cable Importmap Kamal 2 · Docker

Your story starts in Arcanor

Create a hero, step through the portal, and find out which of the seven you really are.