类弹球游戏关卡难度量化要素:关卡元素,位置,生命值

原创 作者:石睿 2019-06-03 1.5k

本文是对于糖果连弹以及类似的弹球游戏的难度量化尝试。在设计关卡时,尝试根据关卡元素,位置,生命值等因素,量化分析关卡难度,抽象出调整难度的参数,为关卡设计做指导。

本文主要讨论量化思路和部分具体的算法。目前无法直接使用,需要进一步完善:

EXCEL版传送门(https://pan.baidu.com/s/1jHUdVgi)提取码:9ebk

一、整体思路

1.评估一个场面的难度,一方面从场面自身来说,需要考量当前场面对玩家的威胁度,即场面压力;另一方面,从玩家解场的角度来说,是玩家的解场难度。

2.场面压力——决定于:总方块数,总方块碰撞数。

3.解场难度——决定于:场面反弹度,当前场上的元素分布,发球位置是否有利,玩家的球数5个维度。

4.拆解分析每一项数值,再分别针对每一项的情况从不同维度动态调整关卡难度。

二、场面压力计算

1.一个方块在碰撞数不变的情况下,它的威胁度随着下落逐渐增长,因为距离击败玩家越来越近。

2.方块从出生到最底行,每下落一行会有一次被碰撞的机会,也就是最高层的方块被碰撞的机会越多,因此威胁度越低。由此两点定义每一行的威胁度系数。

1)首先拍定各层碰撞值和行系数:


2)再根据各行元素数,和各元素生命值,确定各行的碰撞值。

第N行碰撞值=第N行元素总生命值*N行系数。


如上图中,关卡的碰撞值为:



三、场面反弹度计算

1.当一个图形在地图上的位置确定后,根据他的位置和形状,划分3种区域

1)完全反弹区域


2)不完全反弹区域


3)完全不反弹区域


各反弹区域反弹系数:


各形状元素对应的区域类型如下:




2.以一格为单位面积,首先抽取实际场景中的空位置,再分别计算8X7=56个位置(扣除最下面一行)中每个位置形状的反弹度,然后再相加,得出场面总反弹度。

以正方形为例:


进行几何面积计算。其他形状不再列举。最终得出每个元素的反弹度。



上图中计算得出反弹度如下:


四、最大通路与发球位置计算

1.思路

1)元素的分布对难度的影响,最关键的在于当前玩家的射击通路,所覆盖的方块的多少,以通路所达顶点处为准,在此下方的方块所占比例越大,难度越低。反之越高。

2)发球位置的优劣,在于它与通路入口的相对位置,进入入口时的角度与水平角度差值越小,越有利。

2.通路算法

1)遍历最底行,选取该行空位,从第一个空位开始,依次进行以下判定。

2)判断空位正上方的位置是否是空位,若是,则继续往上判定;若不是,则判断左右两侧是否是空位,找到空位继续往上循环执行判定。

3)最终取通道数最大的一路走法作为当前的最大通路。

3.通路价值

找到最大通路后,取通路的终点作为基准点,计算在此点所在行一下的所有行的碰撞值,作为衡量通路价值的标准。

4.发球位置价值

判定通路入口所在列与发球位置所在列的差值绝对值,角度越靠近45度价值越高。

五、场面布局分散程度

1.思路:单纯考虑场面布局的难度,理论上在相同数量的方块数下,可接触面积越大,解场越容易,反之越难。因此,决定场面布局解场难度的关键因素就是方块的分散程度。

2.计算场上每一个方块与其他方块的距离间隔,所有间隔数值相加,得到分散程度的衡量数值。


六、根据场面难度动态调整掉落

需要经过多次测试,得到一个各维度的标准值,进而在超过或者低于标准值时,进行减少或者加大难度的调整。整理只给出调整方向。


作者:石睿
专栏地址:https://zhuanlan.zhihu.com/p/32396932

相关推荐