← 返回首页
《王国之泪》:物理交互与声音反馈
依据 GDC 2024 开发者采访与现场报道、声音部分记录及原幻灯片整理,聚焦可组合物体、移动预期与声音反馈;末节另附任天堂开发者文章的补充案例。
核心观点
玩家可以任意组合物体,系统就要让「如何运动」与「听起来怎样」共同遵守可理解的规则。
原标题Tunes of the Kingdom: Evolving Physics and Sounds for 'The Legend of Zelda: Tears of the Kingdom'
作者简介 Takuhiro Dohta、Junya Osada、Takahiro Takayama · 任天堂技术总监、声音主程与物理主程。
任意组合物体,意味着不能逐个预写结果
- 组合结果不由设计师逐个预写:「究极手」允许玩家把不同部件组成装置;若每一种组合都需要设计师预先判断它是什么、再指定怎样运动,可组合范围很快就会超过制作能力。团队因此把运动能力放到部件与连接关系中,让组合后的行为由这些规则产生。
- 早期混合动画与物理的方案会出问题:动画驱动的物体按预设速度强行移动,在交互中近似无法被推动的无限质量物体,齿轮、门等组合容易出错。
- 让这类运动也进入物理系统:团队转而让动画驱动的运动进入物理系统,使它们能够相互施加影响。
- 刚体仍是基础:这不意味着场景里所有东西都不是刚体,恰恰相反,物理刚体仍是基础;变化在于它们如何被驱动,以及能否响应别的物体。
一个车轮,先要真正把动力传到地面
轮子、马达、轴各自承担职责
- 车轮拆成三个刚体:轮子、马达与轴各自承担职责。
- 动力经轴与摩擦传到地面:马达的转矩经由轴传到轮子,再由轮地摩擦产生推进;载具运动来自这些部件的相互作用,而不是检测到「四个轮子加木板」后播放统一行驶行为。
- 加入悬挂保证持续接地:让车辆在不平地面上可靠前进,需要足够持续的接地;团队加入悬挂,让部件间存在受约束的相对运动,改善轮子贴地时间。
- 限制移动范围:避免连接无限摆动。
- 突破来自物理程序与美术共同讨论:相关方案由物理程序与负责外观的美术一起得出。
便携锅的关节,为什么能变成机器部件
- 关节因「能放在斜坡上」而加入:便携锅需要能放在斜坡上使用,因此底部加入适应地面的关节;玩家后来把这个关节用于悬挂、机械臂等装置,功能超出了烹饪物品最初的用途。
- 稳定物理性质让玩家重新分配职责:这个例子说明,当部件拥有稳定的物理性质,玩家可以重新分配它的职责;开发者不必先为每一种用法命名,但底层属性需要在新组合里仍然成立。
物理规则一致,参数仍要符合玩家的感受
看得清的木板,不能因此重得不合理
- 外观比现实厚会带偏质量:游戏中的木板、石板等会为了可见性与操控做得比现实厚;若直接按外形体积与材质计算质量,它们可能过重,破坏玩家对这种物体的预期。
- 同时调整外观与参数:团队因此一并修正外形与数值。
- 判断标准是操作预期而非公式:高山在会后采访中还谈到拿起现实板材、对照游戏手感的做法;判断标准不是「公式已经正确」,而是玩家能否由外观形成可验证的操作预期。
水阻力也要体现运动方向
-
统一衰减无法表现入水差异:简单地向所有方向统一衰减速度,难以表现物体进入水中的差异。
-
按运动方向的投影面积计算水阻力:报道记录了团队依据运动方向的投影面积计算水阻力的处理,让不同姿态的物体与水发生更合理的作用。
-
小结:自由组合的乐趣依赖规则可预测,但可预测不要求所有数值照搬现实;需要保留的是玩家反复试验后能学会的关系。
声音也从部件生成,而不是识别整台机器
- 马车声音由部件组成,而非整套录音:声音部分给出的马车案例由轮子滚动、车体细小振动与吱嘎、连接链条等声音共同组成,没有直接套用一段完整马车录音。
- 桨船同样组合部件声音:桨船由轮胎、木材与出入水面的声音共同组成。
- 系统读取刚体运动选择声音:系统依据刚体的尺寸、形状、材质选择声音,这样玩家造出开发者没有预制过的装置,仍能听到与部件运动相符的反馈。
- 物理决定发生什么,声音解释结果:物理决定发生什么,声音把发生的结果解释给玩家。
传播方式要与周围空间一致
- 声音要体现距离与遮挡:声音不能只在物体上正确触发,进入耳朵时还应体现距离与遮挡。
- 用体素信息寻路传播:现场记录说明声音传播使用世界中的体素信息寻路,可以响应门开关等引起的路径变化。
- 路径查询朝向林克,监听位置按镜头计算:路径查询朝向林克,声音监听位置则按镜头计算。
- 同一种机械声在不同处有不同听感:这些处理让同一种机械声在墙后、门口和开阔处具有不同听感,为观察世界提供线索;不必给每个装置与房间单独编写一套播放逻辑。
官方补充:车轮在转,为什么不该播放滚动声
- 初版用角速度判断滚动会误判:任天堂另一篇开发者文章给出了完整的失败与修正过程;初版用角速度大于零判断滚动,但轮胎原地空转时也满足条件,结果画面是打滑,声音却像正常前进。
- 先检查接触点是否滑动:程序员改为先检查接触点是否滑动;若物体移动却没有滑动,再归为滚动。
- 同一方法覆盖多种物体:相同方法可以覆盖轮胎、车轮、圆木和苹果等不同物体,不需要逐种特殊处理。
- 打滑声帮助诊断装置:车辆上坡停住时,这个区别尤其重要;仅看画面,玩家可能不知道是装置损坏还是动力不足,听到轮胎打滑,就能理解轮子仍在工作,只是没有有效向前推进。声音由装饰变成了诊断自己装置的反馈。
设计启发:检查未知组合是否仍能解释自己
✦ 一句话总结:评审组合系统时,应同时检查运动与反馈。当装置不按预期工作,玩家是否能从连接、接触和声音推断原因?只有成功时壮观、失败时不知所措的系统,很难支持持续实验。
本文由 GPT-6 Astra 于 2026/09/20 生成,由 DeepSeek V4.1 Flash 后续修改