机制#004 - Environment Tree(环境树)

来源:互联网 发布:java中数据类型最长 编辑:程序博客网 时间:2024/04/16 18:40

翻译:i_dovelemon

来源:http://www.squidi.net/three/entry.php?id=4

日期:2015 / 1 / 28

主题: Game Mechanic, Idea


引言

           通过将环境模拟成一个树形结构来产生图块和门,而不会产生无法战胜的情况。


介绍

           随机产生游戏内容的设计方式是游戏设计里面的圣杯。如果能够在游戏里面及时的产生任意多的或者大量的各种各样的物体,那么就表示这个游戏将能够永远的被人们玩下去。就算做不到这种程度,游戏如果能够随机产生大部分的内容,像Diablo II或者NetHack,那么这样的游戏也会变的十分的流行,并且人们愿意再次的玩下去。

         不幸的是,现在使用程序生成技术产生的游戏都是比较简单,内容比较明显的物体,并且主要用在生成地下世界的地图上面,这样的方式产生的效果并没有超过一个孩童使用关卡编辑器来的好。我深信使用程序生成的技术能够用来设计一个完整的游戏,从开始,到中间过渡,以至最后的设计都可以使用,并且这样设计出来的游戏,要比当前游戏水平的平均水平要高很多。但是,这样的技术现在很难实现,要实现这样的设计,还有很长的路要走。

         这个想法并不是一个游戏玩法机制的设计,更像是如何设计游戏玩法的技术。简单来说,我们通过树状的结构来描述整个游戏世界,那么我们就能够很容易的摆放我们的地图块,而不会出现不能战胜的情况。


描述

      

       上图就是我将要用来解释说明这个技术的地图。这个地图包含两个楼层和一个屋顶。上面的蓝色小块表示的是能够随意开启,关闭的门。而灰色的门是隐藏着的门,这种门在两个房间之间。对于普通的门来说,我们能够关闭和开启,但是关闭隐藏的门却没有任何的反应。我们可以将隐藏的门堵起来,比如说放置一个障碍物或者火焰之类的东西。      

      上图就是整个空间的空间划分树,你可以看到这整个树就是你在进入大厦之后可能会依次遇到的房间。这是一个非常简单的空间树,因为这里并没有循环路径,单方向门,多点的入口之类的东西。

      现在就是见证奇迹的时刻了。比如说我们总共想要有3个游戏拼图,并且为了简化,他们都是简单的钥匙/门这样的拼图,这里的钥匙/门是一个概念,只要满足这样的条件:你带有某种物体或者物件X,这里就是钥匙来访问这个区域,那么这个区域会包含新的钥匙或者奖励来回馈给你;的物体都是这里的钥匙/门。

       你可能注意到在上图中,每一条蓝色的线条就和一个路径对应着,如果我们将某一个路径关闭了,那么所有这个路径下面的节点都将不不能够被访问到。我们没有办法通过被锁定的门,而这个空间结构树能够很容易的告知我们哪些房间是什么东西。比如说,我想将最后的胜利物品放置在屋顶的小屋当中。如果我们将屋顶锁定起来,像这样:

  

  

   这个例子告诉了我们一个非常重要的内容。相对于红色区域来说,所有的白色区域都是可以访问的。只要我们将这个记住,我们就可以反向的来构造这个树,这样就总是可以完全的走完所有的房间,拿到指定的物品。比如说,我们在2楼里面放置一个钥匙,然后将2楼锁定起来,并且2楼的钥匙是用来打开屋顶的。我们在将2楼锁起来之后,再将2楼顶点钥匙放置在后屋中,这个钥匙是用来打开被锁定的2楼的。同样的我们在将后屋锁定,将钥匙放在1楼走廊可以连接到的任意一个房间中。这样,通过这样的反向操作,我们就可以依次的获取放在1楼的钥匙来打开后屋,获取后屋中的钥匙,来打开2楼,并且获取2楼中的钥匙来打开屋顶。这样就不会出现无法完成的情况了。

      看到没有,这是一个非常简单的算法。要使得游戏更加的有趣,我们可以改变游戏地图中的钥匙。比如说,在某个房间中,存在一个Boss,你必须打败他才能够获取到钥匙。每一个房间都需要特定的输入才能够打开。

      

      

0 0
原创粉丝点击