前言:最近在读游戏引擎架构,然后读到了这篇去年的文章,深有感触,书中提到的很多东西在这里都有呈现,于是翻译一下,做个记录。
原文载于: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.
可以制作3A游戏的新引擎
游戏引擎正如其名是用来驱动和推进游戏开发,现在引擎这一工具,已经被当今世代很多游戏的开发所使用。卡普空也不列外,至今为止开发的游戏,都是长期以来使用被称为【MT FRAMEWORK】的社内研发游戏引擎所开发。然而,在卡普空代表作之一的「biohazard」系列的最新作「biohazard7 resident evil」(以下简称「生化7」)开发的时候,开发组希望能有一个能够提供更高表现力,提高开发效率的游戏引擎。「于是卡普空以“能够制作社内3A游戏的引擎”为目标,开始了名为「RE ENGINE」引擎的开发」(制作人 川田将央氏)。
于是RE ENGINE和「生化7」并行开发,于2014年4月开始启动。然而开发的道路却似乎并不平坦。「2014年末「生化7」Vertical slice(※一种在场景内塞入游戏的主要功能的试作品)完成。在这里设下了目标有必要让RE ENGINE以某种程度的形式呈现」(Lead Programer 石田智史氏)。非常严格的日程表和极高的目标,为了实现两者,以当时作为RE ENGINE的总经理的田原武文氏和石田氏为首的3人的少人数团队进行了引擎的基本部分的设计。那之后,增加了4~5名如图形程序师三嶋仁氏等核心成员,现在以大约50人的规模继续开发。
以世界最快速为目标的「快速迭代(Rapid Iteration)」
RE ENGINE主要的特征为,其开发迭代的快速。虽然在MT FRAMEWORK时代的卡普空在游戏开发效率上也非常重视,到了当今时代,asset的数量,整体容量等,伴随游戏规模爆发性的增大,到现在为止的引擎已经无法满足的情况增多了。比方说,游戏代码的一部分修改后的编译生成要花大概15分钟,从根本上进行游戏引擎的重新设计的必要性已经迫在眉睫。于是,RE ENGINE全部的架构已经焕然一新。以迭代速度为重点,进行各种功能的增加。
首当其冲的,是以C#作为游戏代码的描述(A-1)。RE ENGINE的全部游戏逻辑由C++转为用C#进行coding,于是从C++时代的让人烦恼的长时间编译生成中解放出来。虽然用C#开发被泛用引擎Unity等所采用,伴随着开发效率的提高,在大规模化上的性能问题也经常被提到。于是卡普空为了使RE ENGINE能够承担3A游戏的制作,开发了独立的虚拟机「REVM」。于是即使使用C#开发,也和C++开发并无差异,根据不同场景,甚至实现了比C++更高的性能。「使用C#,因为有了自动内存管理,不但减少了内存泄漏、经常性的程序崩溃,程序的开发速度也获得了极大的提升」
此外,RE ENGINE的远程实机编辑也成为可能(A-3).RE ENGINE实现了Runtime和工具组件(Tool)的完全分离。基于TCP/IP的同步,工具在PC上,Runtime在PS4上的分离成为可能。于是,在此之前为了在PS4等进行实机运行调试,必须要专门打个包,在实机上展开(deploy),而RE ENGINE则完全省略了这一过程。开发作业中能够进行实时(realtime)的实机调试确认。此外,也提供被称为Widget的Runtime上运行的工具,承担了一部分的作业效率化。VR等开发手法还未确立的领域,实机确认无论怎么实现,因为能和质量(Quality)直接联系,说这些功能是非常重要的应该是无可否认的。此外,基于Tool和Runtime的分离,MT FRAMEWORK时代的问题如运行时崩溃(runtime crash)导致的数据丢失也可以得到预防。
A-1 基于C#的实时编码(realtime coding)
RE ENGINE以迭代速度为优先,开发的时候,实现了把C#代码从IL(中间语言)向独立的微代码(micro code)的转换。由于这一点,无需重启即可实时呈现代码变更。
RE ENGINE 编辑器上进行游戏
增加了控制手材质(material)的C#代码
游戏运行无需中断,即可实时呈现。可以了解材质是否替换
A-2 基于REVM的性能比较
REVM的benchmark结果(PS4)。绿色的是C#(REVM),红色的是C#排除了其他功能(REVM),蓝色为C++。数值越小速度越快,REVM的性能并不比C++差,基于不同场景有时甚至会更好。
REVM开发时和发布(Release)时的性能比较。发布时实行以性能优先,C#代码由IL向C++转换。结果脚本的运行速度为原来的2~3倍
A-3 基于REVM性能比较
和PS4远程连接后,可直接在实机上进行编辑。画面左侧是RE ENGINE,右侧为PS4的实机画面。RE ENGINE上编辑的内容通过远程对象(remote object)即刻反应在PS4上。
待续。。。