暗黑破坏神的地图
这里的随机指是模仿暗黑破坏神3随机的方式,方法主要有二:一是路径式的,而是房间式的。路径式的思路在于地图的活动空间狭小,不利于战斗展开,但是路径通道周围的空间可以用来做大量地造景设计。房间式正好相反,纵深感觉比较弱,但是战斗区域开阔,适合种植大量怪物。
暗黑3的随机地图被玩家诟病很多,主要在于随机性少,设计师的思路在于随机考量上做出区别,暗黑2曾是广阔地形、随机的地下城、和终点的不确定性,让玩家多了许多探索的乐趣。暗黑3则是体现在事件的随机上,暗黑3拥有众多的固定地形,玩家在熟悉游戏之后,可以很轻易地从场景推断出终点的位置,在一路奔波的过程中遇见不用的怪物,不同的特殊任务,和不同的财宝。
一开始接触到暗黑3,以为是由于3d场景的制作问题,导致了随机性不足,但随着秘境的不断完善和修改,可以看到暗黑3一样拥有无限随机的可能,值得一提的是,暗黑2的地上世界,更多采用房间式的随机方式,这会遇到一个问题,场景的每个区域在世界的位置提前布置好,可以产生很多无缝的效果,虽然这不是必须的,而暗黑3没有制作这样的随机特性,因此每个区域联通地形是固定的,变换区域的时候,是相对独立的空间(切地图),因为击杀爱得利亚的入口,永远都向着北面如此的印象不断地被印证,让人忍不住遗憾缺少出口不可知特性带来的神秘。在暗黑2中一样有类似的限制,比如击杀梅菲斯托的地牢,但是由于区域随机的特性,可以将单个房间式的地城加入区域随机,让地下城充满了未知数。
从结果上看,暗黑2的地图,从给玩家带来的趣味性上显得更为成功。但是仍然不能否认暗黑2玩家碰见死胡同并没有得到相应的财宝带来的挫败感,因为从其随机的思路来看,判断死路不是如此的简单易行。暗黑3也没能回避这个问题,在往终点疾驰狂奔的时候,有可能一路上并不会遇到怪物,当玩家明明知道终点在东方,仍为了寻找怪物跑向北方的场景,地毯式的扫图也让玩家感受到恶心,还不如暗黑2就让玩家放开去找吧!
路径式的随机地图
路径式的随机,指的是把整个地图当做一个联通的图,每个图的节点就是一个房间,房间之间通过图的连接关系保持相连,由此还可以针对通道做一些独特的设计,比如:突然断裂,比如各种明门暗门传送门或者单向门等等。或者针对房间做特殊的设计,每个房间都有一个不同的特殊任务、突发事件、神秘人物,可以把出现的频率做的很均匀。
广度优先生成
最常用的生成图的办法应该就是先生成树了。广度优先的思路是这样的:先把初始生成放进队列里,然后遍历这个队列,一直到队列为空才停下来。每访问到一个节点,都适应一个固定的算法 f( node ) 计算出新的生成节点放进队列里。 在这里,我们可以把生成的房间当做每个节点,也可以维护通道的队列,以下用房间队列来说明。
广度优先生成把中心点当做根节点先创建好,并随机生成4个方向的通路,加入到队列中,然后遍历队列直到队列为空。遍历队列获取每个节点时,先把从上一个节点来的方向排除掉,然后对剩下的三个方向进行随机判定,如果随机通路存在,则把通路后的房间创建好,并也加入到队列中。这里有个需要注意的地方,假如通路对面的房间存在,就不再需要创建通路了,而是直接连通2个房间。为了让地图可控,一般随机方向的时候,需要进行衰减,根据创建好的房间和预定地图的参数,对随机的通路进行干预,直到最后大多数房间不产生新的通路成为叶子节点。队列不再增长,循环结束。
但是此种方法有种劣势,就是不好确定终点,不好控制规模。现在考虑的方法如下:记录每个叶子节点,就是不会再产生通路的房间,当然并不是一定就是某条死胡同,因为在生成过程中相邻的房间有可能会把墙壁打通形成通路,这时候终点就有可能不在死路里,变化更多。而对于不好控制规模,就真的没有什么好的办法了,通路数量的衰减函数只能通过经验去构建
固定终点生成
为了解决不好确定终点的劣势,可以一开始就确定好终点,如下图生成一个固定的路径,可以假定这条是玩家经历的一个比较正常的路径。
单条路径生成生成好路径后,将每一个房间节点加入到队列里,再通过广度优先搜索的办法,生成出子路径,比如思路啊,比如环路之类的。
房间式的随机地图
待续....
网友评论