|
本文是在阅读了偶尔喝咖啡的《三消游戏关卡设计教程(初级篇)——基本地形设计》之后启发所做,在前辈的文章中引入了连通度的概念。
连通度:静态复杂度的核心因子,三消关卡中的某个位置能够产生三消的最大可能数
在阅读本文之前,小伙伴们可以先阅读偶尔喝咖啡前辈的文章,一共有好几期,阅读后真的受益良多!!!
静态复杂度的第二个参数:自由度
自由度:单个元素可以与周边发生交换的元素个数
为什么要引入自由度这个概念呢,看下面《开心消消乐》这关
图中白色线条表示的关卡的“绳索障碍”,绳索障碍不会影响元素间的连通度,但是会造成一个影响,绳索两侧的方块是不能交换的!
在这里先引入自由系数的概念,当元素(方块、障碍、冰块等)可以与相邻元素发生交换,那么此元素对相邻元素的自由系数为1。
从两个方块元素的关联性来看,方块元素拥有自由系数和连通度,方块之间交换的目的是什么,是通过我的自由系数去间接利用别人的连通度,达到一种有效消除的可能性。比如,一个方块去换到相邻的位置,就相当于拥有新位置的连通度,它在新的连通路线上就有了消除的可能性。
图中猫头鹰因为绳索的限制只能往左或者往右交换
那么可以有这样一个式子:
一个方块元素A与相邻方块B发生交换时产生消除的可能性
简称A对B的消除度 消除度_AtoB = 自由系数 x 连通度_B
这一项忽略了重复的连通度,就是A与B发生重叠的连通度,按理来说应该减掉重叠的,但是重叠的可能情况为0、1、2三种不便计算,为了整体估算忽略掉此项。
当A能与B发生交换时,自由系数=1
当A不能与B发生交换时,自由系数=0
自由系数=0的情况包括以下几种:
A与B之间有绳索
A或者B中间某一个或都是冰块障碍
在计算整体的消除度时,设当前所有方块元素个数为N,假设现在A相邻两个元素B和C,则
消除度_BtoA = 自由系数 x 连通度_A
消除度_CtoA = 自由系数 x 连通度_A
两者相加 = 2 x 连通度_A
因为在计算A对B和C的消除度时,同时B和C也会同样的对A有消除度,在整体累加时,会有合并同类项,因此给每个元素引入自由度的概念,单个元素自由度最大是4,最小是0。
自由度:单个元素相邻的元素中可以发生交换的元素个数
方块元素:0 ~ 4
固定障碍:0
所以得到单个元素的消除度
消除度_A = 自由度_A x 连通度_A ,整体的消除度就是N个元素的累加
看这个例子,如果没有绳索的话,红圈部分的猫头鹰自由度应该是4,连通度是6,它的消除度为4x6=24但是因为绳索,它的自由度变成了2,连通度仍然是6,最后通过消除度_A = 自由度_A x 连通度_A得到它的消除度就是2x6=12,所以这个绳索让红圈中的猫头鹰丧失了一半的消除可能性,图中它就不能向右消除,同样受影响的还有绳索对面的元素。
静态复杂度的第三个参数:旁消系数
旁消系数:破除”冰块”需要的旁消次数对关卡造成的影响
图中的冰块障碍是个特殊的障碍,玩家通过在它的旁边产生消除来破坏这个冰块,那么问题来了,这个冰块到底算一个普通障碍还是算一个方块元素,明显它是关卡中动态变化的元素,难以量化出自由度和连通度来,所以只能对它进行一个补偿估算。
冰块最初的状态是一个障碍,则它的连通度是0,自由度也是0。
冰块被消除后的状态是一个方块元素,假设它的连通度是a,自由度是b。
当冰块的旁消次数为1时,结合步数去估计,它在关卡的影响贴近a和b。
当冰块的旁消次数趋近于步数时,它在关卡中的影响贴近普通的障碍。
所以它的这个影响趋势其实是十分拟合幂函数的,大胆用一个幂函数来进行补偿。假设当前关卡的步数是m,旁消次数是n,那么可以假设底数是m-n/m。举个例子,当步数为100,旁消次数为3,则底数为0.97,证明步数越大,越可以抵消旁消次数造成的影响。接着假设指数是k*n/m,k是体验系数,影响冥函数的下降速度。举个例子,看下图
图中k为50,6是假设的连通度a,步数为30,从右侧数据可以看出当旁消次数为6时,估算出的连通度已经小于1,在体验上和一个完全不能消除的障碍没区别。体验系数k是凭感觉得出来的,它越贴近大众玩家的普遍性体验,则调整步数和旁消次数造成的体验越准确。
定义补偿连通度<1的看成是障碍,在设计时不允许此类情况发生!!!!
因此,对冰块本身来说,最后得到的公式
补偿后的连通度:
补偿后的自由度:
这个冥函数就是旁消系数
还有一个遗留问题,那就是冰块相邻的方块也会受到影响,所以同上可得估算公式,假设将冰块看成固定障碍(不可消除)时的连通度为C,则补偿后相邻方块元素的连通度为
静态复杂度总结
综上所述,单个元素的消除度为
普通元素(方块和障碍)消除度 = 自由度 x 连通度
这一项忽略了重叠的连通度
冰块的消除度 = 自由度 x 旁消系数 x 连通度 x 旁消系数
=补偿自由度 x 补偿连通度
定义补偿连通度<1的看成是障碍,在设计时不允许此类情况发生!!!!
冰块相邻元素的消除度 = 补偿自由度 x 补偿连通度
总的静态难度评估系数 = 除了障碍以外其他元素的消除度之和/其他元素数目
文/右耳闻水皮
原文:https://zhuanlan.zhihu.com/p/451782295
|
|