发动机!或什么是游戏物理学



在创建游戏时,开发人员不仅必须在力学上找到平衡,而且还要在物理上找到平衡。现实还是街机?一般来说,这样的人。最主要的是粉丝和娱乐。必须创建您的世界的基本定律,并说明在天花板上行走的能力是一种机制,而不是错误。

游戏的物理机制应该是多么复杂,有什么样的游戏,以及开发者在实施游戏时会采取的技巧-精简翻译。

电子游戏中的物理学通常被认为是理所当然的。如果角色跳跃,他将不得不着陆,而不是飞入太空(尽管在《天际》中游戏时间相当长,但这仍然可能发生)。我们希望游戏中的对象能够像生活中一样表现(我们不考虑错误)。

通过几行代码,编程物理学可以归结为一种或两种方法。或者,可能是一个具有单独的物理引擎(例如HavokPhysX的复杂系统,其中包含数百万行代码。无论复杂程度如何,游戏物理学都分为两类:固态物理学和软体物理学。



大多数2D和3D游戏都需要固态物理。软体物理学描述了力以各种形式(例如,标记)作用于对象上的作用。显示柔软的身体要困难得多,因此使用这种方法的频率要少得多。

游戏物理的重要作用


游戏物理有不同的用途,但最重要的是直观和有趣。如果物体的行为异常,将很难理解游戏规则。

如果FIFA 20中的球每次在随机方向上弹跳,就不可能进球。开发人员正在尝试根据球的轨迹,速度和现实世界中的其他因素来重建球的反弹。让玩家直观地了解如何处理球或其他物体。顺便说一句,《 FIFA 20》有很多不好的评论,正是因为它的物理性能不如球迷所期望的那样。


而且,不需要游戏就严格遵守自然规律。最主要的是,游戏应该很有趣,并且实施实际的物理定律会破坏整个体验。想象一下侠盗猎车手V具有苛刻的地面物理效果(但是如果您真的愿意,可以放一个特殊的mod)。即使是轻度的高速事故也将致命,并消灭步伐和气氛。不太好玩。


开发人员必须在有趣的游戏和具有逼真的物理效果的游戏之间找到适当的平衡。它通常取决于目标受众。赛车就是一个很好的例子。

许多人喜欢Arcade Racing(需要速度),在这种情况下,削片机的触摸或急转弯都会弱化机器的控制。其他人则喜欢逼真的赛车模拟器(Gran Turismo)。

但是,即使创建模拟,开发人员也试图吸引新的受众-Gran Turismo依靠照片写实(在某种程度上说是可行的)。但最后,Polyphony Digital添加了街机模式以占领更大的市场。

固态物理学


说到游戏物理学,我们通常是指刚体物理学(RBP)。它描述并复制了适用于固体物质的物理定律。FIFA 20中的球是由游戏物理控制的实体。

我们看Pong这样的2D游戏还是Skyrim这样的3D游戏都没关系-大多数游戏都具有线性固态物理学。



2D游戏物理


以傍为例。两个固体(球和球拍)一次又一次地碰撞。这听起来并不令人鼓舞。电子游戏的祖父没有现实的物理学。

首先,程序员忽略了重力,摩擦和惯性。只有一个球以恒定的速度来回运动。
其次,无法准确计算出球拍的反弹角度。球完全忽略了反射定律:如果不考虑旋转和其他因素,则球在表面上的入射角等于球从其反弹的角度。在乒乓球中,反射角由接触时球与球拍中心的接近程度决定。原始轨迹并不重要。不管球的运动方向如何,玩家都可以完全改变其惯性。

在以后的版本和其他类似游戏中,更多地考虑了球的轨迹。例如,在分组讨论中。但是即使没有现实主义,否则有趣的游戏就会变成无聊而困难的游戏。



带有炮兵的游戏是第一个在其力学原理中考虑重力和阻力的游戏。用户轮流发射炮弹,箭和导弹以摧毁敌人的基地。这种游戏考虑了半现实的弹道,即-发射角度,重力,抗风性和原始速度。但是同样,设计师们并没有像现实世界那样去做所有事情。他们的目标受众是普通百姓,而不是弹道专家。

固体(主要是壳)的行为取决于多种力。根据它们,动画发生了变化。箭头和火箭是在类似游戏中为实体设置动画的一个很好的例子。飞行过程中,弹丸的平面可能会发生变化,箭头保持笔直。实体系统中对象上的两个点将始终彼此保持相同的距离。

像《大金刚》和《马里奥兄弟》这样的游戏。强烈影响了3D项目的物理学。马里奥通过基本物理定律结识了朋友-重力,动量和惯性。跳跃成为主要机制,并永远存在于游戏行业中。



弹跳对象应后退。唯一的问题是它会上升到多高以及下降到多快?重力在游戏中应该有多现实?

如果马里奥(Mario)遵守物理的真实定律,他将永远不会超过第一级。为了有趣的游戏玩法和玩家的期望,必须改变平衡。

系列中的其他游戏扩大了这些界限-出现了双跳。在此系列中,它首先被添加到Super Mario 64中,但在1984年以前在Dragon Buster使用

双跳开始被积极地用于平台游戏中(有时甚至过多)。而且它仍然存在于许多现代项目中,包括3D。例如,《鬼泣》和《虚幻竞技场》。

3D物理


3D游戏中的物理与2D项目中的物理没有太大区别。三维(Z轴)和物体由多个实体组成的事实使计算变得复杂。

在大多数2D游戏中,开发人员仅需要处理仅几次实体碰撞而来的数据。例如:马里奥跳上Kupu。马里奥可以触摸Kupa的任何部分。根据接触点的不同,Coop会藏在贝壳中,或者Mario会丧命。无论如何,我们都在谈论单一的触摸。



在3D游戏中,多个实体同时碰撞。在《神秘海域》中,当德雷克爬上一块岩石时,该程序至少监视他的胳膊和腿-各个固体。他可以用一只手或两只手弹跳并上楼梯,动画将有所不同。

在3D游戏(和某些2D游戏)中,角色的四肢被分成多个通过关节连接的实体。即,人的手的模型包括前臂和手,它们通过腕部连接并且通过肘关节附接到肩膀。布娃娃物理学对此进行了描述(来自英语布娃娃-布娃娃)。


图片:加州大学河滨分校

(关节)的化合物是在游戏引擎的骨骼动画系统中创建。每个实体都必须根据某些规则移动才能看起来逼真。为了计算运动,程序员使用各种技术。最著名的是Featherstone的算法,这是一种限制性方法,可以防止肢体随意伸出来。

还有其他使用布娃娃的方法:Werle集成(Hitman:代号47),逆运动学(光环:战斗进化和半条命),混合布娃娃(未知:Drakes Fortune等)和程序动画(荣誉勋章系列) )



所有这些技术的目的都是确保身体不会像软布娃娃那样迅速弯曲,不会掉落在地面上。合并到模型中的实体的运动受到限制,因此它们的行为可预测。

让我提醒您,您始终需要在现实与乐趣之间找到平衡。即使游戏会作弊。

以狙击精英系列。在现实世界中,射击者必须考虑许多变量:风速,风向,范围,目标运动,海市rage楼,光源,温度,压力和科里奥利效应

如果Rebellion考虑所有变量创建了一个真实的狙击模拟器,游戏将变得非常困难。他们的忽略不仅是由于现代处理器的功能。普通用户不仅不想在游戏过程中计算所有这些因素,甚至不想知道它们。让玩家使用瞄准镜并以慢动作模式显示子弹的飞行更为有利可图。


使命召唤:现代战争的等级要求您需要远距离打击目标。玩家必须考虑科里奥利效应,以及风速和风向。有人喜欢这个挑战,但我放弃了。

赛车是另一种类型,需要对固体及其上作用的力进行大量计算。车轮与路面接触,悬架与车轮接触,轿厢相互碰撞。还有其他物体直接或间接参与碰撞。

通常会简化转弯时作用在汽车上的物理力。漂移很简单,但同时又很复杂-玩家应该感到满足。

Gran Turismo和Assetto Corsa模拟器具有更逼真的力量。例如,Assetto Corsa Competizione(版本1.0.7)使用五点轮胎模型。它在轮胎的前边缘上包括两个点,在轮胎的后边缘上有两个点,在中间的一个点-一起充当组合实体。点可以在三个维度上移动和弯曲,独立于外力并与表面接触。附加点显着增加了引擎执行的计算数量。


3D标题中的物理模型比2D中的复杂得多。您必须跟踪更多的变量和共同点。但是大多数计算都是线性的,因此这些模型比软体模型简单得多。

软体物理学


软体物理学(SBP)描述可变形的物体。由于计算量巨大,因此它的使用频率较低,并且在视频游戏中已大大减少。

软体是衣服,头发和诸如烟或雾的颗粒的堆积。实体的点始终保持彼此相同的距离。软体可能会变形并移动,因此其两点之间的距离将会改变。

可变形固体


软体运动可能会受到限制。标记的所有点将始终保留在标记上,它们不能分开。点彼此之间的偏差范围取决于在平滑标志上它们之间的距离。

相邻点始终保持相邻。远程点可以更近一些,但是同时它们不能彼此越过固定在扩展标志上的距离。



软体的计算数量超过了CPU和GPU的能力。因此,开发人员可以简化和欺骗。例如,使用循环动画​​。但是经过一段时间后,这样的画面似乎不自然。如果对象位于关注中心,最好不要诉诸于生活。

服装具有与旗帜几乎相同的柔软特性,但其物理特性甚至更复杂。首先,因为玩家一定会关注她。其次,因为它通常更具动态性:玩家对其施加影响。一个很好的例子是阿卡姆系列中的蝙蝠侠斗篷。


设计者不能在斗篷上使用循环动画​​,因为它的移动取决于播放器的动作。如果玩家将角色指向左侧,则斗篷应向右移动,以真实显示惯性和空气阻力。

这是物理引擎起作用的地方。在《蝙蝠侠:阿卡姆骑士》中,Rocksteady使用了APEX Cloth PhysX。使用此工具,您可以为显示衣服的身体创建蒙版,并调整其运动参数。根据配置,从丝绸到粗麻布的所有物品都可以显示。

为了提高性能,可以限制自然力对组织的影响。例如,“风”方法可以设置为“精确”或“旧式”。部分显示忽略了小的波动,减少了计算。

并非需要考虑结构上的所有要点-它们可以成组地起作用。这减少了需要处理的顶点数量。但是,并非所有这些组都像真正的柔软体中那样相互交互。它们主要只影响最近的点,因此数学计算的数量减少到可以接受的水平。

软体粒子系统


显示烟雾或云更加困难。这些对象的点可以相对于彼此非线性移动。有些点可能会超出对象的图形边界,甚至形成其他软体。

近年来,物理引擎已大大改善了粒子系统。查看Skyrim的欢迎屏幕,以及那里烟气的真实感。


软体系统中的每个粒子都有一个静态寿命。这是从发生到消失的时间(一段时间后,粒子源将再次创建它)。在此期间,点以给定的参数移动。

以篝火冒烟为例。每个粒子都从源向上移动:非线性,旋转并随机改变其在空间中的位置。因此它们会升起直至寿命结束,然后将其取出。

预期寿命会影响粒子系统的外观。在很长的时间里,您可以从火中散发出逼真的烟雾,但这会给处理器带来沉重的负担。短-减少计算次数,但是粒子消失之前只有一点时间会略微上升。

Skyrim屏幕保护程序中的烟雾看起来很酷,仅是因为屏幕上没有其他任何东西。处理器和视频卡的全部功能都可用于模拟使用寿命长的烟雾颗粒。



在游戏本身中,从火中冒出来的烟雾看起来不再那么逼真。它仍然非常有说服力,但更简单:开发人员减少了在模拟中显示粒子的时间。还有其他技巧。例如,覆盖多个静态烟雾层

游戏中非常小心地添加了身体物理学。首先,不需要完全模拟软体物理学-通常,仅出于美学目的才需要。其次,软体系统的精确再现需要太多的计算。

总结一下


电子游戏物理学是一个复杂的领域,开发人员在此领域中寻求现实与计算能力限制之间的平衡。技巧,简化和物理引擎使您可以快速创建相当逼真的物理,从而专注于游戏中更重要的方面。



游戏应该很有趣。与令人上瘾的游戏相比,现实主义并不那么重要。游戏物理仍然很重要-您需要直观的规则。同时,可以更改它们以丰富游戏玩法(记住两次跳跃)。

如果您想更好地了解电子游戏的物理原理,请查看Unity 指南Lumberyard指南中的相关章节

All Articles