三消游戏的数值(一):单元活跃度

2016-05-16
三消游戏的数值(一):单元活跃度 - 游戏开发技术论坛 - Powered by Discuz!
查看: 13146|回复: 5
打印 上一主题 下一主题

[原创] 三消游戏的数值(一):单元活跃度

  [复制链接]

2

主题

5

帖子

62

积分

注册会员

Rank: 2

积分
62
跳转到指定楼层
1
发表于 2016-5-16 19:34:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
三消游戏,就我所知,目前还没有一套成熟的数值模型(至少已公开的没有)。所以,相关的数值问题,就不太好处理,比如怎样确立每关的通关分数、怎样评估多少步里可以消除多少方块、怎样定量化消除某一特定方块的难度……这些问题,在理论上尚处于一个无法量化分析的状态。

而实际中,要解决上述问题,往往是通过消耗大量人力资源来进行测试(或者是编写相关程序来让AI辅助测试)。那么,如果有一套可用的数值模型,能对上述问题给出答案,即使只是确立答案的一个范围,也能大大减少耗费在测试上面的人力成本。

本文中,我打算对如何建立三消游戏的数值模型,提供一个思路。最重要的是提出一个概念:单元活跃度。

在此之前,我想先谈谈,三消游戏的数值模型,为什么难做。

Progression vs Emergency

游戏设计中有两个重要概念,渐进式(progression)玩法和突发性(emergency)玩法。很多剧情为主的单机游戏和以养成为主的网络游戏,向玩家提供的主要是渐进式玩法,在此玩法中,设计者清楚玩家在各阶段的状态,能对玩家施以较强的控制,这种游戏的数值是比较好做的;而以突发性玩法为主的游戏,如棋牌游戏、沙盘游戏、体育游戏中,玩家拥有很高的自由度,设计者往往只能控制初始条件,而对游戏中突发的各种状况,设计者则很难加以控制。对突发性游戏的数值设定,往往是通过大量测试来调优。

三消游戏也是以突发性玩法为主。设计者也很难控制玩家在三消游戏中的状态。但偏偏三消游戏的通关条件,又需要设计者对其设定合适的数字。客观上需要有一个数值模型的支撑。

那么,这个数值模型应该如何建立呢?

连通度

这是网友“偶尔喝咖啡”在他的《三消游戏基本地形设计教程》中提出的概念。和我将谈到的“单元活跃度”并没有必然联系。不想看这部分的朋友可以直接跳到下一部分,没有影响。但因为这个“连通度”概念给了我一些启发,但它也存在一些问题,所以我这里简单讲讲。

他提出的“连通度”是什么意思呢?以下图为例:


上图中,蓝色表示有效区域,白色代表禁用,即一般关卡中被“挖去”的部分。

连通度表示某单元格能被三消掉的方式数目。比如C1单元格,它唯一形成三消的方式是C1C2C3同色,故它的连通度为1;而对于C2单元格,它形成三消的方式有C1C2C3和C2C3C4两种。故它的连通度为2。可以看到,某单元格的连通度,其最大值为6,最小值为0。

计算出有效区域里每个单元格的连通度后,加总求平均,其值即作为该关卡静态难度的评价指标。

当关卡里不存在特殊地形时,这个平均连通度指标还是挺有用的。

但一旦关卡里有特殊地形,例如开心消消乐中的冰块(冰块里的物体不能移动)、木板(物体不能穿过木板移动),此时平均连通度指标完全不能反应出这些特殊地形带来的难度变化。所以,我们需要寻找另外一个指标,来作为建立数值模型的基础。

单元活跃度

请看这幅图:



英文字母代表一个个方块,我们考虑,当A方块与B方块交换时,有哪些方块可能发生消除?

我们将横向或竖向的连续三个方块,称为一个三元体,当有消除发生时(不考虑特殊道具的情况),意味着至少有一个三元体是同色的

当A与B交换时,会产生一些新的三元体,如果这些三元体中有同色的,则消除就发生了。那么,具体是产生哪些新的三元体呢?数一数即可知道,它们是ACD,AFJ,BEI。共3个。

A还有一种移动方向,即A与E交换,此时形成的新的三元体有AIM,AFG,EBC。也是3个。

所以,A方块的移动,总共可以形成6个新的三元体。

我希望读者已经意识到了,A可能产生新的三元体的数目,反映了A引发消除的能力。我们将A所有可能形成的新三元体的数目,记为A的活跃度。

上例中,A的活跃度为6。B的活跃度为10。而中部的F,J,G,K的活跃度是最高的,高达  (      )。(读者可自行计算)

采用活跃度指标时,特殊地形和道具的影响也可以获得完美地刻画。比如,当某单元被冰块锁住时,其活跃度为0;而挡板阻碍单元格的移动,所以挡板旁边单元格的活跃度也会相应减少。

有时为了降低关卡难度,设计者会在关卡刚开始时增加炸弹(移动该炸弹会炸掉一片菱形区域),同样的,炸弹的活跃度也是可以计算的(虽然比较麻烦),你只需要计算炸弹爆炸后会形成多少新的三元体。

总之,对于某关卡的初始状态,单位活跃度可以予以接近完美地刻画。

但是,对于本文开头所提到的“比如怎样确立每关的通关分数、怎样评估多少步里可以消除多少方块、怎样定量化消除某一特定方块的难度”,本文都还没有给予回答。我这里只能简单讲讲自己的思路。

后续建模的思路

当我们说给一个游戏建立数值模型时,是希望通过计算模型中的一些参数,就能得出该游戏的相关数值问题的解。这个解一般是一个范围,当然能越精确越好。

我这篇文章的主要价值,就是提出“单元活跃度”这样一个重要参数。那除了“单元活跃度”以外,还应该有哪些参数呢?

一、各颜色生成的概率

二、给定的消除步数

三、单元格之间的距离。这个参数主要用于计算消除某特定单元格的难度。如果某单元格附近的单元格活跃度越高,则该单元格被消除的可能性越大。那多大距离算附近呢?这里“单元格之间的距离”这个变量就必须被考虑进模型中。

另外,如何刻画玩家的技术水平?我认为,可以用玩家对活跃度的创造能力来刻画。比如,“开心消消乐”玩得比较好的玩家,就知道初期应该设法把冰块或别的不利地形消除掉,以此增加全局的活跃度。

锁在冰块里的单元,其初始活跃度为0,但其活跃度是会慢慢增加的,也就是说,这里其实是一个函数y=kn+b,y代表冰块的单元活跃度,n代表步数,系数k则可以反映玩家的技术水平。

确立了这些参数最后建模时,同样需要一定量的经验数据。然后就可以利用这些数据来进行回归分析了。

这篇文章就写到这里了。最后并没有给出相关模型的具体做法,只是写了个思路,算是留了个坑吧。

说说我写这篇文章的原因:是因为我去面试时被问到相关的问题,事后我对自己当时的解答不太满意,所以思考了两天,然后写了这篇文章。

如果以后我在实际工作中做了三消游戏的项目,获得了经验数据,我会来把这个模型的具体做法补充完整的。如果大家有什么意见和建议,也欢迎留言。

PS. 这一篇写得比较偏向专业领域。下一篇中,将讨论一个更宽泛的,与游戏相关的话题。

1

主题

10

帖子

115

积分

注册会员

Rank: 2

积分
115
2
发表于 2016-5-17 15:39:20 | 只看该作者
好东西 支持一个

1

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
3
发表于 2016-5-17 16:05:59 | 只看该作者
很有用的东西    谢谢分享   干货~!

0

主题

8

帖子

52

积分

注册会员

Rank: 2

积分
52
4
发表于 2016-5-23 14:19:56 | 只看该作者
谢谢分享!

0

主题

21

帖子

93

积分

注册会员

Rank: 2

积分
93
5
发表于 2017-7-8 17:57:59 | 只看该作者
你这个东西怎么和人家偶尔喝咖啡的思路一样,甚至图都一样的?

0

主题

27

帖子

498

积分

中级会员

Rank: 3Rank: 3

积分
498
6
发表于 2017-7-10 11:59:36 | 只看该作者
思路不错,但是活跃度只不过是连通度的更复杂算法而已,两者是出发点不同的同一个终点。

都是静态模型的基础数据,一个值可以用另一个推出来
最新评论
暂无评论
参与评论