我被这游戏中大鹫的羽毛、身体动作和AI,以及摄像机的部分所深深吸引。


文/李喆发表时间2016-12-19

引文:之所以写下这篇文章,不仅仅是通关了这个游戏,被游戏传达的情感所震撼,而且作为一个正在进行主机游戏开发的程序员,被这游戏中大鹫的羽毛、身体动作和AI,以及摄像机的部分所深深吸引。我不得不承认,他们的首席程序员Makoto Izawa的技术水平,够我花个五年到十年的时间追赶的,不过,现在游戏引擎的发展,也给我的压力减少了很多。

(事先声明,本文游戏图片来自于PlayStation官网,猫图来自我家雪灵,少量技术图片来自谷歌,本文不会剧透)

首先说说这个游戏中制作人的创作来源。根据2009年6月3日IGN上一篇对上田文人的采访,可以获知一些基础信息,中文翻译的游戏名称“食人的大鹫”确实是日文的原版翻译,早期的英文名称叫做The Giant Man-Eating Eagle Toriko. 。Toriko的名字来源于两种动物:鸟(Tori)和猫(Neko)。而且上田文人本人也提到,这些动物是受到小时候接触过的宠物的影响,这些动物不仅是猫和狗,也包括鸭子和猴子。所以游戏中的巨兽明显体现了猫的主要行为特征,身体又包裹着羽毛,脚也采用鹰的形式。

115551ftqw4qkqjmjwwcdd.png可以清晰的看出,大鹫主要由鹰和猫组成
先来说说我猜想的羽毛制作方式,根据目前的物理引擎技术,全身的羽毛估计是以带角度限制的关节连接方法,安装到大鹫身上的。经过观察,羽毛和周围的物体并没有实际的碰撞,所以羽毛受到的物理影响,基本上是大鹫身体的带动和风场的力算。

115553orusi9ss0j60s4si.png大致可以估算羽毛的数量,其实还是挺多的,之前没有见过有人这么做过
另外,飘落的羽毛,应该都是单独的模型,在开场的时候,地上散落的羽毛,非常类似小灌木的做法,用几个面片做十字交叉。空中飘落的羽毛,应该是类似粒子系统的方式来实现的,由于数量非常少,所以也不会增加太多的计算。

115554gu6wdi6ipcpsv6ir.png有些局部的单片羽毛,细节非常丰富
再来分析一下身体的动作,大鹫的身体,如果我来设计,大概会分为这么几个主要部分:头,耳朵,脖子,前肢,后肢,躯干,尾巴。作为猫的代表动作,耳朵一定是传达情感的很重要元素,根据外界的环境和人物的互动,两只耳朵可以躲避墙壁,前后抖动,竖起来倾听呼唤。脖子用来连接头和身体,仔细观察可以发现,大鹫在狭窄的空间中转身时,和猫的动作非常相似,先是接近180度的转头,然后身体可以用一种类似折叠的方式,原地转身。再说说尾巴,大鹫的尾巴减少了很多猫的行为特征,比如开心时猫会竖起尾巴,但是大鹫不会,大鹫的尾巴除了在游戏中特有的很多功能以外,平时的动作,就是增加跳跃时的视觉平衡感。最后再说说大鹫的爪子,据我观察,爪子的每跟手指都是采用了单独的多段骨骼,再加上IK(骨骼反向动力系统),爪子可以实现踩在一些尖角上时,手指完全抓牢,再加上地砖碎裂的效果和AO(光影遮蔽系统),呈现出真的踩在环境中的感受,并且体现出巨兽的重量感。

115556g1rr69xew8auuzpy.png可以清晰的看到大鹫的爪子使用了多段骨骼和IK、AO
还有AI的部分,我觉得大鹫的AI部分,最难做的应该是狭小空间的动作判定,很多时候如果大鹫的姿势不对,或者执行动作的空间不够,会导致大鹫完全没有反应,或者原地跺脚,顺带产生的时间延迟和失控感,也正好符合设计师要表达的情绪。了解到这一点,大家也可以测试一下,大鹫在获得了正确的指令时,其实反馈还是很迅速的,明显的特征是,接收了正确的指令,会先原地叫一声,然后开始后退,开始执行指令。

115558dfa666nqn644y6sa.png据我观察,收到确认的指令,大鹫会先叫一声
再说说摄像机,由于设计的需要,在非常狭小的空间中,主角还要能挤到大鹫和墙之间,导致完全没有摄像机的位置。现代游戏的第三人称摄像机,都是要通过碰撞运算,尽量避免出现穿越模型的情况出现。所以,大鹫中的摄像机在躲避碰撞的动作瞬间会黑屏一下,导致很多极限情况下,摄像机卡在一个位置,不停的黑屏,完全失控。这里我想出了一个解决方案,就是如果出现这种情况,应该把摄像机的拍摄焦点切换为大鹫,然后在大鹫周围寻找可以停留摄像机的空间。由于主角爬上大鹫或者从大鹫身上下来,并不一定需要视觉观察,玩家可以连续推上,完成爬上,连续按X键实现下落。所以,应该让玩家视觉尽量处在一个舒适的位置,盲操作,我想,也会比现在连续黑屏闪烁的体验好很多。

115600xcp9pk22wbwqqq9c.png这是我们现在的项目中实现的摄像机面碰撞
最后,我还想说说一个特别传神的技术点,实现起来虽然不难,但是也会占用大量的开发时间,这个就是手柄的震动。PS4 DualShock手柄从字面上也可以看出,这个手柄有两个振动器,一个高频一个低频,分别位于手柄的左右两侧,大鹫这个游戏,全程使用手柄振动来增强大鹫的生物感。抚摸大鹫脖子时,会获得像猫一样的呼噜振动,大鹫挥动小翅膀时也会获得发力感。如果能够采用XboxOne手柄的4个振动器,那全程立体的振动体验估计会更棒一些吧?

115600rkxykxdteobetyd3.jpg从手柄拆解图可以看出高低频振动,源自不同重量的振子
我猜想的这些技术点,说起来轻松,真的从无到有的都实现出来,并且做到现在游戏中的状态,是非常困难的,需要大量的学习和研究,并且这种技术点的突破,是无法靠增加团队人数提高速度的。进行了这些思考以后,也非常能够理解为何这个游戏从PS2时代一直开发到了PS4时代,换我来做,估计要开发到PS5时代吧,哈哈~

最后放上几张我家“雪灵”的照片,对比一下大鹫的姿态:

115601tgyyglgxzwrf2gsl.jpg
115602tno966ektwngobxq.jpg
via:机核
锐亚教育

锐亚教育,游戏开发论坛|游戏制作人|游戏策划|游戏开发|独立游戏|游戏产业|游戏研发|游戏运营| unity|unity3d|unity3d官网|unity3d 教程|金融帝国3|8k8k8k|mcafee8.5i|游戏蛮牛|蛮牛 unity|蛮牛