把游戏做好真不容易。
1
当我们判断一款游戏的好坏时,除了最明显的画面和玩法,往往还有一个重要的隐形指标,那就是角色动画的质量。
有些游戏虽然画面还不错,但玩起来却依然能感到它内里的不足,很可能就是因为里面的人物动画暴露了它的弱点。
人物动作是不是流畅、自然,很大程度上影响了游戏的表现力,有时动画的作用甚至大于画面本身。
不论是2D动画还是3D动画,最基础的制作方式就是手工的帧动画。
动画师先摆出角色的几个关键帧,然后利用程序填补中间的过程,把关键帧连续播放就完成了一个简单的动画。
这种动画制作方式,从游戏出现之初就一直存在,直到今天依然应用在多数的游戏当中,因为它相对简单、便宜、易于操作。
这一类动画都是提前制作完成的预制动画,导出后就不会再变化了,在游戏中只是调用并播放。因此我们会发现很多游戏中的攻击、跳跃、行走动作永远都是一样的,时间长了会觉得有些死板。
而另一种程序生成的动画(Procedural animation)则更加的灵活多变。这种动画把动作和程序绑定在了一起,按照一定的规则来控制角色各个部位的动作。因为动画由程序计算而来,只要调整程序中的变量,动画也会做出相应的改变,利用这种方式可以让动画根据环境进行实时的调整。
程序生产动画往往比关键帧动画能容易模拟出真实的物理效果,特别是与环境交互时,可以根据不同的交互情况作出不同的反应,布娃娃就是一种程序生成的动画系统。
预制动画在遇到复杂地形的时候经常会出现人物浮空、穿模的问题,因为动画是固定的,因此人物站立的高度也是固定,遇到了不一样的地形就会显得很尴尬。
但程序生产的动画可以通过计算脚与地面的距离、地面的倾角实时调整脚的高度和角度,所以每次都能精确的踩在地面上,不只是在播放动画,而确实是存在着互动的。
还有人利用程序生的动画去模拟一些难以用手工制作的动画,比如多腿生物的运动情况非常的复杂,手工制作需要很强的专业技巧,而利用程序生成只需要知道动物腿部运动的规则,就可以做出非常的自然、多变的动画了。
2
多数游戏对动画的根本要求是表现出真实感,不论是手工制作的动画还是程序生产的动画,都是去尽量的模仿角色在现实中的动态。
但模仿毕竟存在局限性,人眼对于真实感有天然的敏感性,尤其是人类的动作,哪怕是非常小的细节违和,普通人都能一眼看出来。想让手工制作的动画表现出真实的动态、重量、速度感,是一门深刻的艺术。
为了做出以假乱真的动画,更多的游戏选择使用动作捕捉技术。
动作捕捉技术通过采集真人演员的动作数据,应用到虚拟角色的骨骼上,这样做出来的动画能够最大程度的接近真实。
游戏行业很早就开始利用这种技术来制作动画了。1994年的《VR战士2》是最早使用动作捕捉技术的游戏之一,那时候捕捉技术还属于黑科技,设备甚至是铃木裕从美国军方那里借的。
在此之前,1989年的《波斯王子》还曾尝试过一种原始的动作捕捉方式。制作人先让演员在现实中作出移动、战斗的动作,然后再照着录像中的动作画出人物动画的关键帧,最终呈现出的动画效果也十分的真实、流畅。
如今,动作捕捉已经成为了3A游戏的标配,很多游戏工作室都有自己的动作捕捉室,游戏中的动作也几乎全部通过动作捕捉技术录制制作。因此我们才能在游戏中见到电影水准的动作演出。
游戏中的剧情动画会包含非常多的特殊动作,这些动作不会在其他地方用到,因此动捕演员会就像演电影一样的亲自表演一遍。而对于人物在游戏中的常规动作,制作者会将所有动画列成细致的表格,让演员一个个的表演出来。
不过,动作捕捉得到的只是粗略的动画,有时动作中会出现细节缺失、采集偏离等问题,还需要人工进行二次的调整使其更加的正确和自然,手工操作依然是动画制作的基础。
动作捕捉无疑是得到逼真动画的最好方式,但动作捕捉的缺点是成本太高,不但设备昂贵,还需要专用的演员、场地,因此只有大型的游戏工作室才能够用得起这样的技术。
好在最近的动作捕捉设备也正变得越来越简化和便宜,有些中小型团队也开始使用轻量化的动作捕捉技术让自己的游戏更加出彩,甚至有人利用VR设备或者Kinect,自己 DIY出了动作捕捉设备。
相信在未来,动作捕捉技术会更多的出现在中型游戏和独立游戏中。
3
在游戏中,人物的动画需要根据玩家的操作做出及时的反应,所以不论使用哪种方式制作,得到动画只是游戏动画的第一步。接下来,还要控制动画与游戏绑定在一起,让角色能够在正确的时机做正确的动作。
一种比较常用的方式是使用状态机(State Machine),制作者可以将角色的动作分解为各种瞬时的状态,比如走、跑、跳,状态机的作用就是判断角色处于哪种状态,并根据状态匹配相应的动画。
人物拥有多少个状态,决定了动作系统的复杂等级。状态越多,人物的动作就越细致,制作也就更加复杂。
早期游戏的状态都很简单,比如《洛克人》中跳跃就是单独的一个状态,动作也只有一两帧。
但更精细一些的系统,可能会把一个跳跃的动作分原地跳跃和行进中跳跃。
合金弹头中的跳跃动作
如果再细致一些,还可以加入一个从高处跳下的状态,让角色落地时出现一个踉跄的动作。3D游戏还可以将前后左右方向的跳跃动作区分开来,变成左右横跳、后空翻,每种基础的动作都可以这样不断细化下去,当然这也意味着工作量的不断增加。
对于3D游戏,除了匹配动画,还要对动画进行过渡和混合。过渡能让动作与动作之间更加平滑的衔接,这样就不会出现突兀的动作变化。
混合则可以将两种动画混合成新的动画,比如攻击的动画和跑的动画是两个独立的动画,但如果要让角色一边跑一边攻击,就需要把两个动画混合在一起,否则就会出现非常奇怪的动画效果。
而在很多游戏里,攻击、换弹夹、吃药等各种动作,要制作移动中的版本,都需要人工混合,调整出新的动画与之匹配,这样才能让动作看起来自然、连贯。
因此,利用状态机制作出精致的动画不但需要技巧,同时还要花费非常多的人工成本。
4
游戏动画制作还有一个难题:它的自由性。
角色的控制权在玩家手中,制作人无法预测角色会做出什么样的动作。比如玩家可能会突然改变方向或者快速切换动作,这样就很容易让人物的动作出现瞬移或错位。
因为状态机不可能考虑到每一种状态,如果角色的动作超出了状态机的预设范围,角色的动画就可能会从一个状态无过渡的跳转至另一个状态,在这种情况下,即使使用动作捕捉,也无法保证真实感。
为了解决这种问题,人们发明了动作匹配技术(Motion Matching)。
这项技术先用动作捕捉采集一系列的动画,不论是跑、跳、摔倒,还是不同的移动方式。然后将所有搜集到的动画素材修剪、打磨成可用的动画片段,最终整合成一个动画素材库。
程序会根据角色的行动路线、位置、速度以及周围的环境等变量,来预测角色的接下来的动作路径,每过几帧就进行一次判断。如果路径出现了明显的变化,程序会据预测结果从素材库中选择适合的新动作进行拼接,让动作顺滑地改变。
动作匹配让人物动作之间的衔接部分也达到了动作捕捉的级别,因为不需要预设状态,人物动作的变化也更加的丰富,能够根据周围的环境做出不同的反应动作,动作的随机性更高、重复性更低,因此也更加真实。
近年来的游戏,有不少都使用了动作匹配技术,比如《荣耀战魂》《刺客信条》《最后生还者2》,这些游戏真实、复杂、多变的动作都有赖于这项技术的引入。
动作匹配是目前最先进的动作系统,不过它也有缺点。
现代游戏中的操作非常丰富,动作也非常的复杂,单是移动可能就要有待机、走、跑、跳、蹲、冲刺等等,再加上与环境互动的动作比如开门、坐下、拾取、翻越、骑乘,还有其他的组合动作,多如牛毛。
所有的动画都需要动作捕捉完成,因此需要的数据量非常的大,同时游戏运行时动画也需要存储在内存里等待随时调用,非常消耗机能。
动画素材库
5
每种动画制作技术都有各自的优缺点,所以很多游戏制作组是混合这些技术使用的。
未来的动作系统也许能够取长补短,在增加真实感的同时减低制作难度和成本,这其中很重要的一个创新点就是人工智能的加入。
2016年,Daniel Holden等人利用一种叫做PFNN(Phase-Functioned Neural Networks)的神经网络技术实现了人物动作的动态控制,让角色可以表现出真实、多变的动作,同时与环境进行准确的互动。
后,来Daniel Holden进入了育碧,又将机器学习和动作匹配的系统相结合,通过训练神经网络,让AI负责判断、挑选动画的过程。不但实现了更好的动画效果,而且这项技术不需要将动画文件加载到内存里,因此把动作匹配程序的内存占用从590MB压缩到了8.5MB。
爱丁堡大学的研究人员与EA合作,也研制了一套利用深度学习技术处理复杂动画的系统,他们让AI控制一个角色的运球动作,结果相当不错。角色可以根据玩家输入的方向和周围的环境自行作出快速、流畅的反应,而且在期间始终保持正确、合理的运球动作,而且球的动态配合也完全的真实,没有出现反物理规律的现象。
他们还利用AI学习游戏中的环境分布和人物的逆运动学规则,使角色与各种物体进行无缝、真实的互动,根据实际的情况自动调整人物的动画。
比如坐在椅子上的动作,不论椅子大小高度、样式,角色都会自然且准确地坐在椅子上,而不会出现因为椅子太矮而坐在空中的情况。
前面说过,程序生产动画也可以达到这种效果,前提是制作组必须为每个椅子定制一个动画,而在一个游戏中这样的物品可能有成千上万,工作量可想而知。更取巧的做法,是让游戏中所有椅子的高度、大小保持一致,但这显然是不够真实的。
而使用了AI技术之后,不但减少了工作量,也增加了游戏中的多样性和真实感。
其实没人会把游戏中的每张椅子坐一遍,动作系统的升级对游戏的提升往往很难被注意到,但就是这样每次一点点的进步,使得如今的游戏动画已经与几年前有了天壤之别。
关于次世代游戏,人们最先关心的还是画面的提升、光影的进步。但相比于已经发展到一定高度的图像技术,次世代游戏在动作系统上的革新也许能给玩家们带来更多的期待。