在日本CEDEC2022(今年的日本游戏开发者大会)上,来自From Software的系统设计总监松本龙,分享了《艾尔登法环》的地图设计理念,以及一些在开放世界游戏的地图制作过程中的效率化和自动化经验。
2022年2月,由日本From Software开发,万代南梦宫发行的幻想开放世界RPG游戏《艾尔登法环》迎来全球发售。这部宫崎英高执掌下的From社历史上体量最大的游戏,在发行不到一个月的时间内,全球销量即突破1200万份。该作集成了这家工作室历史上《黑暗之魂》系列、《只狼》等游戏的制作经验,并将其在一部体量更加庞大的开放世界大作中发挥地更加淋漓尽致。在刚刚揭晓的2022年金摇杆奖中,《艾尔登法环》也拿下了年度最佳游戏的大奖。
各位好,我是松本龙,于2009年加入From Software,历任系统策划组成员、总监,现担任该司游戏设计部门的副总监。
自上半年发布以来,《艾尔登法环》这部由超大的开放世界地图构筑而成的动作冒险RPG,赢得了很多玩家的喜爱。与这部新的魂系作品中的地图相比,我司的历史巨作《黑暗之魂3》的地图就像是一粒豆子那样,规模极小。再加上《艾尔登法环》的地下及各类副本地图设计,这部作品的总地图可以说是极为宏大。
所以,如果采用和公司历史上的作品类似的地图设计和开发方式的话,巨量的制作内容恐怕会带来诸多问题。所以本次分享为大家带来针对这些难题而采用的策略,以及具体的设计思路、实现方式。
一、地图的构成和制作方式
首先想讲讲地图的构成。在过往我们发行的《黑暗之魂3》当中,地图的数据会随着玩家向某些地区的接近而逐步加载出来。在这次制作《艾尔登法环》的过程中,我们团队也一度认为可以采用类似的设计方式。
但是,在《艾尔登法环》满是各种“遗迹”的开放世界地图中,玩家移动的自由度极高。比如宁姆格福附近,就有多达11个遗迹点,加上预测可能性很小的玩家移动方向,这就势必会带来资源加载的问题。
基于此,我们将地图分为了单位更细的网格单元,以“逐步加载某网格附近的资源”为策略,做了整体地图的构成。此外,我们也没有将所有的地图内都划分成相同大小的网格单元,而是在重要的boss战地图/副本、以及需要进行高速移动的场景中,尽可能地将网格单元做大化,方便场景整体的加载。举例来说,我们划分的最小网格单元为256m×256m,也会有更大一些的比如1024m×1024m的网格划分,这样一方面可以对游戏内地图的总体网格数进行适当性的控制,同时有可能可以保持一些远景的加载质量;另一方面,在与大型的boss或者敌人进行交战时,非必要可以不使用过于细致的网格进行配置及加载,因为这些敌人的移动幅度本身就比较大,大网格的设定也可以让玩家从远处就进行攻击操作。
接着,我想给大家分享一下《艾尔登法环》地图的制作方式。在制作《黑暗之魂3》时,我们的做法是先将作为背景的建筑物及周边大致地图搭建起来,然后再配置可交互的场景内物体、远景等。但是在《艾尔登法环》这种巨幅地图的制作过程中,这一方式可能不太适用了。与之相对,《艾尔登法环》中的地图仅为地形及其起伏态势等;我们会先把这部分内容制作好,而后在其中进行素材、建筑、物体等的添加。这种制作方法的好处在于,可大量减少仅使用一次的地图资源,对一些资源在不同地图和环境当中进行复用;此外,将各类地图内资源、物体进行多样化的组合也可以造就很多风格不一的地图样式,以此丰富玩家的各类视觉体验。
二、地图中寻路系统的设计
敌人或者NPC在地图当中移动时,需要考虑各个障碍物的位置。在《艾尔登法环》中,我们采用的是Navmesh寻路系统,敌人和NPC们会对地形和路线进行探索,而后进行自主移动。在这方面,《黑暗之魂3》则是有一部分移动路径是自动生成的,关键部位则需要人工进行制定及调整。
在体量巨大的《艾尔登法环》的开放世界当中,因为敌人被设定为可以在具有高度差的地形中进行移动,在一些可以进行跳上、跳下的操作的地图部分,我们也是利用自动生成的数据对地图进行了制作。
而对于大体型的boss来说,要对非常小的障碍物、或者是有多层的高度差的地形进行判断的话,会变得非常困难。针对这些大体型敌人,我们制作了专门的寻路和探索路径;相比一般的敌人来讲,他们对于高度差的判断会更加大模块化,即可以无视一定的高度差及障碍物,这样也符合现实设定。
三、性能问题及地图内依赖关系的检测
这么大的地图,加载负荷和bug检测方面的工作如何呢?会不会成大问题?关于这方面,我们在游戏内引入了自动测试功能。游戏会自动从地图的任意一个角落跑遍整个地图,来收集各种地图加载、处理的负荷数据以及各类bug、报错数据。在这个游戏开发的过程中,经常会对非常多的场景、NPC及地图等要素进行追加、变更或者删除,这种定期的检查系统,让整个团队在保障地图质量的同时,能够尽可能地减少上线后的问题。
在自动测试的过程中,我们比较关注性能及内存占用情况的问题。比如有没有帧率突然变得恶化的地方,内存占用突然升高的地方等等。因为在开发时,地图中经常会不断有不同大小、样式、形态的资源加入进来,而这可能就会在不知不觉中让整个场景加载的负担变重,情况恶化;一旦发生比较根本性的问题,还经历了长期的积累,就容易涉及到大规模的后期调整,对于开发进度以及游戏整体质量来说是极为不利的。
此外,在制作地图的过程中,我们还有一个工具协助推进工作,那就是“依附关系数据工具”。这个工具的作用是,可以对地图资源及数据的依附关系进行调查,判断在数据出现变动时是否会影响其他数据的存在和功能,是否会新出现空置的资源,并直接生成可视化结果。这样就可以大大减少某地点的资源被替换或者错误被修正时,对其他部分的地图产生负面影响。
另外,在《艾尔登法环》中,各“遗迹”地图内会有非常多的配置物,为了减轻游戏运行压力,我们会尽可能地将看不见的区域进行省去(比如墙壁的外侧等)。而这种“地图元素的显示与否”的设定,也是自动生成的。此前,这些都需要画面和场景制作相关的同事手动进行设置,但从《只狼》的开发经验来看,因为涉及到很多高空的动作及镜头,如果要全部进行人眼及手动的判断,就变得非常困难;在此基础上,我们想办法将其改成了自动生成的设定。
而在From Software,我们采用的方法是“显示组合”,这种方法也是从《只狼》开发时就已经纳入公司的开发流程了。简单来讲,这个自动生成功能的流程大致如下:
总体来说,本次分享主要介绍了《艾尔登法环》中地图制作的构造方式,寻路系统的自动化,性能问题的自动检测及可视化,数据依赖关系的表格化,以及显示范围的优化等内容。在该作如此庞大的开放世界内容制作过程中,很多新方法和工具为开发人员带来了更加效率化和自动化的工作模式,从流程及工具上保障了游戏最后发行时的质量。