
由于本人没有学习过非相关专业知识,在一些东西的解释里会掺杂想当然、张冠李戴的成分,欢迎大佬们指出问题。文章主要参考的访谈链接:https://www.nintendolife.com/news/2021/06/feature_monster_hunter_rise_director_talks_re_engine_on_switch
由于世界和崛起中呈现的游戏体验十分相似,外加崛起相较于世界的“落后感”,让“把怪物从世界搬到崛起”这件事在玩家看来,是一件非常简单的事。外加我们认为的,卡普空作为一个实体,理应对怪物的生态表现、动作AI了如指掌,似乎是偷懒的实证。
然而,无论是一个游戏厂商,还是一个项目的制作组,它们都是由一个个具体的人组成的,面对某些需求时,也只能干瞪眼。崛起开发过程中的困难险阻,虽然只能制作人在访谈中的只言片语中获知一二,但也请耐心让我稍微分析一下吧。

switch使用的是一枚“定制”的 Tegra X1芯片

今年年初泄露的英伟达源代码,含有任天堂主机图形API——NVN和NVN2的开发文档
根据一篇访谈中一濑泰范的说法,崛起开发调用的图形API是NVN,这是英伟达专门给switch开发的图形API,完全贴合硬件架构设计,效率天然比跨平台通用的API要高。这就说明崛起是真真切切针对switch做的定制游戏。
基于这个事实,拿“switch性能拖累了崛起”这样的话来简单概括也不是不行,但这样一来就容易顺带忽视卡普空在优化方面所做的努力,所以本文将着重分析崛起在switch版优化方面所做的努力。

RE不是“Resident Evil”(生化危机)的简写,而是Reach for The moon
首先是引擎的问题,RE引擎一开始就考虑到了面向多个平台,因此只做简单的移植本身并不困难,但在RE引擎中,着色器程序是用高级着色器语言(HLSL)编写的,只能供微软的Direct3D使用,只支持PC和Xbox。
所以,RE 引擎团队就制作了一个新的转换器,将语言转换为OpenGL着色语言(GLSL)。还添加了专门针对switch显卡的支持。
低情商地说就是,添加了对自适应可伸缩纹理压缩(ASTC)的支持,减少和内存和空间占用,保证在4G显存下实现更优秀的纹理,并能以更低的规格制作卡带。
要知道,如果只用8GB卡带,价格尚在400元左右;那如果像PC版使用那样低压缩率的文件,甚至容量超过16GB,使用32GB的卡带,售价可要直奔五六百元了。(虽说steam版定价也不低)
一旦有机会,卡普空肯定愿意制作更小容量的游戏。这也是曙光没有直接卖卡带的原因之一,第三方找任天堂下实体卡带生产订单,老任负责生产,一次性越多越便宜,厂商赚的就越多,用已有卡带配兑换码,自然是更好的选择。
所以,1.0版本崛起的容量低于旧世代的XX,并不是很奇怪的一件事。
过去曾有传言,认为RE引擎并不适合《怪物猎人》,因为在过去的几部RE引擎游戏中,明显在流程设计中,频繁需要玩家操控的角色通过检查点,继而才能加载接下来的房间,或者说是更远处的地图,这似乎说明RE引擎并不适合制作有大场景的游戏。

黑暗,往往是非常自然的幕布
然而这其实是为了在保证场景精细度、复杂度的同时,减少不必要的内存/显存占用和硬盘加载。
而且这并不只在由RE引擎制作的游戏中出现。以同系列、使用MT引擎制作的《怪物猎人世界》为例,猎人身处复杂的古代树森林里,有时也需要慢吞吞地穿过树洞,算是一种针对内存方面的优化。
RE引擎原本是基于《生化危机》系列而设计的引擎工具,即便后续有面向卡普空今后大部分游戏、增加使用场景的需求,但最开始肯定是服务于单一游戏类型的。可而今《街头霸王6》也要使用RE引擎进行制作,其独特的美术风格、地图玩法,已经很难让人把它和前期的RE引擎联系上了,类似的质疑声只会越来越少。
但RE引擎本身的问题也很明显,用原有的着色器进行渲染,液体和毛发的表现力不佳;专注于次世代的图形渲染管线,很难在switch这种移动端级别的硬件上有所作为。
其次,就聊聊上一条说的图形渲染管线吧。根据访谈里的说法,崛起使用的re引擎,在最开始只有面向家用机和PC的延迟渲染管线,渲染功能很全面。
顾名思义,在延迟渲染管线中,渲染工作将会延迟一些,额外有一个几何缓存区,会等到所有几何面都通过管线,然后在最后应用阴影来生成最终图像。其中的因果关系是:在面对处理大量实时光源的场景时,需要有一个大的几何缓存区,所以就会占用大量的显存带宽。
但switch的CPU显卡共用的内存带宽只有25.6GB/s,仅仅是PS3的水平,会令游戏在实际运行中会伴有极大的性能问题。
虽然据我所知,实际上有很多第一方或第三方游戏使用了延迟渲染管线,并运行良好,比如《塞尔达传说旷野之息》、《堡垒之夜》,说明switch多少还是有足够的性能来保证游戏以较强的画质来运行的,只是不适合怪猎和RE引擎的需求。
于是,制作组重新搭建了一个掌机和手机常用的前向渲染管线,这是崛起画质怎么也比不上世界的决定性因素之一。(顺带一提,《原神》是延迟渲染)

尽管明眼人都清楚,世界和崛起的开发工作存在一定的重合,且之前的访谈也确认了怪猎制作组并没有什么4G组/P组之别;但事实上至少在这一代,由于引擎和语言的不同,崛起在开发的部分时间里,并不能即时享受到世界开发过程中取得的成果。
然而,拥有高画质和精细动作的世界,依旧是绝佳的学习对象,它运用了许多次世代的技术,能让游戏中怪物的质感实现飞跃。
通过对游戏模型的解包,我们可以发现,包括迅龙在内的一些怪物在世界和崛起里的模型,完全是是由同一个高模拓扑出来的低模(第一组最下面那个是古法建模的老迅龙),用人话说就是同一个模子里刻出来的。



纹理表现、多边形分布和关节结构都有一定的相似性,只是崛起模型的精细度比不上世界。
为了实现这样的高效“建模”,制作组的做法也很粗暴,直接移植世界的着色器。这样顺带也能解决毛发效果不好的问题。
还是以迅龙为例,崛起效仿世界,在怪物的表皮贴上了一层毛发贴图,这个毛发贴图会让游戏中的迅龙看似有一层紧贴皮肤的毛发,较长、立起的毛发则依旧用多边形来建模。这么一来,一层真毛盖着一层假毛,就高效地换来了较好的画面效果。
很多人认为引擎不同,就很难快速地移植怪物;也有人认为模型资源是想搬就搬,毕竟哪怕普通人只要肯学也能轻松做mod,这两种观点其实都有点想当然。
其一,引擎只是游戏开发的工具之一,建模软件是另外的通用软件,以前模型只要不是土法建模、手绘贴图,总会有精度符合要求的高模来供你拓扑(简单来说就是有一个精度无限的高模型,你要根据游戏定位,来制作一个精度有限的低模型。比如圆球的模型就可以拓扑成20面体,或拓扑成偏方三八面体)。
其二,怪物身上的动态效果,在移植过程中,需要用不同的代码来控制着色器来实现(比如MT引擎中的发光贴图,直接贴上去是灰的,可能需要用代码控制它的颜色;RE这种次世代有的可以直接贴,有的像电龙也需要代码控制变色)。
其三,简单的移植或许就像我猜的那样,很简单,但一只怪物从一部单机游戏作品,移植到另一部单机游戏作品,原汁原味,打起来没有互动,那可是会挨骂的。更别说因为换了引擎,许多怪物哪怕一比一移植,它的很多AI也需要重新写……

那么紧接着我们看看,制作组的c语言大佬们是怎么实现游戏逻辑的,在MT引擎中,所有游戏逻辑都是在C++中实现的,因此构建它们会很耗时间。在RE引擎中,游戏逻辑用了更现代的C#来实现,效率相比过去提高不少。
这就相当于,过去是需要准备“一硫二硝三木炭”各种材料的一群传统法师,现在直接法杖舞一下就放火球术的一众大法师。毕竟都什么年代了……
在此基础上,游戏开发者可以快速将代码迭代,不断试错,这能游戏相较于过去有更多的创新机会。
但由于世界的开发进度并不会时刻向崛起制作组反馈,所以像是快捷轮盘这种世界里广受好评的系统,在崛起里是以不同的方案实现的。即根据一样的运货需求,两个游戏的程序员重复造了一套轮子。(这段是结合@Dtlnor的解包和分析推理的)
此外,崛起制作组还基于前向渲染管线,对游戏的画面进行了许多优化。我复述并分析一下访谈中提及到的优化技术。
遮挡剔除技术,消耗一小部分CPU性能,移除被遮挡住的物体,在不改变最终渲染画面的同时,降低 GPU 的负载。这个是游戏中比较常用的优化技术,但switch的处理器似乎没有处理这个的多余性能。

遮挡剔除(Occlusion Culling)起作用时,图中红色虚线物体会被移除
于是,制作组决定直接让GPU来执行这项工作,个人猜测这活儿也不是太困难,很可能是读取上一帧的深度图,然后根据深度图来确定被遮挡的物体。而这个深度图不是用过一次后就扔掉的,在光影方面还有大用,后面细说。
无论如何,要让遮挡剔除技术更最大限度地在实现它的价值,地图采用缺少遮挡物的大原野肯定是不行的,因此我们看到崛起的地图风格和世界很不一样。若是没有使用这项技术,大地图中掉帧的现象可能会非常频繁。

峡谷状的区间地形,并不能说明崛起最开始是老MH的换区地图,更可能表明制作组是想让地图周边的景物被遮挡住,继而留出更多的性能来渲染远景
基于RE引擎在光源方面吃硬件性能的问题,技术人员还和美术人员一起,去除了地图各处多余的灯光影响范围。包括光源计算在内的许多计算过程被简化,大幅降低了显卡的负担。
许多地图上的小物件,例如地上的杂草,在离得比较远时会不予渲染,但如果画面中有东西突然消失,还是比较扎眼的。崛起是使用仿色图案,让小物件渐渐隐去。

仿色图案就是用不同密度的像素点,来模拟不同透明度的图案,密度越低,越透明。这样不仅实现起来很容易,而且在低分辨率下不容易被察觉到。即便被细心的人注意到,也会觉得是一种风格化的处理。
另外,距离摄像头极近的模型,也会被盖上一层仿色图案,保证玩家不会直接感受到摄像头穿模的影响。

细心的人或许经常注意到这个细节
此外,制作组还专门手动调整了各个物体的“隐形”距离,比较重要的猎具生物、简单的杂草,消失距离就比较远了,在switch上的低分辨率下,其实和直接消失也差不了多少,通常也不会引起注意。

这张图画面中间偏上的草,和上上上一张图同一位置的草是不一样厚的,原因就是这张图走得近了一些
因为这个度掌握得很微妙,所以在大部分地图里我们不会注意到地图小物件的消失,直到曙光DLC,不知道是不是地编搞错了,城塞高地的一个转弯处,杂草、木板连同石块,会在人物越过某条线时突然消失。
但在纵轴距离较远的地方,消失的时机却又是恰到好处的,这就让我得以在switch上也能直观把握到卡普空的地图优化痕迹。有兴趣的可以自己进游戏看一下。


这里提一下可能在《异度神剑3》这样的JRPG里比较明显的一项优化技术。那就是在游戏流程中使用较粗糙的纹理,在近距离人物过场动画时使用更精细的纹理。
在访谈中,一濑泰范称为了提高游戏过程中的流畅度,只在过场动画期间使用纹理流送,正常游戏时则不使用纹理流送。
纹理流送是一项处于优化和劣化之间的技术,纹理流送能让游戏推迟加载高分辨率的贴图纹理,直到需要渲染时才会进行加载。
在其他游戏里,这样能够加快游戏载入时间、减少内存占用,然后在玩家靠近时显示最高分辨率的纹理,在玩家远离时显示低分辨率版本。
但在switch版崛起中,允许玩家自由活动的游戏时间,似乎只加载适中品质的纹理,因此无论是自己跑,还是骑狗跑,似乎都没有遇到过比较生硬的贴图质量的大幅变化。毕竟switch原生的分辨率都不是很高,游戏的稳定才是最重要的。
最重要的优化,是制作组在崛起中,实现了屏幕空间环境光遮蔽(SSAO)和屏幕空间反射(SSR)。要知道在没有几何缓冲区的前向渲染管线中,原本无法实现这些功能的。
他们巧妙地利用了之前提到的“深度图”信息,推测出屏幕空间法线,实现屏幕空间环境光遮蔽的计算,粗略算出物体在环境光下产生的阴影。虽然计算出的阴影本质上因为缺少关键信息而不够准确,但其实已经很贴近在高性能设备中计算出的结果了。
崛起只在处理水面倒影时使用了屏幕空间反射,但本质是通过预先定好光线反射路径,让水面产生特定波纹的方式实现的。这虽然有一定漏洞,比如在一定角度下,光线会错误地消失掉,但这种情况仍比较少见。


SSR大多数情况下,是在猎人近乎平视时发挥主要作用,让怪物和它在水中的倒影呈现更生动的效果。
以上两种效果的硬件成本都比较高,基于屏幕空间,除了光线的反射方向之外,还需要考虑反射物体的法线等,对计算量和法线几何缓冲区有一定需求,所以并不适用于前向渲染管线。
好在崛起中并没有太多类似玻璃镜面等需要反射真实光线的场景,如果是追求《塞尔达传说旷野之息》那种波克布林鼻涕泡都能反射人影的效果,一个泡狐龙就足以让内存爆炸了。
此外,在雾气上使用了一个简化了的大气散射计算,让熔岩洞火山带来的地图氛围感更加优秀。

即便如此,一濑泰范仍透露出一些关于优化问题的遗憾,就是在崛起开发初期,并没有建立一个自动测试游戏性能的环境,在检查优化方面并没有面面俱到。呃……为什么有的人会认为百龙夜行是测试崛起同场怪物数量极限的一个工具,我多少有些理解了。
提到卡普空的游戏制作,不得不提它们的动作设计,不得不提到冷饭,也就不得不提到动作的移植问题。
实际上,由于崛起最初是在3DS上开发的,再加上Switch继续使用了ARM架构,所以最开始一濑泰范认为直接用上3DS时代的数据是最容易的。但当时世界已经发售了,只用旧的动作未免过于尴尬了,要知道,世界里的一些怪物,它们凸出的肌肉也是由专门的骨骼协同控制的,比起旧世代可是翻天覆地的变化。
于是,制作组决定移植世界的模型和动作,重合的怪物、装备的模型倒还好说,从世界开发过程中留下的高模,拓扑为崛起中的低模,只是必要的工作流程,不需要投入额外的精力,前面的一段已经说过了。
但摆在制作组面前的却是另一个层面的难题,世界模型上的高模,以及和骨骼配套的动作,要用怎样的方案在面数更少、骨骼更少的崛起模型中复现?
世界的模型面数之多、骨骼之多,是根本不可能完全移植到崛起的,于是,制作组先是根据Switch的CPU性能,以及崛起的特点,确定了一个较小的骨骼数量指标,随后才开始处理几何面。
动作方面,则是在保持住世界特点的前提下,用更少的骨骼来实现和世界类似的效果,并非简单的移植。
其中的具体操作,我推测可能是力的合成,外加去繁求简。
比如原先由三根骨骼分别控制前腿上半部分整体、肱二头肌、肱三头肌,来实现非常真实的动作。现在重新绑定,只一根骨骼控制一整块前腿的上半部分,然后微调,来减少容易出现的问题。
又比如由多个骨骼控制竖起的棘刺,此时由一个骨骼来统一控制……
当然,其中的艰辛是局外人难以揣测的,即便调用过去几个时代遗留下的的动捕数据,大概也需要进行许多微调。
此外,包括为操龙玩法加入的动作在内,许多需要新建的动作数量也非常多。比如原本世界里只是飞翔爪砸脸,飞龙的翅膀是不用动的,可到了崛起,理应被翔虫丝像木偶一样扯住,那是分出一根骨骼来控制,还是微调其他部分来实现类似效果?光是想想头也要炸了。
而且动作衔接在程序中并不是像我们操龙那样按几个键就能完成的,一切能在中途取消、变招、转向的动作,一定是由多个动作组合而成的。怪物转身时,也会根据具体情况从多个非常相似的动作里调用一个最合适的。
同时,由于加入了许多从世界移植过来的动作,动画团队中一些不适应世界开发节奏的成员,似乎并不能高效地进行新动作的创建和后续的检查工作。
访谈里还提到动作捕捉方面,除了卡普空内部的动作捕捉团队外,活剧座的动捕团队也发挥了不小的作用。彼时金狮子掰麒麟角的cg动作,就是由这个团队的成员杉原明完成的。崛起中有许多涉及翔虫和飞檐走壁的动作,而不少团队成员同时有挂威亚、担任特摄皮套演员的经历,这就让怪猎的动作能尽情向“超级系”的方向发展。

怪物的回归,难度比想象中要大。而换引擎本身似乎没有带来什么需要大量人投入大量时间精力才能攻克的难题,RE引擎作为一个起初就面向了多平台的开发工具,借《怪物猎人崛起》为我们展示了它的强大潜力。当下,世界遗留下来次世代着色器、模型、动作,以及崛起构建的RE引擎怪猎游戏逻辑,势必会推动下一部怪物猎人以20周年纪念作走向系列新的高峰,就让我们拭目以待吧。
RE——Reach for The moon——即将自己的目标定得很高,试图实现一些特别困难的事情。
另外,如果任天堂能在这两年推出性能贴近PS4的新机,新怪猎的移植可能也不会有太大的阻力。而且鉴于3代之后几作怪物的模型几乎毫无变化,卡婊再次扎在任系掌机上好几年的可能性也不能说是完全没有……
图灵(20系显卡)和安培(30系显卡、以及传闻中switch新机会使用的Tegra239)都兼容NVN,而考虑到同一批制作人员的熟练度……不敢想了。