示例:Starter
最小可玩示例——所有包的端到端组合演示
最小可玩示例,验证并演示 @overworld-engine/* 全家桶的端到端组合方式。无需任何美术资产
(玩家与 NPC 均为几何体回退)。
pnpm install && pnpm build # 仓库根目录
pnpm --filter starter dev玩法(约 2 分钟)
- WASD/方向键移动(或拖左下角虚拟摇杆,触摸/鼠标均可),Shift 跑 —— 推进任务 「初来乍到」的行走目标,10 米解锁成就。右上角小地图实时显示 NPC(黄点)与 水晶(蓝点),灯光随昼夜循环缓慢变化。
- 走近向导艾拉,按 E 对话;接受委托后开启任务「收集能量水晶」。
- 走近 3 颗漂浮水晶自动拾取入背包,任务完成自动发金币奖励并解锁成就。
- 回去找艾拉 —— 此时对话里出现条件门控的新选项「水晶都找齐了!」。
- 对话打开时移动被输入优先级层屏蔽,Esc 关闭对话。
- 绿色村民沿巡逻路线走动(
@overworld-engine/aiA* 寻路,把向导当障碍物绕行),小地图绿点实时跟踪。 - 右上角 EN/中文 按钮实时切换语言 —— 内容数据存 i18n key,渲染层翻译(见 docs/guides/i18n.md)。
- dev 启动时
@overworld-engine/devtools自动校验全部内容数据(控制台可见报告),写错节点跳转/漏注册效果会直接报错。 - 村民有日程:白天巡逻、黄昏/夜晚回家、清晨在家附近游荡(昼夜相位事件驱动);走近他会发现他绕着你走(动态避障把玩家当移动障碍物)。
- 右下角「编辑器 OFF」按钮打开场景编辑器:放置/拖拽实体、编辑属性、撤销/重做(Ctrl+Z / Ctrl+Shift+Z)、复制(Ctrl+D)、导出场景 JSON。
- 多开几个标签页:各标签页的玩家以半透明幽灵胶囊互相可见、实时同步移动,右上角 👥 显示在线数(BroadcastChannel 传输;换 WebSocket transport 即为真联机)。
代码结构(读这几个文件就够了)
| 文件 | 演示内容 |
|---|---|
src/game/content.ts | 纯内容数据:NPC/对话树/任务/物品/成就,行为全部是声明式引用 |
src/game/engines.ts | 装配点:创建注册表与引擎、注册效果/条件、事件总线接线 |
src/game/gold.ts | 游戏专属系统如何通过效果注册表被内容引用 |
src/World.tsx | SceneShell + Player(键盘+摇杆双输入)+ 昼夜灯光 + 小地图标记 + 逐帧拾取 |
src/ui/* | 无头引擎的 UI 渲染:任务追踪、对话框、Toast、背包、小地图、虚拟摇杆 |
开发模式下 window.__game 暴露了引擎句柄与 advance()(后台标签页 RAF 暂停时手动驱动帧),
供调试与自动化测试使用。