腾讯游戏开发精粹
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第4章 船的物理模拟及同步设计本章相关内容已申请技术专利。

作者:周茗琪

摘要

船只模拟在游戏中比较常见,无论是帆船、汽艇还是游艇,在模拟上都可以简化成动力、浮力和水的阻力的叠加。如果是匀速行驶在平静海面上的大船,则可以进一步忽略水的阻力。如何近似地计算这些力,从而在物理引擎的模拟下有逼真的表现,是一个难点。

最常见的方法是将船底离散化成若干采样点,分别采样水面高度,然后积分入水高度,得到浮力。这种方法忽略了水中其他力的存在,得到的结果不够真实。另一种方法是利用流体力学公式,计算船在水中受的力。这种方法则过于复杂,不适合应用于对实时性要求高的地方,比如游戏。本章从一个全新的视角,将物体在水中受到的力分解成与入水体积相关的浮力、与速度相关的升力、与入水体积变化相关的阻力,兼顾了高效与真实度,非常适合在游戏中使用。

本章的算法在《无限法则》中使用,能适应各种天气的水面,也能充分发挥各种类型船只的特点。

本章的第一节介绍了浮力系统,包括物体入水后受到的浮力、移动中产生的升力以及水的两种阻力:拉力和拍击力;第二节介绍了引擎系统,包括如何模拟船只的动力和向心力;第三节介绍了如何将前两节的内容应用到实际工程中,包括类的设计思路以及为什么要这样设计;第四节介绍了怎样更新浮力,使得在多人游戏中第一方(本地玩家)和第三方(非本地玩家)都能有自然、合理的表现;最后一节则对本章内容进行了总结。