Made with Unity 亮相 2021 苹果发布会!《鬼泣-巅峰之战》如何在移动端还原经典 “神作”
在今日凌晨的苹果发布会上,苹果官方展示了一款由 Unity 引擎打造的高品质手游《鬼泣-巅峰之战》,精彩现场奉上~
对动作游戏有所了解的朋友一定都知道《鬼泣》系列,该游戏是国内不少玩家的动作游戏启蒙之作。而这款由 CAPCOM 授权、云畅游戏研发的动作手游《鬼泣-巅峰之战》,也因此收获了来自世界各地的关注。
上个月末,《鬼泣-巅峰之战》启动了终级测试,不日将进行公测。目前,该游戏在 TapTap 上预约人数破百万,其中不少玩家都是《鬼泣》系列的老粉。游戏中的场景建模、技能特效、角色动作,全都采用了高规格的技术呈现,强大的画质和流畅的帧数让玩家对这款动作手游充满期待。此外,《鬼泣-巅峰之战》手游还融入了更贴合移动端特性的设计,高度还原了原作的玩法内容和动作框架。
为了将战斗的操作感做到极致、展示原作画面的张力、复刻原作剧情体验,Unity 官方驻场工程师协助《鬼泣-巅峰之战》的开发团队,在动作设计、人物模型、智能 AI、关卡设计、音效、性能优化等等,逐一进行打磨。
今天我们邀请到了《鬼泣-巅峰之战》的主创团队成员,让他们为大家揭晓这款硬核动作手游,是如何在 Unity 引擎中打造而成的。
首先请介绍一下团队吧?
云畅游戏:我们来自于云畅游戏,主创团队核心成员都有 10 年以上的开发经验。云畅游戏是一家以自主研发为核心,集研、运、营为一体,专注动作领域的新兴游戏公司。 目前已经在北京、西安、成都、日本等多地设有分支机构。旗下有《鬼泣-巅峰之战》、《不良人3》、《航海王:燃烧意志》、《蝙蝠侠》、《洛克人》等多款精品。
《鬼泣-巅峰之战》是由 CAPCOM 正版授权的 3D 动作手游,非常荣幸能够在苹果发布会上得到关注,也非常感谢 Unity 官方在过去 2 年时间内对项目技术上持续的支持,也感谢 Unity 本次的专访。
能和我们详细介绍下《鬼泣-巅峰之战》开发过程中的经验与心得吗?
云畅游戏:作为全球主流的游戏引擎之一,《鬼泣-巅峰之战》借助 Unity 的强大性能与 Unity 灵活的定制服务,将游戏的 3D 动作战斗做到了极致,具体表现于核心的动作设计、人物模型、智能 AI、关卡的设计以及音乐和动画的制作等等方面。下面我将就以上几点作为核心说明点,具体阐述 Unity 引擎的表现能力在《鬼泣-巅峰之战》研发中的运用。
角色制作
我们在《鬼泣-巅峰之战》中不断优化渲染和建模的目的之一便是要实现主机端的画面质感,因此,在保证高帧率的前提下,我们协同 Unity 驻场工程师进行了大量深度的效果制作。首先,手游的角色按照标准 PBR 流程进行制作,并针对头发、皮肤等部位使用了特殊材质。在头发部位,为了表现更柔顺的头发效果,我们使用了2 个 pass 来渲染,所以需要控制头发的三角面数。对此,我们将头发分成内层,外层,修饰层 3 层来制作模型。头发内层是防止穿模的层,贴图几乎是不透明的;头发外层是基础外形,需要基本还原角色设计,因而表现发量的贴图较丰富;头发修饰层用以修饰外形,增加细节,为使头发更加生动,因而贴图的发量很少,这些也非常感谢 Unity 官方技术团队的支持与协助。
在皮肤方面,角色皮肤使用了预积分皮肤次表面散射 lut 图的 SSS 效果。在色泽表达上也尽量偏写实硬朗的风格,以希望可以在网红脸的模潮流中不落窠臼。
除此之外,为了能够使角色融进场景且更加立体生动,我们在场景中预置了可供微调 GI 的面板,方便我们的美术调整角色进入到不同场景以后的效果表现。
表情制作
角色表情是对人物情绪的直接表达,同时对环境氛围的营造有着十分明显的作用,因此,我们在《鬼泣-巅峰之战》中着重强调了人物表情的制作,以期望可以表现出更丰富立体的角色形象。
首先,我们以苹果的 ARKit 为基础,研发了一套基于表情捕捉的完整表情制作工作流,这使得我们角色所表现的人物表情更丰富立体,更有“人情味”。其次,我们根据苹果提供的表情范例,制作了一套表情模板。但实际运用的过程中,我们发现这些表情模板因缺乏生动性而不能达到理想的状态。于是,经过分析与调试,我们在苹果原有的 52 个 Blendshape 的基础上又新增了 36 个。这样通过表情捕捉,游戏里的角色就可以活灵活现地被塑造出来了。
但问题并不止于此,倘若每个角色都以制作 Blendshape 的方式来完善表情的话,不仅会给我们带来非常大的工作量,同时也不能拉齐角色的动画表现标准。于是,基于这样的情况,我们研发了 Blendshape 生成工具。
该工具综合考虑模型的拓扑结构以及人类面部的肌肉组成,并利用人工智能技术在二者之间关系上进行了映射与匹配。在此之前我们令一个角色具备表情表现力需要 2 周以上的时间,现在通过这个工具,我们仅用 2 个小时就可以让角色生动起来,并且能达到符合 CG 制作标准的程度。这不仅保证了角色面部表情的质量,也大大缩短了我们美术组的制作工期。
动作制作
01 流畅舒适的动作感受
众所周知,《鬼泣》系列作为动作游戏的标杆产品,对于人物动作的展现效果有着极高的标准。这些感受不仅体现在华丽的技能动作设计与打击感的完美结合,也体现在最基本的走、跑、跳这些角色基础动作上。对于动作的展现,我们的原则一是必须流畅,二是必须合理。
以我们的主角维吉尔为例,它的基础动作从静止的待机,到慢速移动的走,再到跑,再到加速跑。数值上表现在有不同的速度,而相对应的动作也是不同的。为了达到流畅的移动效果,我们将它的速度变化设定为渐变,同时再配合以 BlendTree 的设置,使得本动作组最终实现流畅变化。下图为某个 BlendTree 的实际应用配置。
辅以其他合理的机制,比如在加速跑到待机的过程加入对应的急停动作,使得《鬼泣-巅峰之战》的动作感受达到整体的舒适和统一。
02 动作分层对复杂行为动作的处理
第二方面,《鬼泣》作为动作游戏之巅,一向以炫酷无二的复杂动作在玩家群体间被津津乐道。因此,为了使玩家在《鬼泣-巅峰之战》中有同样顺畅的动作感受,我们加入了动作分层的处理方式。下图为某个分层处理。
以我们的主角但丁为例,它的双枪普通攻击技能是在有开枪行为展现的同时,也会接收玩家的移动操作进行指定方向的走动。因此,对于这种复杂的动作我们就需要采用动作分层的相关技术。将上半身抬手射击的区域与下半身双腿移动的区域进行分层与融合,并对玩家的输入进行反馈,最终实现了一套完整复杂动作行为的处理。
通过分层方式对复杂动作的解构处理,不仅可以使的我们角色的行动更加符合人的正常习惯,更具有“人情味”,也使得玩家可以在游戏中真正体验到所谓的“巅峰的动作表现”。
03 流畅的动作切换过程
第三方面,动作的切换是玩家可以直观判断游戏动作是否“僵硬”的标准之一。因此,在动作的切换方面,我们对效果的表现有着极高的要求,包括动作资源的制作标准、切换过程的配置等多方面配合。我们把不同的动作按行为划分,可以划分为基础动作和行为动作。其中,基础动作,主要指人物的待机,移动,转向等;而行为动作主要指人物的行为,如释放技能,受击,与场景交互等等。
由于这二者并不同一,所以这里我们分开来讲。对于基础动作来说,任何动作的起点、终点都应该是待机行为。这就对待机行为有一个标准的要求:不能有特别明显的大动作。除此之外,移动一定要有一个对应速度,且为了 BlendTree 能够生效,它们的整体规格务必一致,比如人物是先迈左脚还是右脚的问题就需纳入考虑之内。
而对于行为动作,我们又可以进行二次细分,分为主动行为动作与被动行为动作。顾名思意,主动行为就是由于单位自身上主观意愿进行的动作行为,比如释放技能,被动行为就是由其他单位导致自身进行的动作行为,比如受击。下图为某个切换过程的融合配置:
但是角色的行为表现不论是主动还是被动都有一个客观的需求,就是反馈及时。所以在进行切换配置时,我们考虑到动作的流畅性而缩短了行为融合时间。这样不仅使得角色攻击和受击更加真实,也使得其反馈更加及时。
关卡制作
现在市面上大部分 MMO 或者 ARPG 都是平面推怪,场景设计比较简单,对应的工作流也相对简单——策划出策划案平面图,美术出设计做模型拼场景。但是对于《鬼泣-巅峰之战》来说,这样简单的关卡设计是全然无法达到标准的。
鬼泣系列的关卡一直都是基于三维尺度的富含多种玩法的复合空间场景。我们在手机端也希望去延续这个特点,因此对于机关、路线、刷怪点、宝箱点等有一个基于 3D 空间尺度的设计。由于需要美术和策划配合验证的东西很多,经过逐步摸索后,我们创造出了符合需求的工作流程。
首先,策划基于功能玩法需求,进行简单白膜的搭建并设计主要路线和区域,在其中用一些简单的表现手法表达局部的玩法。
然后,美术基于反馈的简单白膜进行搭建,在其中展现美术组的设计想法和概念。制作后的白膜场景较为精细,并辅以灯光大气等环境,方便我们的策划在其中验证之前的功能设计是否有偏差。
在策划确认后,原画师便基于精细白膜和前期概念进行局部的细节设计,模型师同样会在此基础上快速制作粗贴模型,并将这些只有大体颜色和造型的模型再放入场景中进行设计的验证。然后由关卡设计师进一步进行场景深入的操作。
最后,在确认了设计和制作的具体方向都没有问题后,模型会进入最终的资产制作。完成后,模型会整合到最终场景中。因为最终资产往往是花费成本最高的部分,通过以上的流程,就可以减少因为设计不合适或者制作不合理导致的最终结果反复修改的问题。并且因为模型在场景中的位置是确定的,近中远不同位置的模型对应了不同的精度,也就实现了对资源量的可控,进而实现成本的削减。
同时,为了实现设计意图,我们的关卡编辑器中也支持了上百种触发器和行为,《鬼泣-巅峰之战》的策划可以根据关卡预设计而随意排列组合出上千种组合,来实现关卡流程。其次,关卡中包含小怪、多种机关、陷阱、空气墙、可破坏物、漂浮物、宝箱等多种关卡元素,通过使用这些元素,策划可以设计出复杂的关卡流程和解谜元素,让整个关卡内容不再是枯燥的一波波打怪,而是把战斗,解谜,定制玩法穿插起来,最后配合上精致的美术表现,使得我们的关卡更加生动,沉浸感十足。
场景材质效果
那么,已经实现基本关卡的设计后,场景的设计也必须随之而上。这一部分 Unity 驻场工程师会参与游戏新场景的技术指标制定中,举例来说:众所周知,《鬼泣》作为经典的魔幻类动作游戏,其场景有着不输于动作的独特魅力。所以,在《鬼泣-巅峰之战》中我们也必须尽力实现这样的场景表现。但在移动端上,为了实现游戏的高帧率,相对角色来说留给场景的资源空间并不是那么多,但是依然需要满足画面表现的需求。为此,我们专门定制了一些场景材质。
01 PBR 材质在室内的效果
《鬼泣-巅峰之战》有大量的室内场景。众所周知,PBR 在没有灯光的时候只能通过 AO 来表现法线效果以增加体积感。但在暗部环境下没有法线高光效果,因此,我们通过顶点法线的反方向当作环境光方向,来弥补手游不能使用多光源而导致 PBR 材质在暗部表现不佳的缺陷。
02 高性能冰材质
《鬼泣-巅峰之战》手游中有表现雪原的场景,冰材质必不可少。考虑到移动端的性能,我们选择通过 IBL 贴图获取当前环境,模拟反射折射效果,使冰的效果更加真实通透。
通过这些材质的运用,不仅使得场景的表现区别于一般 MMO 粗制烂造的场景而臻于完美,更使得游戏的运行帧数能够保证稳定,带给玩家流畅的游戏体验。
AI的设计与实现
除了以上外在表现的设计,能够合理地指令动作模组,形成人物与怪物行为概念的基础 AI 也是必不可少的。目前在游戏的 AI 设计上,我们采用了行为树(Behaviour Tree)方案。这里先讲解驱动人物行为的基本流程:某个单位,通过某种方式进行决策,决策的结果生成指令后进入队列,然后依次执行。对于玩家操作的单位来说,决策者是玩家的输入信息,比如拉摇杆是移动,按攻击键是释放技能;而对于怪来说,就是它的行为树进行决策生成指令。
在项目开发中,首先要有的就是 AI 编辑器和 AI 追踪器。编辑器用来对具体 AI 行为进行编辑,而追踪器用来验证。下图为某个 AI 的编辑器的截图。
在开发过程中,我们对 AI 的感受体验进行了多版本的调整,以此来达到最优的 AI 解:既不因过于智能而造成玩家通关难度过高,也可以适当地拔高玩家对怪物的挑战热情。
智能相机
《鬼泣-巅峰之战》的相机系统,可为关卡设计提供一种可快速创建复杂行为的方法。这套相机系统包含定点、导览、跟随、索敌等许多模块,将其组合在一起后便能实现游戏机内摄像头系统的所有内容。
借助“智能”相机系统,我们可以轻松地设置对象与相机之间的关系,并像导演一样通过观察镜头,构图并跟随动作进行操作。即使情况发生变化,相机也将按照设计的轨迹进行拍摄。
智能相机可以轻松地呈现《鬼泣-巅峰之战》的丰富多变游戏内容。玩家不再需要随时控制相机的位置和朝向,因为相机可以根据游戏内容及玩家的操作动态自动调整姿态,同时计算并寻找出最佳观察方位。当需要介绍关卡的路线时,导览相机可以帮助玩家熟悉整个地图;当需要提示关卡的线索信息时,定点相机可以对目标进行特写;当主角在关卡中移动时,跟随相机时刻展现周围的环境;当进入战斗时,索敌相机用最佳位置告诉主角和敌人之间的位置关系。
相机系统保证了《鬼泣-巅峰之战》高水平的视觉质量,并通过实时工作流程简化了项目开发的周期。
音效制作
众所周知,一款游戏的制作基本无法离开剧情、程序、音乐、美术等四大门类,而对于《鬼泣》系列来说,配合动作打击的音乐制作便尤为重要。因此我们使用了第三方音频中间件来进行音频内容的配置,并且由专门的音频团队来进行设计与制作。
在音效上,无论是玩家操控角色帅气爽快的连招、大型怪物扑面而来的压迫感、亦或是弹壳掉落的小小细节,我们全部都在音频给与了最合适的表现。
在音乐上我们采用了大量互动元素来进行创作:根据玩家的评分等级、关卡难度的不同,我们的音乐都会实时做出变化,从而带给玩家最好的沉浸体验。
剧情动画制作
一款内容丰富的好游戏无法离开剧情动画对玩家的指引,因此,能否将剧情动画合理且完美地表现于游戏中,事关一款游戏的整体品质。《鬼泣》作为经典的主机游戏系列,我们认为其沉浸感的重要组成部分就是剧情表现。为了达到写实动画的细节程度,我们通过多版迭代,从传统全手 K 动画的制作方式升级到包含动捕+基于苹果 ARKit 的表情捕捉+局部辅以语音识别口型(简单对话表现)这样一整套完整的制作流程,极大的提升了我们剧情动画的表现力。
剧情基于时间轴制作,能够匹配所有游戏内实现的效果,甚至可以实现一些基于性能考虑在游戏中不能使用,但是固定镜头可以使用的光照和后处理效果,方便制作人员做出高品质的剧情动画。
后处理效果
最后,作为成品产出的《鬼泣-巅峰之战》务必进行最后的后处理优化,以达到所能触及的最高表现水平,因此,后处理在我们的游戏画面中承担了很重要的作用。在后处理效果的选用和延展上,我们也是秉承着“寻找高帧率和高画质的平衡”这种理念,尽量用消耗较少的方案去实现相对接近主机的画质。
除了常规的画面后期调校以外,采用后处理增强画面的打击感,对于我们这类硬核动作游戏是必不可少的。为此我们基于 Unity Postporcess v2 延展了很多后处理效果,在适当的时候播放如径向模糊、色彩分离、屏幕撕裂等后处理效果,与声效、特效和按键反馈配合,提高战斗的整体表现力和打击感。
虽然这些方案原理都并不复杂,且对性能消耗比较小,但是结合使用就能呈现一加一大于二的非常不错的效果。
此外,后处理还为场景定制了一些特殊效果。比如天气系统。为了减少带宽,屏幕的雨滴流动效果没有使用采样贴图,而是通过 uv 取余后,将屏幕切割成很多块,通过流动这些块实现的雨滴流动效果。再在屏幕四周加上白色效果,模拟玻璃上雾气效果,综合起来就能非常真实的表现出雨天的氛围。
再比如,用上帝光(Godray)配合深度雾、高度雾与主光源结合,模拟了大气雾效果。这些都是为了在保持移动端高帧率的前提下,高效的实现高级画质的表现。
总之,我们在制作过程中的整体思路是寻找到画面效果和技术追求以及运行效率的三方平衡点,相信也只有这样,才能在手机上呈现出“鬼泣”这一个纯粹的主机动作游戏 IP 的画面品质和游戏精髓。
性能优化
除了常规的优化,我们还针对 Metal 进行了深度优化。比如使用苹果 GPU TBDR 架构里的 TileMemory 来降低在渲染中的带宽开销;利用 Metal 的多线程 DrawCall 提交来提升渲染效率;对 RT 使用 Memoryless 模式,减少了内存占用且避免带宽开销;对 depthbuffer,stencilbuffer 做了存储优化;使用 Metal 的 MSAA,增强了抗锯齿效果;Unity 驻场工程师在为项目做性能优化的过程中,发现项目中存在的 CPU、GPU 内存等方面的问题,持续进行优化。在这些深度的官方支持下,最终《鬼泣-巅峰之战》可以在 iPad Pro 上完美达到 120 帧的效果。
以上,便是 Unity 的功能在《鬼泣-巅峰之战》具体研发内容上的运用。正是由于 Unity 引擎所带来的极大的创作空间及 Unity 官方驻场工程师持续的支持,才使得游戏表现出来的最终效果更加完美,更加符合《鬼泣-巅峰之战》的规划预期,希望最后能带给玩家实现极致的体验。