一个以 AI 驱动 NPC 为核心的游戏孵化器 —— NPC 会记住、会回应、会把流言传遍全镇。 当前题材:像素小镇推理(「银怀表失窃案」),后续将在此引擎上探索不同题材。
复古顶视角像素小镇,玩家自由走动,靠近 NPC 按 E 用中文聊天。NPC 由 LLM 驱动(OpenRouter 上的 qwen/qwen3.7-plus),聊天会改变世界:好感、情绪、流言传播、秘密揭示。
client/ Vite + Phaser 3 + TypeScript(游戏前端)
server/ FastAPI + openai SDK(Python,LLM 代理 → OpenRouter,藏 API key)
cd server
python3 -m venv .venv
./.venv/bin/pip install -r requirements.txt
export ANTHROPIC_API_KEY=sk-ant-... # 不设也能跑,NPC 会给兜底提示
./.venv/bin/uvicorn app:app --port 8787 --reloadcd client
npm install
npm run dev浏览器打开 http://localhost:5173 。Vite 已把 /chat 代理到后端,无需处理 CORS。
- 方向键 / WASD:走动(撞墙/障碍会停)
- 靠近 NPC → 头顶出现「按 E 对话」→ 按
E - 底部输入框打字,回车发送(支持中文输入法)
Esc:结束对话恢复走动
| id | 角色 | 性格 |
|---|---|---|
| blacksmith | 铁匠 老格 | 倔脾气、嘴硬心软 |
| tavern | 酒馆老板 莉拉 | 热情、消息灵通、爱八卦 |
| wanderer | 神秘旅人 灰 | 含蓄、爱用隐喻 |
人设在 server/personas.py,前端位置/外观在 client/src/npcs.ts(id 需一致)。
- ✅ 走动 + 碰撞、邻近检测、中文输入、SSE 流式打字机气泡、多 NPC 独立人设与会话历史
- 🔜 Phase 2:NPC↔NPC 社交 / 流言传播、情绪立绘、物品交付、记忆持久化、多人联网
(
ChatController的 history 分桶与personas.py已为记忆/世界状态预留接口)