[Game Design] Spelunky 地图生成器教程

1. 生成路径

你有没有想过 Spelunky 的关卡路径是如何生成的?下图是一个完整的 Spelunky 工作副本,经过修改后只向你展示关卡生成算法的第一部分:在尖刺、箭头陷阱、敌人和宝藏添加到地图之前,生成关卡的解谜路径。

在这里插入图片描述
该关卡由 4x4 网格中的 16 个房间组成。有 4 种不同的基本房型:

  • 0:不在解决方案路径上的side room
  • 1:保证有左出口和右出口的房间
  • 2:保证左、右、下都存在出口的房间。如果它上面还有另一个“2”房间,那么也保证有顶部出口
  • 3:保证左、右、上都存在出口的房间

它所做的第一件事就是在顶行放置一个起始房间。房间类型并不真正影响起始房间,因为它是一种特殊情况,但一般来说起始房间是类型 1 或 2。

每次放置房间时,首先它始终是类型 1 房间(左/右)。

然后,它决定下一步去哪里。它从 1 到 5 中选择一个(均匀分布)随机数。数字为 1 或 2 时,求解路径向左移动。数字为 3 或 4 时,求解路径向右移动。数字为 5 时,路径向下移动。(如果解题路径碰到屏幕边缘,则会立即下降并切换左右方向)。

现在的问题是:如果我们向左或向右移动,一切都很好,因为我们已经在一个房间里安置了左/右出口。但如果我们决定向下移动,就需要改变我们所在的房间!因此,发生器会将当前房间重写为类型 2(总是有底部空降),这样我们就可以向下移动了。

一旦进入下一个房间,它就会询问我们放置的上一个房间是否是类型 2(底部下降)。如果是,那么这个房间就必须是另一个类型 2 的底部下降房间,或者类型 3 的倒 T 形房间。由于 2 型和 3 型都有左/右出口,因此我们可以重新开始算法。

如果我们在房间的底排,并且我们尝试下降,我们会放置出口房间,而不是下降。

现在,我们已经生成了整个解决方案路径(上图红色部分)。最后,我们要做的就是在不在求解路径上的每个网格空间中随机添加一些 0 型房间。这些房间的任何一侧都不能保证有出口,这就是为什么有时你会看到它们被墙隔开。

如果有3或4个0型房间形成一条垂直线,那么这些房间就有可能成为蛇坑。如果我们决定做一个蛇坑,我们从上到下,根据我们想要的蛇坑的深度,放下一系列房间类型7 8 9,或7 8 8 9。 (您会注意到此时蛇和珠宝是手动放置的,因为它们确实是景观的一部分,并且不像大多数其他敌人那样随机放置。)

2. 生成房间

您有没有想过 Spelunky 的关卡房间是如何生成的?下图是生成 Spelunky 关卡的各个房间。在陷阱、敌人和宝藏添加到地图之前。

在这里插入图片描述
在上一课中,我们学习了 Spelunky 如何布置最佳解决方案路径,本质上是如何通过有保证的解决方案创建关卡的“迷宫”。在本课中,我希望演示各个房间的布局方式。

Spelunky 与大多数游戏不同

在传统的 2D 瓦片式平台游戏中,您需要使用关卡编辑器来构建地图。它可能是这样的
在这里插入图片描述
在这种编辑器中,您可以说“在位置 (64, 128) 处会有一个草块”。 《Spelunky》不是这样运作的。

在上一课中我们了解到 Spelunky 有四种基本房间类型。每种房间类型通常有 8 到 16 个模板可供选择。这些模板由基本的房间布局组成,其中包括静态块和概率块的混合以及障碍物块。我现在将逐一解释。

房间模板
每种房间类型都有许多不同的房间模板。例如,查看上面的工具,找到一个类型为 "1 "的房间。这将是一个有左/右出口的房间(也可能有其他出口,但肯定是左/右)。现在在键盘上按几下 "1 "键。你会看到房间的左/右出口保持不变,但房间的整体布局发生了很大变化。这是因为引擎每次都会选择新的模板。这些模板决定了房间的整体布局:是开阔的,还是幽闭的,还是布满平台的,等等。

这是模板的示例:

1100000000
40L6000000
11P0000000
11L0000000
11L5000000
1100000000
1100000000
1111111111

模板是一个 10x8 的方格。0 "表示空格,"1 "表示有 100% 的几率出现实心砖,"L "表示梯子,"P "表示梯子顶端的平台。我将在下文中解释其他选项,但现在您可以查看上面的模板,看到地面是实心的,左边有一堵 2 砖厚的墙,墙顶有一个小缺口,还有一个梯子通向缺口。

静态和概率块
我刚才描述的方块就是我所说的静态方块。它们的工作原理就像关卡编辑器中的普通方块一样:你说 “这里有一个方块”,那里就会一直有一个方块。

上面的 "4 "瓦片就是我所说的概率块的一个例子。4 "意味着有25%的几率在梯子顶端出现可以推的块。Spelunky的资深玩家一眼就能看出这一点:有时你走到梯子顶端,会发现有一个方块需要你推到下一个房间。而有时它却不在那里。其他概率地砖会显示 "这里有 33% 的几率出现尖刺 "或 “这里有 50/50 的几率出现空格或实体块”。

试试在上面的工具上按几下 “3”。我用白色突出显示了概率瓷砖,如果你盯着它们看,你会发现房间的其他部分保持不变,而白色瓷砖却在变化。

障碍物块
5 "和 "6 "就是我所说的障碍块。障碍块是一个 5x3 的方块,通常会形成某种有趣的结构,供玩家操控。障碍块本身通常由概率瓦块组成。下面是一个 "5 "障碍块模板的示例,它可以放置在地面上("6 "则可以放置在空中):

00000
00102
71177

同样的砖块规则在这里也适用:"0 "代表空砖,"1 "代表实砖。你马上就能看到正在建造的小台阶。7 "表示有 33% 的几率出现尖砖,否则就是空砖。因此,如果玩家运气不好,地面上就会有一床尖刺,你需要跳到台阶上才能越过尖刺。而 "2 "则有 50/50 的几率是空的或实心砖。因此,有可能会出现一个额外的平台,让玩家越过尖刺。也有可能根本就没有尖刺,这只是玩家需要跳过去的一小块区域!由此可见,如果设计得当,一个相对较小的障碍块就能在游戏中创造出无数的场景。

查看上面的工具,你会发现许多 5x3 区域都用红色标出。这些就是障碍块。如果你经常按 "2 "键,你会发现这些红色区域不会移动,但里面的东西却发生了很大变化。这是因为我们保留了房间模板,所以那些表示障碍物块位置的 "5 "和 "6 "瓷砖根本不会移动。不过,我们仍然让引擎选择不同的障碍物块模板,因此一个模板可能涉及地面上的尖刺,而另一个模板则可能涉及一些浮动平台。如果你多次按下 “3”,我们就会坚持使用相同的障碍物块模板。这意味着障碍物方块的变化要少得多。事实上,如果你仔细观察,就会发现只有障碍块内部的白色瓷砖会发生变化(因为这些瓷砖是概率性的,其余的都是静态的,就像上面的 "1 "瓷砖)!

就是这样
我没有提到的最后一个问题是:房间也会随机左右镜像。大多数时候您不会注意到这一点,因为大多数房间都是对称的。但你可能会注意到,当连续按“3”时,房间似乎会翻转。这些房间是不对称的,这就是那里发生的事情。

所以就是这样。这就是 Spelunky 生成其基本平台布局的方式。通过使用手工布局和概率图块的优雅组合,游戏在保持新鲜感的同时产生了人性化的挑战。请继续关注下一部分,我将展示如何放置敌人和陷阱!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值