概述:物理引擎
传统游戏引擎的物理系统一般是指碰撞及刚体动力学。
近年来游戏引擎用来做高级物理模拟,包括实时流体机制以及可变形物体的模拟。
碰撞和刚体动力学的关系:
Jason:碰撞检测系统是任何游戏引擎的核心元件之一。碰撞检测能确保物体之间不会互相穿透。碰撞检测通常紧密地和物理引擎整合,游戏引擎的”物理”一般指刚体动力学(rigid body dynamics)模拟,碰撞检测系统也可以不结合动力学模拟,仅单独使用,许多游戏引擎甚至没有”物理”系统。
刚体和动力学的定义:
刚体(rigidbody)是这理想化、无限坚硬、不变形的固体物体。
动力学(dynamics)是一个过程,计算刚体怎样在力(force)的影响下随时间移动及相互作用。
物理系统的存在意义
物理系统可以实现的功能:
- 碰撞检测、射线检测、触发体积(trigger volume)等。
- 模拟物体受力运动、弹簧质点系统(spring-mass system)、复杂机器等。
- 物体破碎效果、布娃娃死亡效果、布娃娃肌肉模拟、布料模拟、头发和悬挂道具模拟等。
- 流体模拟、水面和浮力模拟、声音传播模拟等。
物理对游戏的影响:
对设计的影响:
- 可预测性(predictability):物理模拟比手工动画有更多不可预测性。
- 调校及控制:需要花很多精力调校各项物理参数来弥补和优化操控性。
- 意外行为:有时物理系统会产生预料之外的”特性”。
对工程的影响:
- 工具管道:碰撞物理管道需要花时间建设和维护。
- 用户交互:玩家怎么和物理物体交互。
- 碰撞检测:用于动力学模拟的碰撞模型需要比非物理驱动的模型更精细。
- AI:使用物理模拟的物体后,会影响AI判断和寻路。
- 角色动画和木偶:带有动力学模拟的角色播放动画时,可能产生不可预知的后果。(抖动、弹飞等)
- 网络多人游戏:不影响游戏性的物理效果可以在灭个客户端独立模拟。但是影响游戏性的物理必须在服务器上模拟。
- 记录和回放:记录回放功能对Debug很有帮助,也可以作为一个有趣的游戏功能。含动力学模拟的游戏此功能更难实现。
对美术的影响:
- 额外的工作:需要在物体中加入质量、摩擦、约束等动力学模拟参数。
- 更复杂的内容:有时需要为一个物体建立多个不同版本,例如完整物体和破碎的物体。
权衡:
把物理系统加入游戏,通常会为真实性而牺牲很多操控性,并带来不可预知的后果。
所以在一些游戏中加入物理模拟是不必要的。如果要使用物理模拟的话,应当控制模拟行为确保物理系统不会影响游戏性。
(END)