NEW LIFE / AI 游戏与交互世界
未醒之城
@ Solo King
#AI原生游戏#AI-NPC#互动叙事#鲁迅文学#Three.js
[ 团队 ]
- 陈颖萤
> 提交时间:2026/9/24 03:07:40
[ 项目介绍 ]
未醒之城是一座可以漫游、也可以「入戏」的鲁迅文学梦境。我们把《呐喊》里的《孔乙己》《狂人日记》《呐喊·自序》做成一座 3D 小镇:咸亨酒店、狂人之巷、无声铁屋。玩家可以自由漫游、阅读原文、按住空格切到「写下它的人」的现实层;也可以点「入戏 · 开口说话」,成为故事里的一个人,用自己的话改变这一幕。
【三幕入戏】
第一幕 · 温酒的伙计:你是咸亨酒店柜台里的伙计。酒客在笑孔乙己,你每回合说一句话:替他说话、跟着起哄,或者和他谈「茴」字。谁笑了、孔乙己的体面、他用哪一句原文回你,都随你的话改变;从没取笑过他的伙计,结尾可以替他还上十九个钱。
第二幕 · 字缝:你是《狂人日记》里写日记的「我」。你对「从来如此」质疑得越清楚,村人越当你疯了,窗后的眼睛越多。结局是「早愈,候补」「救救孩子」或「难见真的人」。
第三幕 · 呐喊:铁屋里睡着闰土、阿Q、单四嫂子、华老栓等《呐喊》人物,你只能喊三声。每一声喊醒了谁、给人希望还是只是噪音,决定铁屋墙上的裂缝能否打开。
3D 舞台实时反应:酒客随笑声前仰后合、转头看你;巷子的窗里亮起一双双眼睛;铁屋里醒来的人坐起,亮起暖光或冷光,裂缝随希望变宽。结局记进玩家的阅读书签,可下载。
【AI 原生的核心:AI 不替鲁迅说话,只替世界做判断】
- 每回合调用一次 TypeSafe 的 Jev 模型(System One)。服务端把场景、上一句台词和玩家的话作为状态,问一组封闭的类型化问题:立场(多选一)、体面 / 质疑 / 唤醒程度(评分)、每个 NPC 会不会笑、会不会当你疯了(概率)。
- NPC 只能从预先摘录的鲁迅原文里挑一句回应;Jev 拿不准(置信度低于 0.25)时,对方就「没有回答」。页面从不生成冒充鲁迅的台词,每一句都标出处,并与《呐喊》原文逐字核对。
- 沉默就是原著:三幕都不开口,演出的就是鲁迅写下的结局。结局由明确规则决定,可解释、可复现。
- 实测每回合约 1,150–1,500 个输入 token、0.5–1 秒;完整玩一遍三幕约 0.0006 美元。
【技术实现】
React 19 + Three.js 程序化建模的小镇与舞台;Vite 中间件作为本地模型服务:密钥只在服务端,前端只发送「场景、回合、一句话」,并有同源校验、字段白名单、回答净化、缓存与限流。MiMo 语音合成为角色配音。19 个 Node 单元测试(接口安全、游戏规则、原文逐字比对)与 7 个 Playwright 端到端测试。
【体验方式】
在线链接是静态版的漫游体验(入戏界面可以用「沉默」看原文演完)。完整的 Jev 入戏需要在本地运行服务端(npm run dev 并配置 TYPESAFE_API_KEY),现场可演示。
[ 项目图集 ]