ID:

1464

Date:

2012-10-20

From:

设计策划:物理引擎

设计策划:物理引擎

有许多问题问到游戏的物理引擎系统如何运作。是会像银河飞将那样的“轻物理引擎”,还是像更近时期游戏中那种完全严格遵守牛顿物理的模式,或者是它们之间的某种平衡?克里斯·罗伯茨最近在一个论坛帖子中进行了说明。我们觉得也应该和所有人分享一下这些内容:

因为我在全职做游戏之前曾在曼彻斯特大学学习物理,所以我可以向所有人保证,物理模型是完全精确和全刚体模拟的。我知道这些,是因为代码是我写的。

也许我在演示里表现得较好,但如果你正在高速飞行,然后把速度设为0,你就会看到前上部的推进器调整方向进行喷射,让你减速。如果 你看了演示,你就会注意到在我减速靠近舰桥的时候,大黄蜂级存有一些动量。也许真实情况会和屏幕上显示的有点不同,但我可以保证,大黄蜂级不会突然停下来。如果你挂载了更多的载荷(例如更多的武器),你就会更明显地感到这个效果。

不会有阻力模型,一切都会像在太空里一样。

除此之外,还有反向推力(力回馈?)应用在物理引擎内部,如果你手放在手柄上就能感觉得到。如果你仔细去看,还能看到这里的惯性:飞船不会立即停止旋转或俯仰。这也是为什么你不会真的看到推进器完全精确喷射的一个很好的原因。

直观描绘合适推进的问题是,它看上去其实非常可怕(相信我,我一开始就是这么做的,而且换回去也很容易,因为我其实是做了更多的工作,让视效更好)。

原因是因为太空里没有阻力,所以哪怕大黄蜂级(或任何太空船)进行一点点喷射,它都会转到你进行反向喷射为止。所以实事上飞控系统要一直进行微小的喷射和反喷射,来完成飞行员的操作。结果就是,推进器进行微量的喷射和停喷,而你就不会获得一般应用推进的良好感觉。我觉得你应该知道我喜欢让事物看着很酷(好啦,我们都知道你基本上不会以二战的空速去进行太空格斗,但这要比真实情况有意思得多),所以实际情况是,系统仍做得非常精确,但我用了角度/线性速度三角函数来控制喷射的视觉表现。以下是我的代码注释:

//注意thrustGoal是线性速度函数(载具的期望速度-当前速度
//及旋转速度,而不是实际的线性及角度加速度/推力。//这是因为,虽然不精确,但持续喷射看着更酷
//让你有个视觉线索,了解载具正在如何进行运动/速度失量的修正。
//如果我们只用加速度作为期望速度的修正参照,那么推进器喷射
//就会不断喷喷停停,特别是在《银河飞将》那样的太空中时,
//那里没有大气层来提供阻力。
//
//当然,如果你将真实的加速度传入SetThrustGoal,那你就有精确的 //推进器工作的视觉表现了

希望这能解释清楚现在的困惑!

我承认飞船不需要机翼或前置风扇,但这背后的概念是大气层内飞行可行(这不是承诺早期版本就会有行星内容,但会向着这个方向扩展),并能让内存承受。外加这看起来/感觉上去真酷!

克里斯·罗伯茨