把小说变成能走进去的像素世界 —— 一个可交互叙事 demo + 面向创作者的世界可视化编辑器。
在线看(两个入口,按你想看什么选):
手机可直接打开(建议横屏);编辑器请用电脑。在线版能看到几乎全部内容,但改动存不下来——详见下面的对比表。
两层东西,住在同一个仓库里:
- 《07 号调查员》 —— 一个可交互的 2D 俯视像素叙事 demo。2095 年,AI 协同文明 + SCP 风「异常区域」。走进去、和 NPC 对话、收集线索、解锁后续篇章。克制、悬疑、档案体。
- 凤翎工坊编辑器 —— 做出这个 demo 用的、面向创作者的世界可视化编辑器。地图、NPC、交互事件、玩法机制全部可视化配置,还能用自然语言命令编辑器。
参考了 LDtk / Tiled 关卡编辑器的思路,但目标是「不懂编程也能用」。纯前端 + 轻量 Python server,无构建步骤、无 npm,clone 下来就能跑。
前置要求只有一个:Python 3.8+(macOS 自带,Windows 从 python.org 或微软商店免费装)。不需要 pip 装任何东西,不需要 node/npm。
git clone https://github.com/roam-bit/fengling-workshop.git
cd fengling-workshop
python3 server.py # 启动本地 server(端口 8131,仅用 Python 标准库,零依赖不用 pip)然后浏览器打开 **http://127.0.0.1:8131**。
没装 git?直接点仓库页面的 Code → Download ZIP,解压后进入目录跑
python3 server.py一样用。 macOS 也可以直接双击启动凤翎工坊.command(ZIP 解压的用户若双击无效,用上面的命令行方式);Windows 用python server.py。
- 只想看 demo? 进去就是世界地图,点亮的区域走进去玩。
- 想试编辑器? 打开
http://localhost:8131/index.html?edit=area_city。
不装本地也能看到绝大部分,只有「写操作」需要本地 server(GitHub Pages 是纯静态托管,没有后端):
| 功能 | 在线(GitHub Pages) | 本地跑 |
|---|---|---|
| 平台首页、项目卡 | ✅ 完整 | ✅ |
| 玩游戏:世界地图 / 4 篇章节 / NPC 对话 / 线索 / 道具 / 机制触发 | ✅ 100% 完整 | ✅ |
| 编辑器界面:打开、拖物件、点 Inspector、看机制卡 / 语义层 / 模板 | ✅ 完整可见可操作 | ✅ |
| 💾 保存改动 | ❌ 提示「server 未运行」,刷新即失 | ✅ 写回 chapters.json |
| ⌘ AI 自然语言命令 | ❌ 需后端调用模型 | ✅ |
| ➕ 新建项目 / 套用模板 | ❌ 需后端写文件 | ✅ |
| 🧪 E2E 自动化测试 | ❌ | ✅ |
一句话:在线随便看、随便玩;想真正动手改,clone 下来跑。
- 澜洲大陆世界图:纯 DOM 高清 HUD + 塞尔达式战雾,小说写到哪、地图亮到哪
- Phaser 像素房间:键盘移动或点击 BFS 自动寻路 + 撞墙碰撞 + 走近 NPC 对话 + 镜头跟随 + y-sort 遮挡
- NPC 系统:行为枚举(静止 / 游走 / 巡逻)+ 条件对话页("它记得你来过")
- 触发器 + 指令解释器:走近 / 进入 / 离开 / 自动触发 × 9 种指令积木(旁白 / 分支 / 设标志 / 条件判断 / 记线索 / 给道具 / 传送 / 特效 / 等待)
- 玩法机制:调查日志(线索渐进解锁)+ 叙事道具(找钥匙开门闭环)
- 可视化拖拽:建筑 / 物件 / NPC / 传送门所见即所得,NPC 行为·对话·道具·触发器全部表单配置
- ⌘ AI 命令层:对编辑器说人话 —— 「把市集大棚放到管理局总部附近」「让陈伯巡逻」,系统自动搜合法位、避免压街、保证连通性
- 语义层:街道 / 地形是「原始事实」,碰撞层是「编译产物」—— 从根上消灭「楼压街 / 空气墙」类问题
- 一键发布:发布前自动校验(出生点可达 / 出口连通 / 数据完整),通过即生成只读分享链接,读者零安装打开就玩
| 层 | 技术 | 说明 |
|---|---|---|
| 世界地图 | 纯 DOM | 高清矢量 HUD + 渐进战雾 |
| 游戏房间 | Phaser 3 | 网格移动 / 碰撞 / y-sort / 镜头跟随 |
| 数据 | chapters.json |
单一数据源:篇 / 房间 / NPC / 对话 / 触发器 / 玩法 / 语义层 |
| 后端 | server.py(Python 标准库) |
静态服务 + /api/save-chapter + /api/command |
| AI 命令层 | DeepSeek(可选)+ 规则解析兜底 | 自然语言 → 意图级命令 |
| 美术管线 | Python + Pillow | AI 生图 → 绿幕抠图 → 32 色量化 → 入库 |
编辑器 UI 和 AI 命令层是同一套 /api/command 的两个客户端 —— 意图级命令("放什么、在谁附近"),坐标搜索 / 合法性验证 / 碰撞编译全部归服务端,调用方不碰坐标。
编辑器的「⌘ AI 命令」能听懂自然语言。接 DeepSeek 后能听懂任意说法("安排到那一带""原地待命""搁…边上"都行),不接也有内置规则解析器兜底(听得懂固定句式)。
cp .ai_key.example .ai_key
# 把 .ai_key 内容换成你的 DeepSeek API key(https://platform.deepseek.com/)
# 可选:在 .ai_model 里写模型名,默认 deepseek-v4-flash不配 key 也能用 —— AI 命令会自动降级到规则解析,功能不中断。
python3 test/e2e_smoke.py # 200+ 项端到端确定性检查(需先起 server)用 headless Chrome + Python 对真实 server 做确定性验证,覆盖:数据完整性 / 碰撞连通(BFS)/ 拖拽存盘往返 / AI 命令落盘 / 语义编译 / 发布门 / 读者模式等全链路。
index.html 主程序(游戏 + 编辑器,单文件)
server.py 本地 server + API
chapters.json 游戏数据(单一数据源)
phaser.min.js Phaser 引擎(本地化,离线可跑)
art/ 美术管线(处理脚本 + out/ 量化素材 + 生图指南)
docs/ 技术文档(三系统设计 / 美术生图规格卡)
test/e2e_smoke.py E2E 冒烟测试(200+ 项)
AGENTS.md 给 AI 编程工具的项目地图(用 Codex / Claude Code 改这个项目前先读它)
启动凤翎工坊.command macOS 一键启动器
这个项目就是全程 AI 辅助开发的,也为"被 AI 修改"做了准备:
- 改剧情 / 地图 / NPC / 对话 / 机制:不用碰代码——打开编辑器(
?edit=章节id)可视化改,或直接编辑chapters.json(单一数据源)。 - 用 Codex / Claude Code / Cursor 改代码:仓库根目录的
AGENTS.md是给 AI 工具的项目地图(架构、改法配方、验证方式、已知坑),AI 会自动读取它。直接下命令即可,例如「给陈伯加一句台词」「做一个走近就触发旁白的机制」「加一个会巡逻的 NPC」。💡 server 自己在终端跑着别关(
python3 server.py是常驻进程),不要让 AI 代跑——它会一直卡在那等。改完前端刷新浏览器即可;改了server.py才需要重启。 - 改完怎么验证:起 server 后跑
python3 test/e2e_smoke.py,200+ 项自动检查全绿即可放心。
代码以 MIT License 开源。Phaser 引擎同为 MIT。
《07 号调查员 / 凤翎》的世界观、剧情、美术设定为作者原创,仅作 demo 内容展示。


