27 · 沙盒与模拟深度
27 · 沙盒与模拟深度
模拟深度是独立游戏唯一能对抗 3A 内容量的武器——它用规则生成内容,而非用手工生产内容。 代价是:模拟游戏最大的敌人不是复杂度,是"看不懂"。
1. 模拟深度的价值与代价
| 收益 | 代价 |
|---|---|
| 涌现叙事(玩家自己讲故事) | 可读性风险(玩家不知道发生了什么) |
| 内容量随规则数指数增长 | 调试成本指数增长 |
| 极高重玩价值 | 平衡极难(无法穷举) |
| 社区传播(每个玩家有不同的故事) | 引导极难(无法线性教学) |
| 零边际内容成本 | 前 30 分钟劝退率高 |
核心矛盾:模拟越深,玩家越难理解;越难理解,前 30 分钟流失越高。 解决方向不是降低深度,而是提高可读性与分层引导。
2. 世界模拟的三层
| 层 | 模拟什么 | 例子 | 玩家感知 |
|---|---|---|---|
| 物理层 | 物体、温度、压力、流体 | Noita、Terraria、Besiege | 直接可观察 |
| 系统层 | 资源、生产、生态、经济 | Factorio、Rimworld、Stardew | 通过数值/状态观察 |
| 社会层 | 人物、关系、势力、文化 | Dwarf Fortress、CK 系列 | 通过事件/对话观察 |
建议:从系统层入手(性价比最高),物理层需要强技术能力,社会层需要极强的可读化设计。
3. 涌现叙事的四个发生器
涌现叙事 = 系统交互产生的、玩家能讲述的故事。
| # | 发生器 | 做法 | 例子 |
|---|---|---|---|
| 1 | 角色动机冲突 | 每个角色有需求与性格,需求会冲突 | Rimworld:两个殖民者因为性格不合打架 |
| 2 | 资源稀缺 | 稀缺制造取舍与悲剧 | 冬天到了,食物只够一半人 |
| 3 | 连锁反应 | 一个事件触发多个系统 | 火灾 → 食物烧毁 → 饥荒 → 暴动 |
| 4 | 不可逆损失 | 死亡/毁坏是真损失 | 殖民地成员永久死亡 |
关键:涌现叙事需要玩家能看见因果链。 如果玩家醒来发现"殖民地死了三个人",他不会有故事,只会有困惑。 必须有事件日志、通知、回放,把因果链暴露给玩家。
4. AI 叙事者(Rimworld 模式)
问题:纯随机事件流不成叙事。 解法:一个"叙事者"根据玩家状态与节奏需求,决定何时投放什么强度的事件。
叙事者循环:
1. 评估玩家实力(财富/战力/人口)
2. 评估当前节奏(刚经历危机?还是平静太久?)
3. 选择事件类型与强度
4. 投放
5. 记录,调整下一次
| 要素 | 设计 |
|---|---|
| 强度缩放 | 基于玩家实力指标(而非时间) |
| 呼吸节律 | 紧张 → 喘息 → 更紧张(见 principles/02 §4) |
| 叙事者性格 | 不同叙事者 = 不同节奏风格(温和/随机/压迫) |
| 保底 | 长期无事件 → 强制投放;连续危机 → 强制喘息 |
推广:任何含随机事件的游戏都可以用叙事者替代纯随机。 好处:节奏可控、难度可调、玩家体验有起伏。
5. 可读性:模拟游戏的第一优先级
模拟游戏的死因几乎都是"玩家看不懂",不是"不够深"。
| 手法 | 做法 |
|---|---|
| 状态可视化 | 一切模拟状态都要有视觉呈现(不只是数字) |
| 因果链暴露 | 事件日志、通知、因果提示("因为 X,所以 Y") |
| 渐进披露 | 前 10 分钟只暴露 1–2 个模拟维度,逐步开放 |
| 默认自动化 | 新手用默认策略,老手可深度定制 |
| 瓶颈提示 | 主动指出当前问题(不是让玩家自己找) |
| 回放/复盘 | 能回看"刚才发生了什么" |
| 可暂停 | 模拟游戏必须能暂停思考 |
检验:找一个没玩过的人,让他玩 20 分钟后描述"刚才发生了什么"。 说不清 → 可读性不合格。
6. 玩家自建求解器(特性而非缺陷)
在 Factorio / DSP / Zachtronics 类游戏中,玩家的计算与优化就是玩法本身。
| 设计决策 | 做法 |
|---|---|
| 让规则精确可算 | 数值必须能被玩家推算(不能有隐藏随机) |
| 提供工具 | 游戏内计算器、蓝图、复制粘贴、统计面板 |
| 允许纸笔 | 不要设计成"必须用游戏内工具" |
| 瓶颈即关卡 | 瓶颈的位置就是你的关卡设计 |
| 不隐藏信息 | 所有影响计算的参数都可见 |
反面:如果玩家需要外部 wiki 才能玩懂,那是设计失败(除非这是刻意的社区层设计)。
7. 模拟的规模与性能
| 手法 | 说明 |
|---|---|
| 分层模拟 | 远处/不重要的实体用简化模型(统计模拟) |
| 时间片 | 不同系统不同更新频率(经济 1 秒一次,物理 60 次) |
| 事件驱动 | 无变化时跳过计算 |
| 上限与降级 | 超过上限时降级(合并、消失、统计化) |
| 空间分区 | 只更新玩家附近 |
| 固定时间步 | 模拟用固定步长,保证确定性与可复现 |
设计侧的要求:任何模拟系统都要有**"规模上限与降级策略"**,否则后期必然卡顿。 降级必须在设计阶段定义,不能等到性能爆炸时再想。
8. 反模式
| 症状 | 修法 |
|---|---|
| 模拟很深但玩家看不懂 | 补可视化、因果链暴露、渐进披露 |
| 纯随机事件流 | 用叙事者替代 |
| 事件强度按时间缩放 | 改为按玩家实力指标缩放 |
| 无事件日志 | 玩家不会有故事,只会困惑 |
| 模拟状态只有数字没有视觉 | 补可视化 |
| 必须查 wiki 才能玩 | 补游戏内信息与工具 |
| 不可逆损失但无预警 | 给预警与应对窗口 |
| 无规模上限 | 设计阶段定义降级策略 |
| 模拟用可变时间步 | 破坏确定性;用固定步长 |
| 前 30 分钟暴露所有维度 | 渐进披露 |
| 模拟不可暂停 | 必须可暂停 |
| 把"玩家算不出来"当深度 | 那是信息缺失,不是深度 |
9. 交付物
- 模拟层级表(物理/系统/社会,选了哪层)
- 涌现叙事发生器清单(四类各自的具体设计)
- 叙事者规格(强度缩放依据、呼吸节律、保底)
- 可读性方案(可视化、因果链、渐进披露、默认自动化)
- 规模上限与降级策略
10. 参考
principles/04-emergence-and-depth.md(涌现的发生器)principles/02-core-loop-architecture.md§4(张力-释放)- Rimworld AI Storytellers 设计
- 案例:Dwarf Fortress、Rimworld、Factorio、Noita、Kenshi