Browser game, world editor and desktop appLive at duskmere-game.com

Duskmere: what we built and why

A free browser MMORPG inspired by Old School RuneScape: a live multiplayer world, an authoritative TypeScript server, and a GM editor that builds the world.

Case study · · 4 min read

Built for
Dubai Foundry (our own product)
Status
Live at duskmere-game.com, in active development
Scope
3D game client, authoritative world server, GM world editor, account website, Windows desktop app
Multiplayer
Shared live world: movement, gear, chat, ground items, player trade and bank vaults sync between players
Content
Eight skills on the OSRS XP curve, branching-dialogue quests, maps up to 1024 x 1024 tiles
Stack
TypeScriptReactThree.jsColyseusNext.jsElectronNeon Postgres
Visit duskmere-game.com

The problem

An MMORPG is the hardest kind of software most studios never attempt: a real-time simulation that many people inhabit at once, where every action has to be validated by a server nobody can cheat, every character has to persist, and the content itself needs tooling so a designer can build a world without touching code. We wanted to prove that our way of building, AI accelerating senior engineers, holds up on exactly that kind of system. So we are building one in public.

Duskmere is a free browser MMORPG in the spirit of 2006-era RuneScape: run through the world on WASD, chop a tree, mine a vein, talk to a wizard, trade with another player.

What we built

A 3D client in the browser. React and Three.js render the world; you move on WASD with an orbit camera (Shift to walk, Space to hop over fences and low rocks), click to chop, mine, talk or pick things up, and right-click for an OSRS-style "Choose Option" menu. Combat targets with Tab. Panels for inventory, equipment (the paper-doll updates the 3D model), skills, quests, friends and settings, with graphics tiers from low to HD. It also ships as a Windows desktop app via Electron.

An authoritative world server. A Colyseus server owns the simulation: gathering and crafting outcomes are server-granted, combat and death are server-owned (dying drops your inventory; reclaim it within a minute). Each map region runs its own multiplayer room and keeps persistent state, so tree stumps and opened doors are shared by everyone in the world.

Eight skills and a quest engine. Woodcutting, Mining, Fishing, Firemaking, Cooking, Smithing, Attack and Hitpoints on the OSRS XP curve. Quests are data, not code: ordered stages of WHEN event, IF conditions, THEN actions triggers, with branching NPC dialogue where the player picks a reply.

A GM editor that builds the world. A separate authoring tool where a designer paints terrain and elevation, grows the map by painting past its edge, places NPCs with patrol or wander behaviour, authors dialogue trees, mints custom items, and writes quests in dropdown-validated forms. A playtest mode walks the draft world as a fresh character, running the same trigger evaluator the game runs. Save writes the JSON content files the game loads.

A website that owns accounts. duskmere-game.com handles registration and login with bcrypt-hashed passwords in Postgres, then signs a 30-day token that hands the player into the game. The game server verifies the signature locally and never sees a password.

Why these choices

TypeScript end to end. Client, server, editor and shared logic live in one monorepo with shared packages for the grid, pathfinding, items and the XP curve. The same trigger engine runs in the game, the editor playtest and the test suite, so content behaves identically everywhere it is evaluated.

Server authority from day one. In a multiplayer game, any outcome the client decides is an exploit waiting to be found. Every gain, hit and death is computed on the server; the client only renders and requests.

Content as data. Quests, NPCs, items and maps are JSON authored in the editor, validated before save, and loaded by the game. Adding a quest is a designer task, not a deployment.

The website separate from the game. Accounts, the devblog and the Play launcher live in a small Next.js site that deploys independently on Vercel. The game server can restart, move hosts or fall over without touching authentication.

What happened

Duskmere is live and in active development: the world, the editor and the account flow all work end to end, and the tutorial arc hands new players from the starting island to the mainland. It is our proving ground for AI-assisted engineering on real-time systems, and the codebase the studio points to when asked whether the approach scales past CRUD apps: pathfinding, XP-curve and trigger-engine behaviour are covered by tests, and the architecture documentation is written for engineers who join the project cold.

What we would do differently

We built the game before the editor, then rebuilt early content once the editor existed. The lesson is the same one Wipe Board taught about crawlers: build the authoring view first, because whatever tool creates the content ends up defining it.

Frequently asked questions

Is Duskmere free to play?

Yes. Create an account at duskmere-game.com and press Play; the game runs in the browser. There is also a Windows desktop app.

Is it affiliated with RuneScape or Jagex?

No. Duskmere is an original game inspired by the era's design: skill grinding, a readable low-poly world and an unhurried pace, with modern WASD movement. All code and content are our own.

How is cheating prevented?

The server is authoritative. Movement, gathering, crafting, combat and death are all computed server-side; the client cannot grant itself items or XP.

Could you build a game or real-time product for us?

Yes. The same architecture, an authoritative server, a data-driven content pipeline and tooling for non-engineers to author content, applies to any real-time or simulation product. Book a free consult.

Building something like this?

Fifteen minutes, free, no pitch. You talk to an engineer, not a sales rep.

Book a free consult

More case studies

  • RescueME · A pet adoption platform for the UAE that turned a rescue group's spreadsheet and WhatsApp threads into a site that finds its own adopters.
  • Wipe Board · A live tracker for Rust server wipes that went from idea to production in a day, then became an API that AI assistants can call.
  • OSRS Flip Finder · A quantitative Grand Exchange flipping tool for Old School RuneScape, with a game plugin that keeps the trade journal honest.
  • BoostSearch · Our generative engine optimisation consultancy, whose website is its own instrument: brand, site, lead flow and a daily measurement pipeline, shipped to production in a day.