|
横版跑酷游戏我做过一个,很可惜最后因为一些原因没能上,一个韩国的小汽车题材的儿童游戏,玩家选一个小汽车横板向右开,速度会越来越快直到玩家挂掉,和滑雪大冒险很像,但是游戏里面挂掉的原因不是被雪球追上,而是掉进坑里面或者“撞到障碍物”,游戏的特点是在场景中有任意角度的地形(注意,是任意角度,而不是简单的30度、45度、60度这种)。那个地图是要求无限扩展的,在那个游戏里面我担任主设计师和逻辑主程序(事实上我一起做项目的朋友是真的主程序,做底层为主,如渲染、优化,其余的是我来写,我认为我做的那些都可以称作游戏逻辑部分)。你的这个问题,其实就跟我们做那个游戏时候遇到的一个问题很类似:关卡是按照规则随机拼接的,那么怎样做到难度越来越高呢?怎么定义这个难度。
首先,我们把地图块分成不同的“岛屿”,岛屿之间一定有一个坑,你需要从一个岛屿跳到另外一个岛屿,也由这里延伸出4个难度扩展点:
1,岛屿本身难度:岛屿本身是有难度的,因为我们是任意角度,也就是角度转变越急(容易撞死)、岛屿长度越短的话,难度越高。这是定义的岛屿本身难度,在这一块,是需要和制作地图的美术商量制作的,角度一定要精细,因为每一段路线,不同的角色走,有的需要跳,有的不需要难度也会有所不同(这是角色选择造成的难度,每个角色是有特色的,有些角色跳的高些,有些能滑翔,关键是一个我称为“玻璃心”的逻辑碰撞区域也不同,玻璃心被地形碰撞后,角色死亡,玻璃心是会随角色的rotation和anchor改变的)。难度越高的岛屿,出现加权越偏后。
2,岛屿间间隙:岛屿间的间隙不是一个固定的数字,是一个最小值到最大值得随机数,这个最小值和最大值决定了难度。因为角色本身速度也在逐渐提高,因此最小值在逐渐变小,最大值也在逐渐变大(快于角色速度变大),这两个的变化都是动态计算的(根据走了多远),最小值越小难度越大、最大值越大难度也越大,但是这个都是有限的,因为当最小值过小或最大值过大的时候,会出现必死,使得游戏变得无趣。
3,岛屿的Y向移动:我们还灵巧的随机移动了岛屿的Y向位置,我们要求每个岛屿有个属性叫Y向难度,也就是当Y坐标往下移动的时候,难度递增的参数,一些岛屿越往下放(Y越大)难度越大,有些则正好相反,这个也会影响岛屿本身难度(1所说的)。
4,岛屿的后续岛屿:在一些岛屿的制作中,有些岛屿接在另一些岛屿之后,难度会比通常的链接大很多,因此我们认为设定了一些岛屿链接的难度系数,给每个岛屿一个类别Tag,比如A类后面如果链接B类,难度系数提高5点,C类提高20点,等等。往往这些难度也会和岛屿“登陆区域”的角度有一定关系,还是玻璃心问题。
通过以上4点的量化,我们可以推论得出,逻辑上下一个要出现的岛屿(并非玩家当前玩到的,应该会偏后若干个岛屿)的难度系数,当然并不是为了得到这个系数而做算法,是为了知道现在需要难度系数多少,反过来推哪几种组合(以上4点的组合)出来的岛屿更合适现在的需求,然后把那个岛屿作为“下一个”。
在这样的“无尽模式”下,我们会不断根据玩家进度提高当前需要的难度系数,直到最后,难度系数一定会达到一个人类很难挑战的程度,到了那个时候,难度系数不再增加,仅仅只是等待玩家的粗心来结束游戏了,毕竟玩家不是机器人,重复工作总会犯错,只要难度够高,犯错率就会很高,但是从游戏设计的角度上来说,必须要有容错机会,而不是让游戏变得一定无法通过,不然这游戏的终点其实很多玩家是一样的水平。
相关阅读:分享跑酷游戏的角色控制设计经验
|
|