让"世界最速开发"成为可能!承担《生化危机7》开发任务的卡普空新引擎"RE ENGINE"(2)

前言:最近在读游戏引擎架构,然后读到了这篇去年的文章,深有感触,书中提到的很多东西在这里都有呈现,同时此文无论在引擎设计还是游戏优化方面,以及对于游戏架构的学习上都有很多启发,于是翻译一下,做个记录。

原文载于:https://cgworld.jp/feature/201702-cgw222T2-bio.html

 

2017年1月26日发售的生化7。用来开发这个游戏的是卡普空社内研发的引擎[RE ENGINE]。融入浓厚的卡普空游戏哲学的最先进的本引擎,待我们来详细了解。

※本文从 月刊「CGWORLD + digital video」vol. 222(2017年2月号)转载

EDIT_藤井紀明 / Noriaki Fujii(CGWORLD)、山田桃子 / Momoko Yamada
©CAPCOM CO., LTD. 2017 ALL RIGHTS RESERVED.

 

不限于单个游戏的灵活的扩展性

       MT FRAMEWORK时代,由于综合了各个开发环境的便利性,很多游戏使用了游戏引擎,虽然如此,还是有很多问题会产生。其一就是因为某一游戏的对引擎进行定制改良导致的兼容性的丢失。比方说,Asset的管理方法等极大依赖于所开发的游戏以及开发团队。由于这一点,虽然引擎开发组从各个团队收到了大量的追加功能的要求,但如果满足所有要求的资产浏览器(Asset Browser)实现了,反过来使用的复杂程度会变的很高。然而虽然如此,这些功能不实现也不行,最后连同游戏,实现个别功能的“别的游戏引擎”大量地产生。这些“别的游戏引擎”之前没有兼容性,Asset和资产的互用也不可能。

       在这里,为了解决这个问题,RE ENGINE采用的方法是各个功能的模块(module)化。比如说「生化7」,物理演算使用Havok,声效系统使用Wwise。当然卡普空也有自研的物理演算库等,在「生化7」这里重视艺术家使用习惯的工具进行开发,决定采用中间件(Middleware)。这和已经使用RE ENGINE进行开发的其他游戏并不一样。RE ENGINE为了使其中各种内置库的使用和渲染系统系统的替换,中间件的整合(Integrate)等能够进行选择而做了设计。这样在获得了引擎核心部分的同时,针对游戏的灵活调整成为可能。当然在这其中,引擎的基础部分已经做了统一,保证了各种资源的兼容,实现了互用。

       除此之外对RE ENGINE的兼容性提供极大辅助的是使用Python的宏扩展功能。RE ENGINE虽然说怎样程度的可选功能都可以设计实现,但是要把所有功能都涵盖在一起非常困难。在这里RE ENGINE为了使各种功能能够被使用(Access),通过Python开放了大量的API。通过Python脚本,各类的工具的都可以在某一部分进行功能的扩展。特别的,受Python被各种DCC Tool大量采用的帮助,在艺术家想要的功能中想要的地方灵活拓展成为可能。

B-1 基于Python宏的功能拓展

 

 

RE ENGINE上的Python宏的记录情况。Python宏用的编辑器已经提供。

通过Pyhton可以连接的大量的RE ENGINE API。生成了易读的文档,样例也很丰富

艺术家制作的Python宏。只点击一次,即可从Maya向RE ENGINE导出,自动地转化为Asset。其他有趣的地方还有,通过Telemetry收集的用户游玩数据在RE ENGINE上呈现为热图(Heat Map)以及宏等。大小各异的功能合在一起,现在已经有超过100中宏,每天仍在增加。

 

「生化7」呈现可能的最先进的图形

       对于RE ENGINE,还有一点想要和开发速度一同获得进化。那就是最先进的图形表现。作为RE ENGINE开发目标的游戏「生化7」这一3A游戏。影片一样的逼真表现(Photorealistic),以及要实现完全的VR所需严格遵守的FULL HD 60帧,承担表现和性能一起达成的严苛目标。构建满足这一要求的渲染系统(Rendering System)的难度想当高,RE ENGINE巧妙地实现了。

       首先渲染系统采用了群组延迟(Clustered Defered)技术。在采用多个房屋中来回这种关卡设计的「生化7」中,不但房屋中设置的光照(Light)如何剔除(Culling)很重要,深度方向的实现光照剔除的「Clustered」可以说是非常理想的。此外,需要对应包含PS VR在内的多个平台进行开发的「生化7」,为了让性能调整简单易行,使用现行标准的「Deffered」可以说是必然的了。为了尽可能减少阴影计算,实现了缓存系统。

       对恐怖探究到底是「生化7」的理念之一,不管是静物还是动物,要求能够有整体感的光照。对这一点采用了「探测网络」(Probe Network)实现的间接照明。以往,卡普空经常用光照贴图的方式使用这种间接照明,RE ENGINE完全废弃了这种用法。「采用了探测网络,一直以来作为问题存在的角色和背景之间产生的光的差异得到了解决。此外,以往为了生成光照贴图时很长的烘焙(Bake)时间也得到了节省,主动承担了高速迭代的要求」三嶋氏显露出自信地说。探测网络的采用后带来的效果也会呈现在内存以及处理负荷上。相比光照贴图的方法,探测网络是的永存减少了2/3。而且光照贴图UV的Layout不存在了的帮助,内部可以实现实例化渲染(Instancing Rendering),同时也有助于减轻CPU GPU的处理负载。这些点对于承担提高性能的目标的「生化7」可以说是非常重要的效果。

C-1 阴影缓存

 

最终的渲染场景

基于不同的Scene使用的不同的Shadow Map。这些Shadow Map被缓存。直到映照出动的物体(角色等)时才会被更新。对于游戏来说,实时阴影的描绘会产生极高的性能消耗,在这一点上实现高效化对于RE ENGINE的渲染系统来说非常重要。

最终的渲染场景

探测网络可视化图像,探测时,连接关系通过四面体构造来进行管理,,游戏内通过二叉空间分割树(BSP-Tree binary space partition tree)来进行查找。查找时会采用对一帧之前的结果进行重用等性能改善的措施。

探测网络实现的间接照明。虽然不用再考虑以往采用光照贴图时场景的法线情况,通过使用探测网络,也可以呈现出有立体感的阴影。

各种探测影响度的综合

 

后续:http://www.cnblogs.com/kira-trash-can/p/8299893.html

posted @ 2018-01-16 00:16  KillerQueen  阅读(593)  评论(0编辑  收藏  举报