暗黑3是如何设计随机地下城的
01关卡生成工具的组成:
- 地图生成工具:地图
- 交互元素生成工具:道具,怪物等
- 测试工具:保证合理性
02 部分一:地图生成工具
- 要有地图块,作为地图拼凑的元素
- 地图块在游戏中的表现
就是说,这个东西只是定了一个大致规则,是左右通路的。但是里面的摆放、设计,需要手动调整。
《暗黑3》的野外地图主要是固定布局,是为了叙事和固定游戏体验的考虑,需要确定所有玩家体验到的游戏内容大概是一样的。但怪物、宝物、目标和事件都可以有一定随机性。
- 随机布局由规则集自动生成
写的很简单:设置规则,生成
挺进地牢中的生成方法
有许多程序生成器可以生成合理的关卡布局,从而正确地管理节奏和奖励,也有其他生成器可以提供包含循环和紧凑布局的关卡。但是这俩同时存在的,除了这个游戏,还有一个Unexplored。
image
挺进地牢中包含了出生点,boss房,宝箱房等,还有下图的单向房
image
可以发现,boss房距离出生点不会特别短,宝箱房一般出现在死胡同和单向房中,这样,玩家只有把这一个环都打通才能打开宝箱。(红线是单向的,所以要绕一圈)
地牢的布局可以总结为一个flowmap:
HUB:中心房间,是较大的房间,有更多的出口。
在Gungeon中,每个阶段都有几个这些布局,称为flow。空的地方至少有四个,最多八个。它们不是生成的:每一个都是精心设计的。这可能是一个巨大的循环,或是一个重要的多叉路,或必须要穿越商店到达终点。
然而,流程图和地图实际上并不完全一致,在店家房间的正下方有一个额外的房间与之不相对应,还有奇怪的走廊房间。这包含了一些聪明的想法:
整个流程从一个随机选择的flow文件开始,如左侧的图。它是一个图数据结构,意味着它存储了房间之间的关系,但是没有存储位置。每个房间都有meta数据,说明了该房间是一个什么类型的房间,说明了它应该连接 哪些房间。这些连接实际上都是定向的--每个流程图从根节点开始,然后形成子节点树。然后,额外的连接破坏了树结构,用来添加循环。作者认为这是游戏开发中一种异类的操作,但是对于循环来说非常方便。
挺进地牢相邻房间,不是严丝合缝的,它们通过通路(通道,走廊)连接,所以可以用比较灵活的结构表示。但如果是死亡细胞那种,就必须包含位置信息等具体内容了。
在此基础上,有些节点会根据一定概率和规则去插入其他房间,
Flow Transformation
1.一些指定的房间,被随机长度的房间线取代。此功能仅在一些较大的阶段使用(大概是,难度增大的关卡)。同样,flow的某些部分具有备用路径,其中一个部分是随机选择的。此功能仅使用两次(?)
2.一些额外的节点被“注入”。此功能非常灵活,用于各种目的。
每次注入都包含数据,指定应插入哪些类型的内容、插入位置、生成概率以及必须满足的任何预制条件(如,有一个master round
,high curse
或还没有解救一个角色。)
例:密室通常在死角生成,但是有1/5几率与任意房间相连。它们有90%几率出现,没有先决条件。
游戏中几乎每个特殊房间都指定了节点注入,包括供应商(主店以外的)、监狱、壁炉和电梯房。
此时,生成器也会为每个节点选择一个特定的房间。这主要基于您处于的阶段以及需要什么类型的房间。有一个巨大的房间列表 - 近300个第一阶段,但它会避免挑选同一个房间两次。
类型"连接器"的节点的工作方式不同。他们的房间选择以后,而布局发生。这些通常是长而薄的房间,所以挑选一个明智的方向是至关重要的。
Composites
我们完成了flow,它被分解为“Composites”。每个Composite要么是一些房间的循环,要么是一组连接的、无循环的房间(即树结构)。这是通过在map中找到最小循环,并将它切割成一个复合来实现的。
Composites
上面的图,分割成最小环,以及单独的树状结构。它们先各自布局,后面会组合到一起。
网友评论