Made with Unity | 3A级魂系国产手游大作是怎么炼成的
作为第一个登上苹果发布会,成为iPhone11 展示游戏的本土手游,《帕斯卡契约》注定是受万众瞩目。这款游戏被苹果评价为“口袋里的3A级大作”,于2020年1月16日AppStore全球同步上架,市场表现也着实没有让人失望。TapTap数据显示,1月15日《帕斯卡契约》的预约人数是599,249,评分9.6;1月17日该作上线一天后,预约数破60万,评分仍是9.6。
8月20日,游戏上线了全新DLC剧情扩展包「遗忘之潮」。相比于本篇,新DLC将带来更宏大的地图和更丰富的场景细节。此外,新角色杰洛尔德也将加入战斗阵营,他拥有一套全新的招式系统,其战斗思路和风格与现有角色截然不同。资料片中还有众多新的敌人,新的BOSS,包括隐藏BOSS,都十分值得期待。
《帕斯卡契约》由TipsWorks工作室创作,据其制作人杨洋透露,该手游准备了三年,实际开发了两年半。堪比端游的高清画质、超出预期的魂系手游、独树一帜的理智系统,即便《帕斯卡契约》采用了提前一次性付费的”反市场主流”模式,也不妨碍一波又一波的玩家前来“求虐”。
该游戏强悍的画质表现是几乎被所有玩家点名表扬的,但是大部分玩家都不知道的是,《帕斯卡契约》完全基于Unity引擎开发。自今年Unity公布携手《帕斯卡契约》亮相ChinaJoy之后,我们也收到了部分留言,大家表示希望能够更深入地了解游戏制作的细节。今天,我们就专门采访了TipsWorks创始人、《帕斯卡契约》制作人杨洋,让他亲自给大家揭秘。
01
立项初衷,创作更像主机游戏的手游
可以简单的介绍下TipsWorks创作帕斯卡契约这款游戏的初衷和背景吗?
立项的初衷是因为市场上已经没有合适的空间给一个小团队去生存,所以我们想要创造一款手机上没有的游戏,从画面到玩法上更像一款真正的主机游戏。这可能是一件很困难的事,但是基于我们当时对Unity引擎通过几个项目的积累,感觉可以挑战一下试试,结果一试就做到了今天。
02
3A级画质
帕斯卡契约出色的画质,让苹果在推荐中也毫不吝啬自己的赞美之词“主机级画质”、游戏中各种粒子特效、光影、材质细节、在手机游戏中都非常的拔尖,关于使用Unity制作渲染3A级别的手游有哪些经验可以跟大家分享下吗?
关于这一点,其实可能和大家理解的并不一样,Unity引擎本身就可以制作非常强大的影视级3A画面,我们做的更多的工作是如何把这些好的效果进行优化并尽量保留下来。基于Unity对手机平台的适配相当友好和高效,节省下来的性能空间还可以用来实现更大的地图和更高的AI。对于手游来说,如何压榨出手机硬件的机能极限是我们的关键。
一般的主流动作手游,通常采用一个个独立小舞台。而帕斯卡契约的场景,非常巨大,视野所及范围几乎都是可探索区域。一次需要读取一两个小时流程的地图和所有部署的敌兵及NPC。所以我们必须解决图形运算极限和内存容量问题。在整个地表层,我们对物件进行了严格的细分,通过主要物体和次要物体之间的视觉优先关系,结合视野进行人工的反复调整。另一方面,我们为了节省lightmap,场景里的一些小物件使用了light probe对物体进行着色。场景上尽可能的减少lightmap的数量从而达到合批的效果,减少drawcall。我们认为,想要达到效率最佳的深度优化,一定是耐心细致和技术工具的结合成果。
03
高效的动画控制系统
男一号主角的泰伦斯相信会成为大家使用最多的角色,他能够使用两把武器,轻攻击是使用手杖或者说是刺剑进行快速的攻击。而重攻击则是使用双手的大剑进行攻击。可以简单跟开发者们介绍下如何使用Animator Controller管理主角泰伦斯各段动画以及动画之间的切换的呢?
04
全手key角色动画
流畅、连贯的动作是ARPG 的核心,据我所知游戏人物动作方面,没有采用动作捕捉技术,而是全靠动作师手工调制的,这是一个相当大的工程量了,你们是如何克服的呢,有哪些技巧与经验可以跟大家分享吗?
05
维奥拉诞生的幕后
帕斯卡契约中维奥拉的设定是一位有着高贵气质的落难少女,在游戏人物模型创作过程中是如何与游戏的故事情节进行融合的?
06
PBR材质的制作流程
除了对高贵漂亮的维奥拉本人喜爱外,关于游戏中逼真的武器道具广大开发者也很感兴趣,可以简单的分享下如何在Unity中实现PBR材质道具的流程吗?
除了武器之外,我们游戏里很多物件都使用到了PBR材质。
流程上,首先需要在Substance Painter 中对材质进行写实的绘制,绘制方法主要遵循PBR的基本流程。由于手机游戏的贴图使用有限,我们把重点放在在质感的调节上。我们深入研究了Unity的材质显示特征,做好Substance Painter与Unity的衔接。从性能角度出发,主要用到的贴图有三种:diffuse,specular 和normal 。金属度和粗糙度分别加在diffuse specular这两种贴图的通道中调整。从而在Unity中得到一个消耗极低的写实的材质效果。
07
针对iOS平台的优化
帕斯卡契约在手机上运用了大量的即时演算和实时渲染,且没有明显的卡顿和发热,研发团队的技术实力是比较突出的,关于Unity 游戏在iOS 平台的优化经验有哪些可以跟大家分享下呢?
我们开发过程中得到了苹果Metal团队很大的帮助,Metal是十分高效能彻底发挥iOS设备性能的API,Unity本身对Metal的支持也十分完善,这两者的结合会让游戏的运作更加高效。如果说有什么经验可以分享,我们在开发iOS版的过程中,大量用到苹果自己的“GPU Frame Capture”这个工具,它能够帮你分析和找出游戏中所有对性能有影响的细节,针对性的对工程提出优化。
例如:用XCode的Capture GPU Frame 功能可以非常方便的抓取一帧GPU的快照信息,可以完整的查看Metal底层的渲染过程。图中我们发现了在屏幕后期处理结束之后StoreAction处理上有些问题造成了带宽上的浪费,图中紫色感叹号的警告也可以很容易地定位问题所在。然后我们通过代码脚本在Camera初始化时用RenderTarget重新设置了StoreAction,再次用Capture GPU Frame查看后,发现问题得到顺利解决。带宽使用上得到了优化,一定程度上改善了手机运行时发热的问题。合理的利用此类侦测工具,可以更有效的帮助开发者锁定问题,找出优化思路。
08
如何创作出更“聪明”的敌人
细心的玩家可以发现帕斯卡契约中的AI怪物不像一般手游里那样无脑往前冲,靠数值来牵制你。这无疑增加了游戏的可玩性与挑战性。可以跟大家分享下帕斯卡契约中敌人AI的设计吗?
我们在游戏里面给怪物做了一些AI的判断逻辑,让它们变得更“聪明”了。比如,它有自己的巡路逻辑,这并不是简单的平地上的直接巡逻,它可能会爬上屋顶,然后可能会从屋顶跳下来,也有可能从地下爬上来,有各种各样的空间交叠。因此我们在正常的A型算法的基础上,又增加了很多高空的预测路线,在主角靠近的时候怪物会自己选择一个比较安全的点跳下来。这样看上去,怪物好像是更“聪明”了,实际上只是我们把背后的算法设计的特别周密,看上去比较自然、而且排除了可能的bug点,我们有专门的AI程序员会去设置这种路线。
09
Timeline对项目的提升
从Unity 2017.1 开始,Timeline 系统经过了多次迭代,易用性与功能都有了很大的改善与提高,可以跟大家分享下新的Timeline系统对项目有哪些帮助和提升?
其实最初我们开发项目的时候没有用Timeline,早几年的Unity版本对Timeline 的支持做的没那么完善,就没有用。后来也因为这件事给我们的开发人员造成很大的困扰,因为编很多东西都需要在引擎里面去写。后来在Unity 升级迭代之后,整个Timeline 机制都优化了很多,那个时候也有纠结,因为如果要用新版本,程序就要把很多东西推翻重做。但后来我们考量这个Timeline之后,觉得还是要用,因为它会对我们故事的叙事流程有很大的帮助。然后我们的程序就忍痛把很多之前做的代码都删了,就为了一个动作可以用Timeline 表现做得更好。
这也是一个组内的权衡,有的时候为了达到一个最好的效果,我们要怎么去考量,哪个是最重要的,哪个是可以花点时间去返工的,我们尽量去做到精益求精。在使用Timeline的同时,我们也加上了一些口型插件之类的辅助工具,我们想把这些工具尽量用尽,然后把它的潜能挖尽。
10
游戏引擎的选择
为什么选择Unity引擎去创作这款游戏呢?后续还有哪些Unity的作品呢?
如前面所提到,我们一直重视的是引擎在手机平台有限机能上的高效性能表现,资源优化的便利程度。能保障游戏高质量的画面在手机上跑得平稳流畅,才是一个商业产品的核心。立项之初我们评估下来Unity是这方面最佳的选择,事实上也是现在绝大多数3D手游的选择。Unity的创作空间很大,可以轻松入门制作各种独立的小游戏,也可以有足够技术发挥空间创作大型游戏。另外,在平台移植的兼容性上,也十分成熟,所以我们在近期移植安卓版的时候也并不需要花费很大的精力。
后续我们会研究Unity新的渲染管线URP、HDRP,争取把下一个产品带上一个新的台阶。
对《帕斯卡契约》感兴趣的朋友可以在iOS或安卓应用商店下载体验一下,新DLC也不容错过哦!欢迎大家在文章下面留言评论,分享你对这款游戏的感受。留言获赞最高的朋友将获得由《帕斯卡契约》提供的「遗忘之潮」DLC兑换码一份,留言获赞第二高的朋友将获得游戏豪华周边明信片一套(30张),截止日期为8月23日(本周日)。
文中提及的相关链接:
[1] Unity 通用渲染管线(URP)相关文档:
https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@lates
[2] Animator Controller 动画控制器:
https://docs.unity.cn/cn/current/Manual/Animator.html
[3] GPU Frame Capture:
https://developer.apple.com/documentation/metal/frame_capture_debugging_tools/enabling_frame_capture?language=objc
[4] 渐进 CPU 光照贴图:
https://docs.unity.cn/cn/current/Manual/ProgressiveLightmapper.html
[5] Timeline:
https://docs.unity.cn/cn/current/Manual/TimelineOverview.html
[6] 光照探针:
https://docs.unity.cn/cn/current/Manual/LightProbes-TechnicalInformation.html
长按关注
第一时间了解Unity引擎动向,学习最新开发技巧
每一个“在看”,都是我们前进的动力