Back to projects

Project / Oct 1, 2025

Modex

一个受 Reigns 启发的 LLM 选择式叙事系统,动态生成剧情、选择、状态变化和插图

Role
Solo project: idea, code, UI, iteration
Stack / Topics
WebReactLLM游戏讲故事

上手试试: https://modex.novaspire.io/

项目概述

Modex 受 Reigns 启发,把「左右选择 + 多状态平衡」和 LLM 动态叙事结合起来。玩家选择一个剧本后,系统会根据当前状态、最近历史和剧本规则生成新的遭遇场景。每个选择都会改变多个 Stat,状态走到极端时会触发更高风险的特殊事件,最终由 LLM 根据玩家一路做出的关键选择生成结局。

核心流程

  1. 选择剧本:每个剧本定义主题、世界设定、时间单位和一组 Stat。
  2. 生成遭遇:后端把当前 Stat、时间、最近历史和语言偏好发给 LLM,生成场景、角色标签、两个选择、选择反馈和插图提示词。
  3. 执行选择:前端把选择对应的 Stat 变化写入本地会话,并记录历史。
  4. 预生成下一幕:如果开启 preemptive generation,系统会提前为两个可能选择分别生成后续场景,减少玩家等待。
  5. 状态崩溃与结局:当任一 Stat 到达 0 或 100,系统会根据最终状态和最近历史生成带因果回溯的结局故事。
  6. 插图生成:场景生成后,系统用场景里的 illustration prompt 调用 Replicate / FLUX 生成木刻塔罗风格插图。

怎么做的

叙事生成用 AI SDK 的 generateObject,再用 Zod schema 限制输出格式。一个场景必须包含 situation、character、choices、statChanges、feedback 和 illustrationPrompt,不然前端就没法稳定渲染。

Prompt 里会要求每个选择影响 3 个 Stat,而且必须有代价,避免出现一眼就知道该选的“纯好选项”。最近 7–8 条历史会压进 prompt,让新场景能接住前面的选择。某个 Stat 低于 20 或高于 80 时,还有机会触发 bonus question,给玩家一次纠偏机会,但也会带副作用。

前端用 Dexie 保存本地 session。玩家读反馈的时候,后端会提前生成下一幕,尽量少等。插图这边是把 LLM 给出的 illustration prompt 加上统一风格,再交给 black-forest-labs/flux-schnell

技术栈

  • React + TanStack Router + TanStack Query
  • Dexie 本地存档
  • Hono + ORPC 后端
  • AI SDK + OpenRouter / Gemini
  • Replicate / FLUX image generation

一个例子

比如克苏鲁风的疯狂山脉剧本,要平衡的几个 Stat 就是士气、补给、孤立无援和禁忌知识。每个选择都会同时推动几个值,你很难只占便宜不付代价。

我做 Modex 是因为喜欢 Reigns 里那种一直在做取舍的感觉。把静态剧本换成 LLM 即时生成后,我想看看这种取舍能不能多撑几局,不那么快重复。

Siyuan · 软件 / 游戏 / AI 工具 © 2026 Siyuan