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

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

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

可以清晰的看出,大鹫主要由鹰和猫组成

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

常见物理引擎中带角度限制的连接方法

有一些羽毛炸起的动作,用来表现大鹫的情感,估计是程序做了特殊的运算处理,施加到每根羽毛一些反向力。按照我很随便的估算,全身的羽毛应该不会超过1000片,故此,遍历所有羽毛,并进行一些物理运算,对目前的PS4主机来说,并不会带来太大压力。人物爬上大鹫的时候,局部的羽毛飘动,我认为也是依靠小范围的影响羽毛的物理运算的方式实现的。题外话,我发现游戏中掉帧,主要是由于要动态加载和卸载新场景导致的,如果场景已经加载完成,死掉再次返回,同样的位置就不会掉帧。

大致可以估算羽毛的数量,其实还是挺多的,之前没有见过有人这么做过

另外,飘落的羽毛,应该都是单独的模型,在开场的时候,地上散落的羽毛,非常类似小灌木的做法,用几个面片做十字交叉。空中飘落的羽毛,应该是类似粒子系统的方式来实现的,由于数量非常少,所以也不会增加太多的计算。

有些局部的单片羽毛,细节非常丰富

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

可以清晰的看到大鹫的爪子使用了多段骨骼和IK、AO

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

据我观察,收到确认的指令,大鹫会先叫一声

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

这是我们现在的项目中实现的摄像机近平面碰撞

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

从手柄拆解图可以看出高低频振动,源自不同重量的振子

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

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

《最后的守护者》的开发技术猜想相关推荐

  1. 传道解惑 软件开发技术名词解密

    传道解惑 软件开发技术名词解密 序:去年为了总结自己所学习/接触过的技术,也顺便为初学者少走弯路指明一些方向,可惜后来诸事缠身未能继续,十分遗憾,现放到自己的BLOG上来鼓励自己将此继续下去. &qu ...

  2. 激动人心的AutoCAD .net开发技术

    自从了解了vsto和sc(SmartClient)技术后,对以前Win32的二次开发技术,再也没有一点兴趣.对Office VBA,  AutoCAD lisp, VBA,  PowerBuilder ...

  3. 面向对象的程序开发技术C++教学课件系列之四

    面向对象的程序开发技术C++教学课件系列之四 转载于:https://blog.51cto.com/hnxdd/13205

  4. Android开发技术周报176学习记录

    Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...

  5. SQL2000 好书 《SQL Server 2000数据库管理与开发技术大全》----求是科技 人民邮电出版社

    SQL2000 好书 <SQL Server 2000数据库管理与开发技术大全>----求是科技  人民邮电出版社

  6. Autodesk 产品二次开发技术研讨会将在上海广州北京相继举行

    6月到7月我们准备在上海.广州.北京举行三次技术研讨会,讨论新技术,展望未来.届时我也会介绍一些云计算和移动计算方面比较酷的东西,欢迎所有对Autodesk产品开发感兴趣的有关开发人员参加,不论您是否 ...

  7. 从今天开始,我就要潜心研究软件开发技术了,不在被名利所困

    参加工作六年来,我一直被虚名所困,想要通过努力得到单位的认可,但是由于我是小副科,学校领导根本不放在心上,我反而为此浪费了很多宝贵的时间. 从今天开始,我就要潜心研究软件开发技术,不再在单位争名夺利了 ...

  8. 点评主流软件开发技术

    为什么80%的码农都做不了架构师?>>>    点评主流软件开发技术 http://soft.chinabyte.com/297/8698297.shtml ■ 河北秦皇岛 谷俭政 ...

  9. 微软一站式开发技术框架解决方案 年内展望

    微软一站式开发技术框架解决方案 (CodeFx) 自成立至今已有半年.在这半年里,我们完成了130个代码示例,主要覆盖了COM.数据访问.库加载.进程间通信.Office开发.WinForms等技术. ...

最新文章

  1. Python 操作 MongoDB 数据库!
  2. PAT甲级1069 The Black Hole of Numbers:[C++题解]模拟、6174
  3. service层的方法上使用@Transactional注解,程序发生异常没有回滚
  4. web服务器-nginx
  5. 批作业是小学老师的一大乐趣 | 今日最佳
  6. c++面向对象高级编程 学习一 不带指针的类
  7. 三七互娱李逸飞:未来将关注元宇宙等新业态 创新构建核心优势
  8. Leetcode每日一题:493.reverse-pairs(翻转对)
  9. web开发excel文件上传及解析(上)
  10. 教学流程图怎么画?画流程图好用的软件
  11. 新产品开发中TR1,TR2,TR3..具体指什么?
  12. chia 免费软件快速p图 支持官方最新协议
  13. 计算机管理中打开移动硬盘磁盘必须格式化,最佳解决方案:无法打开移动硬盘分区,并且未格式化解决方案。...
  14. Python爬取网易云各类音乐的详细信息
  15. 创业,I have a dream
  16. FindBugs NN_NAKED_NOTIFY
  17. JavaMail 学习讲解
  18. idea2019之后版本 插件库打不开解决办法
  19. 四个动作识别数据集的简介
  20. ABAP中,获取报表ALV数据sample

热门文章

  1. android判断银行卡号格式不正确的是什么意思,android银行卡号验证算法详解
  2. bootstrap mysql分页_bootstrap分页
  3. java 排序工具类_List 排序 Java工具类详解
  4. python网页版_经典python学习教程:20行代码打造一个微信群聊助手,解放双手
  5. 深度学习-Tensorflow2.2-模型保存与恢复{9}-保存与恢复-21
  6. android sharedpre,Android SharedPreferences四种操作模式使用详解_Android_脚本之家
  7. leetcode-71-简化路径
  8. 连接mysql报zone时区错误
  9. [TCP/IP] 关闭连接后为什么客户端最后还要等待2MSL
  10. P2286 [HNOI2004]宠物收养场