游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3316|回复: 1

三消游戏的关卡静态难度评估

[复制链接]

5万

主题

5万

帖子

8万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
86234
发表于 2021-12-31 10:39:49 | 显示全部楼层 |阅读模式
1.jpg

本文是在阅读了偶尔喝咖啡的《三消游戏关卡设计教程(初级篇)——基本地形设计》之后启发所做,在前辈的文章中引入了连通度的概念。

连通度:静态复杂度的核心因子,三消关卡中的某个位置能够产生三消的最大可能数

在阅读本文之前,小伙伴们可以先阅读偶尔喝咖啡前辈的文章,一共有好几期,阅读后真的受益良多!!!

静态复杂度的第二个参数:自由度

自由度:单个元素可以与周边发生交换的元素个数

为什么要引入自由度这个概念呢,看下面《开心消消乐》这关

2.jpg

图中白色线条表示的关卡的“绳索障碍”,绳索障碍不会影响元素间的连通度,但是会造成一个影响,绳索两侧的方块是不能交换的!

在这里先引入自由系数的概念,当元素(方块、障碍、冰块等)可以与相邻元素发生交换,那么此元素对相邻元素的自由系数为1。

从两个方块元素的关联性来看,方块元素拥有自由系数和连通度,方块之间交换的目的是什么,是通过我的自由系数去间接利用别人的连通度,达到一种有效消除的可能性。比如,一个方块去换到相邻的位置,就相当于拥有新位置的连通度,它在新的连通路线上就有了消除的可能性。

3.jpg
图中猫头鹰因为绳索的限制只能往左或者往右交换

那么可以有这样一个式子:

一个方块元素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.jpg

看这个例子,如果没有绳索的话,红圈部分的猫头鹰自由度应该是4,连通度是6,它的消除度为4x6=24但是因为绳索,它的自由度变成了2,连通度仍然是6,最后通过消除度_A = 自由度_A x 连通度_A得到它的消除度就是2x6=12,所以这个绳索让红圈中的猫头鹰丧失了一半的消除可能性,图中它就不能向右消除,同样受影响的还有绳索对面的元素。

静态复杂度的第三个参数:旁消系数

旁消系数:破除”冰块”需要的旁消次数对关卡造成的影响

5.jpg

图中的冰块障碍是个特殊的障碍,玩家通过在它的旁边产生消除来破坏这个冰块,那么问题来了,这个冰块到底算一个普通障碍还是算一个方块元素,明显它是关卡中动态变化的元素,难以量化出自由度和连通度来,所以只能对它进行一个补偿估算。

冰块最初的状态是一个障碍,则它的连通度是0,自由度也是0。

冰块被消除后的状态是一个方块元素,假设它的连通度是a,自由度是b。

当冰块的旁消次数为1时,结合步数去估计,它在关卡的影响贴近a和b。

当冰块的旁消次数趋近于步数时,它在关卡中的影响贴近普通的障碍。

所以它的这个影响趋势其实是十分拟合幂函数的,大胆用一个幂函数来进行补偿。假设当前关卡的步数是m,旁消次数是n,那么可以假设底数是m-n/m。举个例子,当步数为100,旁消次数为3,则底数为0.97,证明步数越大,越可以抵消旁消次数造成的影响。接着假设指数是k*n/m,k是体验系数,影响冥函数的下降速度。举个例子,看下图

6.jpg

7.jpg

8.jpg

图中k为50,6是假设的连通度a,步数为30,从右侧数据可以看出当旁消次数为6时,估算出的连通度已经小于1,在体验上和一个完全不能消除的障碍没区别。体验系数k是凭感觉得出来的,它越贴近大众玩家的普遍性体验,则调整步数和旁消次数造成的体验越准确。

定义补偿连通度<1的看成是障碍,在设计时不允许此类情况发生!!!!

因此,对冰块本身来说,最后得到的公式

补偿后的连通度:

9.jpg

补偿后的自由度:

10.jpg

这个冥函数就是旁消系数

11.jpg

还有一个遗留问题,那就是冰块相邻的方块也会受到影响,所以同上可得估算公式,假设将冰块看成固定障碍(不可消除)时的连通度为C,则补偿后相邻方块元素的连通度为

12.jpg

静态复杂度总结

综上所述,单个元素的消除度为

普通元素(方块和障碍)消除度 = 自由度 x 连通度

这一项忽略了重叠的连通度

冰块的消除度 = 自由度 x 旁消系数 x 连通度 x 旁消系数

=补偿自由度 x 补偿连通度

定义补偿连通度<1的看成是障碍,在设计时不允许此类情况发生!!!!

冰块相邻元素的消除度 = 补偿自由度 x 补偿连通度

总的静态难度评估系数 = 除了障碍以外其他元素的消除度之和/其他元素数目

文/右耳闻水皮

原文:https://zhuanlan.zhihu.com/p/451782295

0

主题

8

帖子

89

积分

注册会员

Rank: 2

积分
89
发表于 2021-12-31 10:54:48 | 显示全部楼层
感谢分享,学习了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-12-24 04:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表