《暗黑3》是如何设计随机地下城的?

作者:蓝为一编译 为一笔谈 2020-06-22 7k
本文整理自《暗黑3》项目组的资深游戏设计师Ed Hanes在Diablo YouTube频道上对社区玩家的分享视频。其中谈到了他们是如何运用这套工具生成随机关卡的。

01 关卡生成工具的组成

《暗黑3》的自动关卡是由一套地图生成规则和交互元素生成规则的规则集生成的。而一个规则集可以生成许多不同的关卡。

玩家打的不同的大秘境可能都是源于不多的几个规则集。开发组只用对一个规则集进行测试、迭代、优化就可以了。

《暗黑3》的关卡自动生成工具由以下几个子工具组成:

  • 地图生成工具:用于生成承载关卡的地图
  • 交互元素生成工具:用于生成怪物和如宝箱、木桶等交互性物品
  • 测试工具:用于保证规则的合理


本文将就按上述顺序展开介绍。

02 部分一:地图生成工具

基于地图块的设计

《暗黑3》的关卡可以分为固定布局(Fixed Layouts)和随机布局(Dynamic Layouts)两种。无论是固定还是随机的,地图都是由地图块拼接而成的。

地图块分为16种,一个关卡大致会用到18-70个地图块。


每种地图块下方的字母对应的是入口/出口的方向(Entrance/Exit)

  • S: South 南方
  • E:East 东方
  • N:North 北方
  • W:West 西方


而Fill代表特殊填充的部分,Fill的具体用法将会在后面展开。

每一种地图块在一个环境风格下还可以有不同的具体形式。一种的EW地图块,虽然共性是有东西两个出入口,但是内部路径是如何,还有多种形式。

地图块在游戏中的实际表现


上图是一个EW(东西)地图块在游戏中的实际表现。

  • 右侧是导航网格开启的状态
  • 绿色是玩家和怪物可以移动的区域
  • 其他颜色是不能通行的区域
  • 蓝色是硬边界(Hard Boundaries),即玩家、怪物和子弹无法通过的区域
  • 固定布局由手动将地图块拼凑而成

  • 《暗黑3》的野外地图(Exterior Environments)主要是固定布局,威斯特玛城(Westmarch)是一个例外,它也是固定布局的。


考虑使用固定布局主要是由于叙事和固定游戏体验的考虑,因为我们在叙事时需要确定所有玩家体验到的游戏内容是大致一样的。

但怪物、宝物、目标和事件的位置都可以有一定随机性。

以幕达厄古绿洲(Dahlgur Oasis)地图为例。


在上图可以发现有一些被挖空的地图块,这就是3.1.1中提到的Fill地图块。

这些地图块依据每个野外地图的不同会有针对性的设计。这些地图块有专门设计的随机规则,这样玩家即便进入地图时知道出口在哪,但是整个路上体验到的事件、怪物都会不一样。

我们再加入卡蒂姆 - 奥卡纳斯(Caldeum to Alcarnus)和凄凉沙漠(Desolate Sands)这两个地图作为案例。


随机布局由规则集自动生成

随机布局也是使用的地图块机制。区别是,固定布局我们手动的拼凑而成,而随机地图块是让引擎自动生成的。

而在把任务交给引擎之前,我们需要先定义布局规则。


上图就是随机布局规则设定工具的一个截图。

左侧用来增加各种规则,而右侧是点击“Reseed Previewer”之后随机生成的一组布局。左侧的规则和右侧的地图块的编号是一一对应的。

我们可以按照编号来试着解读一下左侧的流程:

1. 增加一个房间
2. 增加一个与1相连,单向的屠宰场(Abattoir)类型的房间
3. 增加一个与1相连的出口型房间
4. 增加一个与1相连的房间
5. 增加一个与4相连的房间
6. 增加一个与5相连的事件(7-12这6种事件中随机生成)
13. 增加一个4地图块的循环式(Hub)房间
14. 增加一个2地图块的并列式(Spoke)房间与13相连
16. 增加一个4地图块的循环式房间与14相连
17. 增加一个与16相连的入口型房间

那么这个预览图在游戏中的实际效果如何?


而如果我们再次点击“Reseed Previwer”则可以生成同一规则下的另外一个关卡地图。


03 部分二:交互元素生成工具

有了关卡地图之后,我们的随机关卡还需要有交互元素。

配置交互元素

交互元素的生成规则是由一个内部称为Gizmos的工具完成的,直译叫做小玩意儿,比较好理解为什么这么取名。


通过上图我们可以发现,我们配置了至少4种元素,分别为:

A. 木桶(Barrels)6-14个
B. 楼梯(Floor Tiles)10-15个
C. 武器/盔甲架(Weapon/Armor Racks)3-5个
D. 普通宝箱(Normal Chest)1个

除了定义数量区间,我们还可以发现每种元素还有更细的规则设定,以上图的普通宝箱的参数为例:

  • No Spawn Chance:不生成的几率
  • Spawn Type:生成方式(有Gizmo Actor, Encounter<遇怪/遭遇>,Adventure<冒险>)
  • 宝箱类型
  • 重量(weight)
  • 强制随机朝向(Force Random Facing)
  • 受Gizmo密度参数的影响(Affected by gizmo density multipliers)
  • ......


由于不了解细节,因此翻译得也有些生涩。

上述这些参数设计师会在收到反馈后不断迭代,以优化这个关卡的体验。

配置完上述规则之后,生成后的结果如何?


图中的红圈是某些事件/元素的触发范围。而每个字母指代的是一类元素,比如4.1.1中提到的木桶、楼梯、武器/盔甲架和普通宝箱。


将触发范围关闭后可以看到如上的效果。

配置怪物规则

怪物的规则由于特别复杂,因此需要用一个单独的工具来配置。

配置怪物的工具名字叫做Spawn。下图是一个截图。


配置怪物由两部分组成:

  • 创建怪物组
  • 配置怪物组


我们逐一介绍。


左侧我们可以发现有多个怪物组,至少有这么几个参数:

  • 权重
  • 几率
  • 最小经验
  • 最大经验
  • ......


每个怪物组的具体内容都不一样。

右侧就是编辑每个怪物组的具体内容的区域了。

首先要确定的是怪物的种类。


《暗黑3》中怪物的品质分为普通(Normal)、精英(Champions)、稀有(Rare)和特殊(Unique)至少这4种。之后要配置他们的数量区间等参数。

注意,这里不是单只怪,而是怪物组(Gourp)。

之后在下方则可以定义每一个品类的怪物组的具体类型。


04 部分三:测试工具

在设定完所有规则后,可以运用自动工具来测试规则是否合理,是否可以成功生成,是否存在bug。

在地图块规则编辑的地方下方可以看到Dungeon Tester的工具。在这里可以填写测试的次数(也是地图生成的次数,具体有没有平衡性之类的测试的性质就不得而知了)。


虽然图上只填了1000,但是他们平时要测试时,填写的次数会比这个大得多。

之后测试工具会自动测试这个规则集下的不同版本的关卡,之后会返回下方的结果。


如果返回的有红色或者橙色,则表明规则设定有问题。设计师需要根据测试工具日志来进行调整。

05 玩家测试

在完成随机关卡规则集的设计之后,团队内部会体验和测试这个规则集。

之后会发布到PTR上(Public Test Realm),也就是测试服上,来让玩家也实际体验和测试。

设计师会依靠玩家和社区发现的问题来优化这个规则集,同时也会用bug追踪工具来定位问题。

对于《暗黑3》开发组来说,PTR是非常重要的一环。这也是开发组发布这个视频的目的 -- 开诚布公地和核心玩家沟通,告诉玩家设计流程,从而让PTR的玩家也感受到自己是设计不可缺少的一环。

相关阅读:
《暗黑3》是如何重新设计技能系统的?
《暗黑3》设计师是如何评价自己游戏中陷阱的设计?

作者:蓝为一编译
来源:为一笔谈
原地址:https://mp.weixin.qq.com/s/ij6ZStEKHzeNP4QjPRorMA

相关推荐