尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證OpenWorld RPG: a pixel-art open-world RPG in the browser, with the engine and editor it is built on. The world's rules are data; a language model can add new ones at runtime.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗OpenWorld is a pixel-art open-world RPG that runs in the browser, together with the engine and editor it is built on. Everything in the world follows rules written as data. When a player tries something no rule covers, a language model can propose a new rule, which the engine validates before applying it. The game is fully playable without a model.
Play it at openworldrpg.ai · project page
OpenWorld is the research platform for the paper Large Symbolic World (in preparation).
The game
The engine and editor
Every interaction in the game is decided by rules attached to types of objects. When no rule defines what an action does, the engine can ask a language model for one. The new rule may only fill that gap, never change behaviour that is already defined, and it is tested in a sandbox before it is accepted. Accepted rules are shared, so the next player who tries the same thing gets the same result. Without a model, such actions fall back to a default, usually that nothing happens. Details: docs/design.md §5.
Requirements: Node.js 24 and npm. A language model is optional.
npm install
npm run gen:world # generate the world data
npm run dev # the game at http://localhost:5173, the AI rule service on port 8787
npm run dev asks which model backend to use (AI setup); npm run dev:client starts the game
alone. npm run build produces a static site in games/openworld/client/dist.
| Input | Action |
|---|---|
| WASD / arrow keys | Move (hold Shift to walk) |
| Left click | Use the item in hand: swing a weapon or tool, or use it on yourself |
| Right click | Use the item in hand on what you point at, or place it there |
| E | Interact: pick up, talk, open, read |
| G | Put down, put into a container, give |
| Space / Q | Attack / dash |
| X / V | Draw or sheathe your weapon / sneak |
| 1–0, mouse wheel | Select a toolbar slot (Shift+Tab swaps in the next row of the bag) |
| Shift+1–6 | Skills |
| Tab or I, C, K, U, L, J, M | Bag, crafting, skill tree, skills, quests, codex, world map |
| B / R | Build mode / rotate |
| Esc | Menu |
| ` | Developer console (development builds only) |
All keys can be rebound in Options → Keys.
npm run play # the standalone player: http://localhost:5174/?game=/games/starter/
npm run editor # the editor: http://localhost:5175/editor/
npm run editor:build # build the editor as a standalone program, then: npm run editor:start
npm run desktop # the editor as a desktop app (npm run desktop:dist builds installers)
npm run game -- check games/starter # validate a game project (build <project> --out <dir> makes a bundle)
The editor opens game projects from any folder. It edits maps, characters, items and other data, sprites and
sounds, rules, story and quests; fills gaps in the rules by hand or with a model; starts a playtest anywhere on a
map; and exports a game as a standalone web build. games/starter is a minimal example project.
The AI rule service is optional. Choose a backend with npm run dev -- --backend <name> or LSW_MODEL_BACKEND,
and put its settings in .env (not committed):
| Backend | Settings |
|---|---|
openrouter | LSW_MODEL_KEY, LSW_MODEL (e.g. moonshotai/kimi-k3); LSW_MODEL_URL for another OpenAI-compatible endpoint |
anthropic | ANTHROPIC_API_KEY |
claude-code | None; uses the signed-in Claude Code CLI (default claude-opus-5-5) |
codex | None; uses the signed-in Codex CLI (default gpt-6.1-sol), with Codex's own tools off |
none | None; only rules already learned are used |
--model <id> and --effort <level> pick the chosen backend's model and effort; left out, the backend's
default or .env is used. --fast asks claude-code for fast mode and codex for its fast tier.
npm run dev -- --backend codex --fast # Codex, gpt-6.1-sol, fast tier
npm run dev -- --backend codex --model gpt-6-luna --effort medium
npm run dev -- --backend claude-code --model claude-sonnet-5-5
npm run modder -- serve # run the service on its own, on port 8787
npm run modder -- serve 8787 --script packages/ai/fixtures/offline.json --data var/offline # scripted, no model
In development the game connects to http://localhost:8787. Elsewhere, pass ?modder=<url> or set
VITE_MODDER_URL at build time (?modder=off disables it). Players of a published build can instead enter their
own API key, which stays in their browser (Options → Your model; docs/byok.md). An overview of the
AI code is in docs/ai.md.
| Path | Contents |
|---|---|
packages/engine | The engine core: world state, rules, effects, events, behaviour, quests, story, saves |
packages/modules | Optional game systems: classes, waypoints, boons, hunger, social behaviour, loot, monster skills |
packages/stdlib | Base types, statuses and rules shared by all games |
packages/format | The game project format: validation, compilation, localization, JSON Schemas |
packages/runtime | The player: rendering (Phaser 4), interface, audio |
packages/editor | The editor: local server, web app, Electron shell |
packages/ai | The AI rule service, model backends, and the research agent and benchmarks; the game builds without it |
games/openworld | The game: content and rules, map generation and tools, the client, the wiki generator, assets |
games/starter | A minimal example game |
docs/ | Design documents |
wiki/ | Wiki pages (Chinese, with an English edition) |
bench/ | Benchmark data for the research experiments |
site/ | The project website |
The engine packages never import a game, and games never import each other
(packages/engine/test/boundaries.test.ts).
npm run check # typecheck and tests, as in CI
npm test
npm run typecheck
npm run coverage # rule coverage report; commit the updated baseline with rule changes
npm run check:world # headless playtest over two in-game days
npm run scale # performance check across fifty maps
npm run test:ui # browser tests of the interface (first run: npx playwright install chromium)
The interface components and their test page are described in docs/ui.md.
Wiki. An encyclopedia of the game with a page for every item, character, creature, place and quest, partly
generated from the game data. It is written in Chinese, with an English edition. Editing guide:
wiki/pages/帮助/编辑入门.md.
npm run wiki # http://localhost:5180/wiki/
npm run wiki:check # check links and that every item and system has a page
npm run wiki:build
Assets. The subset of the Ninja Adventure pack the game
uses is committed in games/openworld/public/assets/na/. To update it, put the full pack in
assets/ninja-adventure/ and run npm run assets.
| Area | Documents |
|---|---|
| Design | design.md · world-model.md · game-design.md · engine-split.md · roadmap.md |
| World and story | lore.md · release-1.md · prologue.md · chapter-1.md · main-quest.md · continent.md · showcase.md · firstlight-village.md · writing.md |
| Game systems | quests.md · npc-sandbox.md · · · · · · · · · · |
main. CI runs the typecheck and tests, and also builds the game without
packages/ai.games/openworld/content, not as engine code.games/openworld/tools/test/demo.test.ts.npm run wiki:check enforces this).Architecture notes and project conventions: CLAUDE.md.
If you use OpenWorld in your research, please cite:
@misc{openworld2026,
title = {OpenWorld: A Large Symbolic World},
author = {{OpenWorld Team}},
year = {2026},
howpublished = {\url{https://openworldrpg.ai/}}
}
games/openworld/public/assets/lsw/): CC0 1.0.packages/runtime/src/fonts/).| Art and interface | ui.md · looks.md · character-art.md · cast/ · crop-art.md · alberic-art.md |
| AI and research | ai.md · byok.md · rsi.md · rsi-experiments.md · paper-eval.md · upstream.md · fresh-pool.md |