An open-source fantasy game for the browser, built with Three.js, Vite and Cloudflare Workers. Choose a warrior, ranger, rogue or wizard and explore the world.
Play Brackenwake · Website · Lore and lands · Asset playground
The world atlas collects the nine realms and 95 named places, with zone descriptions, landmarks, encounters and character stories. Start with the last dragon or the Greenwold.
The atlas includes story plans and places still in development. It is generated from the world data and the current story document. Earlier story drafts remain in the repository as historical notes.
Use Node.js 22.12 or newer and npm.
npm ci
npm run devOpen localhost:5198. The welcome page leads into the game. Use /?solo to play without connecting to a multiplayer room.
For local multiplayer, run these in separate terminals:
npm run build
npm run servernpm run devVite proxies /ws to the local Cloudflare Worker on port 8787. The Worker uses a Durable Object for each room. See the multiplayer implementation notes for the current authority and synchronization model.
- A better authored starting zone
- More assets, including monsters and infrastructure
- Better ability animations
- More abilities
- Better encounter balance
- A storyline
- Housing
Contributions are welcome, whether you want to work on code, art, animations, world design, writing or playtesting. Pick something from this list or bring your own idea. Open an issue to discuss it, or submit a pull request. See CONTRIBUTING.md for how to get started.
Fork this repository to change the game, create a world or reuse its components. The companion game-assets repository contains the asset studio and reusable collections. Follow that repository's setup instructions and preserve its asset-specific license notices when importing files.
The Old Cellars art and encounter guide includes generated concept sheets, editable Blender rooms and bosses, animation builders, collision manifests and validation commands. Contributions to encounter balance and dungeon playtesting are welcome.
Useful starting points:
src/game/: game client and interface.src/mmo/: classes, abilities, items and authored world content.src/world/: world generation.server/: multiplayer Worker and rooms.public/: models, textures, sounds and interface artwork.assets/models/cellars/: bundled dungeon models and editable room sources.src/welcome/andwelcome/: the marketing hero.docs/mmo/: design documents and implementation notes. Some documents describe planned work; check the implementation before relying on a feature.legacy/: the earlier farming game.
See CONTRIBUTING.md for changes and validation.
npm test
npm run build
npm run build:marketingThe game builds into dist/; the marketing site and lore atlas build into dist-marketing/. Deploy them with their respective Wrangler configurations, wrangler.jsonc and wrangler.marketing.jsonc. npm run build:marketing regenerates the lore pages from the current world and story sources.
When deploying a fork, use your own Cloudflare account and app-specific Worker names. Update the marketing build's game URL, canonical URL and social-image URLs for your deployment. The checked-in configuration points to Brackenwake's deployment.
Code and original assets are available under the MIT License. Third-party dependencies and assets retain their own licenses; see THIRD_PARTY_NOTICES.md.
Music in public/audio/music/ and public/audio/library/ is excluded from this repository while redistribution rights are being checked. Local saves, credentials, dependencies, build outputs and intermediate generated video are also excluded. The final marketing video and artwork are included.