设计游戏状态
变量系统是你赋予世界记忆的方式。
关于变量类型和指令的基础知识,请参阅入门指南:变量。
创作决策:应该追踪什么?
在打开编辑器之前,可以先问自己:玩家需要感受到什么是真实的?
在生存游戏中,我们会需要:生命值、饥饿度、弹药。玩家需可能会生病,有各种状态。在恋爱游戏中,我们肯定会想要有好感度
不需要为每件事都创建变量。AI 能很好地自行处理叙事细节——除非天气在机制上有意义,否则不需要 current_weather 变量。 一个好的判断标准:如果这个值应该影响 AI 接下来写什么,例如生病会影响行动,好感度会影响对方答应和你出去玩还是拒绝,就创建变量。
玩家开始新会话时变量都是默认值,游玩过程中 AI 通过指令修改它,如果你向一个已有玩家在玩的世界添加新变量,现有存档在下次加载时会自动获得默认值。如果删除变量,它会被静默过滤掉。你可以放心地迭代变量设计,不会破坏任何人的存档(但是如果你的前端画面有显示这个变量的东西的话,这会有影响)。
选择合适的类型
四种变量类型(number、string、boolean、JSON)在入门指南:变量中有介绍。设计决策在于何时使用哪种,因为这个选择会影响 AI 与你的世界的交互方式。
Number:当值是数值、需要设置事件阈值、或变化幅度有意义时使用。数值类型的最小/最大值由引擎强制执行,所以你不需要浪费 prompt 空间告诉 AI「别让生命值低于零」但可以告诉ai生命值的等于0等于死亡(┬┬﹏┬┬)。
String:当值是文字——地点、心情、故事阶段。
Boolean:就是TRUE/False当某件事要么发生了要么没发生。行为里的的理想开关。
JSON:当单个变量需要存储结构化数据时:比如说背包空间,用json就是最好的,有属性的道具栏、有多重关系的阵营图、有嵌套进度的任务日志。
编写行为规则——四问公式
入门指南:变量介绍了规则的基础知识,也展示了模糊规则和具体规则的区别。
好的行为规则回答四个问题:
1. 这些值代表什么? 给 AI 一个图例。对于数值,描述每个范围在叙事上代表什么。对于字符串,列出有效状态。对于布尔值,解释 true 和 false 在故事中的含义。
2. 什么触发变化? 具体描述触发场景。对于关系变量,「善意互动增加好感度」就够了。对于 HP,「受到物理伤害减少生命值」也可以。给出的示例越多,AI 越一致。
3. 应该变化多少? 给出幅度范围。小事件应该产生小变化,大事件应该产生大变化。没有这个指导,AI 要么过度反应(每次互动 +20 好感度),要么反应不足(差点死掉才改 2 点生命值)。
4. 极限是什么? 限制每回合的最大变化量。这能防止剧烈波动破坏沉浸感。「每回合变化不超过 15」能让节奏保持自然。
TIP
通常两到四句话就够了。如果你的行为规则比一小段话还长,请简化。AI 很聪明——给它概念和边界就行,不需要给它一本规则书。
如何使用json变量
如入门指南:变量所示,下面我们的示例每位女主角使用独立的数值变量,行为规则指定了幅度范围。这是最简单的方式,对 2-5 个角色效果很好。
另一种方案:用单个 JSON 对象存储所有关系。
{
"名字1": { "信任": 50, "好感度": 0, "相遇?": true },
"名字2": { "信任": 30, "好感度": 0, "相遇?": false }
}当角色很多时更简洁,因为 AI 可以用点路径更新任何角色([relationships.aria.trust: +10]),你也可以通过 merge 添加新角色。代价是:独立数值变量对 AI 更简单易懂,也更不容易出错。
选择独立变量:当你有 2-5 个角色且需要最高可靠性时。选择 JSON 对象:当你有很多角色或需要动态添加新角色时。
道具栏系统
要实现带属性的道具栏,使用 JSON 数组:
[
{"id": "铲子", "name": "铲子", "数量: 1},
{"id": "面包", "name": "面包", "数量": 2}
]地点与场景状态
一个名为 location 的字符串变量(默认值:「starting village」)通常就足够了。AI 在玩家移动时写 [location: set "dark forest"],基于地点关键词的条目注入相应的场景描述。
对于需要追踪场景多个方面的复杂世界,使用 JSON 对象:
{
"area": "castle",
"room": "throne-room",
"time": "night",
"alert-level": "high"
}关于完整的指令语法(包括全部 9 种操作、简写陷阱和 JSON 变量的点路径表示法),请参阅 AI 指令与宏。
常见错误
过度追踪。 不需要为每件事创建变量。如果 AI 能在叙事中自行处理某件事而不需要背后的数字,就跳过变量。你添加的每个变量都是 AI 需要管理的更多状态和需要编写的更多指令。
模糊的行为规则。 「追踪生命值」什么都没告诉 AI。「轻伤减少 5-15,重伤减少 15-25,0 = 死亡场景」告诉了 AI 一切所需。行为规则是变量能用和被忽略之间的分水岭。
数值变量忘记设 min/max。 没有边界,AI 可能把生命值推到 -47 或金币推到 999999。每个数值变量都设最小和最大值。引擎自动限制——这是免费的保险。
不测试幅度。 玩你的世界 10 个回合,检查数字是否感觉合理。如果好感度在三次互动中从 15 跳到 80,你的幅度范围太大了。如果 20个回合对方都对你爱答不理的好感度,那就太难攻略了`(>﹏<)′。
ID 对 AI 不友好。 使用简单可读的 ID,如 health、player-gold、aria-trust。避免空格、特殊字符,或可能与内置宏冲突的名称(user、char、time、date)。
延伸阅读
完整变量 schema → World Spec: Variables
