欢迎光临散文网 会员登陆 & 注册

马尔科夫?无记忆过程?更高更大更强的特征!——由地图生成引发的游戏设计思考。

2023-08-10 09:09 作者:优纽维特工作室  | 我要投稿

这个世界有着相当多的沙盒游戏,创造了与之相匹配的地图生成。这些地图有着各种各样的类型,凭依着各自不同的世界观。很高兴能讨论一下如何去和一个沙盒地图进行更强的交互。 当我们初次进入一个沙盒的世界,最直观的交互就是你面前的方块。方块的分布不能一成不变,这让我们丧失了向更远处探索的欲望,毕竟从期望来说,向东两万六千里和足下将没有区别。提供一个描述分布的特征,非常的简单以及非常的普遍,从地理书上讲来的五大地形就能让游戏生动很多。如果我们想让地图变得更加魔幻,不妨在背景设定中添加架空的特征,这往往能够形成一款游戏独一份的特色。但是,因为沙盒世界太高的随机性,虽然我们在地图生成上提供了特征,但是这些特征并不能向方块本身一样去设计出更加复杂的交互。(特别是在和人文相关的交互) 所以为了更强大的互动系统,在地图的生成中就应该采用更加强大的特征系统。 好的,进入正题,首先回顾一下伟大的历史,那里有着两颗闪耀的明星:我的世界(Minecraft)和泰拉瑞亚(Terraria)。 1.    浅谈生物群系(落) Biomes,很有特色的一个设计。它总是在一个很直观的地方描述着地图。比如在泰拉瑞亚的世界中去特定的群落中刷取材料,或者在我的世界中体验不同群系的自然风景。相较于海拔,温度这些薄的特征,Biomes为我们提供了一个直观丰厚而且颇具代表意义的特征集合。 先看一看泰拉瑞亚的生物群落,对于泰拉瑞亚世界来说,它并不会保存生物群落的具体的范围。相反,它的生物群落是相当的动态,只要在范围内相关方块数达到了一个相对应的数量,一个生物群落就诞生了。而生物在视野外生成的时候,和群系相关的块也会提供一份信息:即生成时所在的块。 对泰拉瑞亚来说,生物群落这一特征是完完全全依赖于地图上实实在在的块。而且这一特征的提取完完全全仅仅依赖于块数这一非常简单的信息提供者。这导致我们可以轻而易举地创造一个极小的生物群落来满足NPC的居住要求,同时,我们只需要调整敌怪可能生成的区域的块的群落类型就可以改变敌怪的生成来满足我们对敌怪相关资源获取的需要。 这种设计是非常好的,因为其基于块数的设计非常完美的解决了玩家的很多需求的同时,也保证了玩家可以在自然生成的群落中有一个明确的群落范围划分(这很大程度上依赖于地图生成的时候将会生成非常庞大的群落,比如雪地和丛林)。这个设计似乎还巧妙的促成了肉后时邪恶和神圣在地形上的快速蔓延,通过对沿途的块按照密度进行污染。只要受污染的块的数量较多,也是轻轻松松就能形成神圣地和对应的邪恶地。很简单就可以完成肉后新环境的展开。 而我的世界所采用的生物群系,则是完全不同的情况。原因其一来自于我的世界的无限地图要求其必须保存生物群系的分布情况而不能改变。这可能是要保证其不会出现同一种子但地图不同的情况。而泰拉瑞亚在创建地图时就完成了所有的块的信息的确定,就算保留对生成时的群落的特征描述也会因为全部信息的确定而变成冗余的信息(冗余是因为群落确确实实在靠同类块的数量确定)。 我的世界另外一个情况在于生物的生成也依赖于群落,但其并不像泰拉瑞亚一样不同的群落生成的生物完全不同。因为其固定的群落范围,所生成的敌怪便更加依赖于其而不是更依赖于生成时的环境。群落,这一特征,似乎也仅仅在描述了这块土地的特征之后 便不再去发挥作用。从通关的角度来看,群落本身的差别很难对游戏流程的进行造成太大的影响(可能要排除新的版本要将图书管理员的书籍售卖种类和群系进行绑定)。 但是,一旦我们的游戏系统变得更加复杂与真实的时候,这两种方式的弊端便会显露出来。 首先是关于泰拉瑞亚的群落判定,过于简单且判断范围相较全图属实很小一点。这个方法适合去刷怪,但是不适合去创造一个生态。一方面陨石坠落、古老的光明和黑暗之魂被释放等会在全图范围内的改变地图信息的情况仅仅只在极少数,沙盒的各种特色仅仅面对玩家开放。另一方面如果监听整个地图信息并去维护生态将是非常困难的事。同样的问题也存在于我的世界。事实上,这只是我们为什么难以在沙盒中去讲一个完整故事的原因之一。 让我们先抛开辩证法,仅仅思考一下,如何去塑造一个地图的体系来配合一个复杂的系统呢?抛开人文不谈,仅仅是自然界的变化就让我们难以去处理。如果在沙盒的世界中,有一些地方发生了火山爆发,有一些地方发生了地震,有一些地方发生了海啸,这些具有高破坏力的地形变化在飞速地摧毁我们最一开始所建立的世界。 太多的动物在选择地形,而一次火山爆发出凝结的火山熔岩可以重新塑造一大片的地形。当生物重新将安全的火山划入自己的活动范围时,一些东西已经悄悄改变了。我们需要记录这些变换,将特征的改变告诉周围的生物。显然地,一些对地形要求苛刻的生物可能就会进行迁徙。 有一个悲哀的事情在于,你为什么认为我们各个玩家每个人都配备了一个超级强大的计算机来讲整个世界的事? 但是,总有一些方法去绕过世界的规则。比如使用能力相同的替身——白金之星。或者说,我们画一个饼。

好吧好吧,我们讲一些现实点的问题,比如怎么去搞一个真真实实的Biome。 这里选择直接偷懒,用马尔科夫链来模拟生成Biome的边界的过程。虽然这并不是很可取的选择。 2.    为什么使用马尔科夫链来做块和边的生成。 生成的时候,找一个思路,按照生成的顺序一个块一个块,一条边一条边的生成。在已知上一条边,已知相邻的上一个块的时候,如何去选择下一条边和下一个块就是我们要必须明确的。按照这个顺序,我们可以发现,寻找下一边和下一块可以抽象成一个马尔科夫链,状态与下一状态构成了下一元素的转移情况。拿到一个马尔科夫矩阵,就去求它的平稳状态。平稳状态就是我们在无限可能的边上去生成下一条边,这帮助了对一个块的第一条边的分布的获取,对第一个区域的第一个块的分布的获取。 换个描述的角度,一个官员率队探测地形绘制地图时,总会得到统计出的频率,我们在进行相反的事,用一个架空的模型来为官员创造一个统计的环境。不过这并不是认为官员只会统计块的分布和边的分布,不要小看官员的能力,他们也要提出新的模型来描述世界。 数学上需要处理的问题是很好解决的,比如因为周期性的存在而无法求平稳状态也可以通过统计一份极限下的状态转移来得到。只要进行数学建模,总会有些方式来统计出边邻接和块邻接的方式。 不过这不能解决一个核心问题。块会抢占其他块的生成空间。并不能任意地去生成每一个块,当新生成的块与旧的块相邻时,概率分布就会发生更改。虽然在尽力保持生成事件的独立性,还是会因为地图生成时所预设的条件而不得不受到影响而不再独立。 换个角度来说,将生成看成重复的实验过程,后面的每一次实验都会大量依赖于前面所做的实验。怎么可能讲这是一个无记忆过程? 这也是与官员们的冲突所在。一个接着一个的生成,且依赖于过去的生成,很容易导致按照该生成算法生成的地图并不符合要求。其可能的原因是因为生成新的块时只由一条边的信息参与了块之间邻接的生成,这就没法保证这个块在其他边和其他块的邻接情况符合生成时的参数。官员统计的参数并不会趋近于生成时的参数。 还有一个原因在于,块的一面临近已经完全生成的边,而另一面是不受影响的,也就是说,生成的时候总是被分离的。这就导致两边的生成的分布终归是不同的。这是不是意味着邻接和马尔科夫链是不对的呢?并不是这样。 像生成一个块的时候,如果四周没有边,那么它的生成完全按照马尔可夫链,不管是一阶还是高阶。其问题可以变成我们能不能通过一些复杂的过程,将表面独立的各个参数,按照生成时的约束,令生成时所依靠的特征和生成结束后的统计特征是相同或趋近相同的。也就是说我们在生成的过程中,不断地更新实际生成时的分布,将已生成的边作为条件修改分布情况。这需要我们去模拟生成和邻接状态,不断去修改分布的情况和参数。 换个说法,邻接的信息可以通过特定的生成约束对应的转换规则转换成另一份用于生成的信息,该信息就可以在生成时快速根据之前的生成情况计算出新的生成信息来生成下一块。我们只需要保证每一次种子参与的计算都健健康康地来自于一个随机变量。 至于能不能提供一个算法做到生成过程是无记忆的,比如拓展一些分割算法来得到一些直接生成所有块来避免过程对上一生成过程的依赖。或者提高单次生成的数据量,将多个块视为一个整体协同生成以保证向无记忆靠拢。 所以这里也存在着一个相当标准的矛盾体,生物群落的边界特征相互影响和独立性的保持矛盾,这一矛盾本质来自于不同细节程度的特征能否在动态的处理过程中保持一致。或者说,我们画个饼。

饼终究是先画上,然后一点点去实现吧。 3.    由上而言所来的对个人独立游戏开发的思考以及对游戏策划的思考 很不幸的是,首先叠甲是毫无作用的。其次有些时候,我们终归要直面一些问题。比如,一个职业所必须表现出的专业性。 看看上文的问题,坦白说,我们在设计游戏的时候,会有能力去想清楚所实现的玩法背后需要这些算法的支撑吗?或者说,深刻一下问题,玩法吸引人本质上是要有结构美,它在带给人的体验上要保持住美。那么在设计游戏时,试问一下自己,你的系统学、管理学、数学、美学、社会学、经济学、心理学,足以支撑你去将游戏的美完全呈现出来吗?你能够更加发挥主观能动性地去推动你的游戏向玩家呈现出来独特的美吗? 很喜欢一个问题,游戏策划为什么没有编程的硬性要求。从职业来看,游戏策划和功游戏开发属于在团队中相互合作,在学术上相当割裂的两个个体。而个人游戏开发者,往往在这两个方向都没有足够的造诣。或许是很多时候我们将事情看的太过于简单,或许是我们的思维不过还停留在一个无产或半无产的困境里。 我不否认个人游戏开发者的积极性,但是积极性应该用到哪里呢?今非昔比,往昔简单的创意会受制于技术,而发展到现在,再也没有简单的创意来奠定一个游戏的基础。这是一个很可悲的现象,那就是我作为一个个人游戏开发者,我会没有美工,没有音乐,没有设计,我所拥有的,只有unity五天速成的课程。我可能有一些工作经验,但这些经验并不能告诉我为什么我要去研究特征在交互中的作用,这些经验也能不能指导我去修正马尔科夫链来增加地图生成的真实性。最终,我按照一个不如标准流水线标准的流水线将一个游戏创作出来,而我并没有创造足够的价值凝聚到我的产品中。 当我去发表一个游戏的时候,我不是一个开发者,而是一个商品的供给者,而我的能力已经决定了我不是一个合格的供给者,我所能提供的商品也终将泯然众人。

马尔科夫?无记忆过程?更高更大更强的特征!——由地图生成引发的游戏设计思考。的评论 (共 条)

分享到微博请遵守国家法律