加载中…
个人资料
水龙一谭
水龙一谭
  • 博客等级:
  • 博客积分:0
  • 博客访问:73,656
  • 关注人气:21
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

[分析] 部落战争熵议

(2014-09-13 23:30:35)
标签:

游戏

it

分类: 游戏观
《部落战争》熵议
七阶子/2014-9

前言

熵,最初是个物理概念,可用于表示无序度的度量。后来也引入信息科学中,用于表示某种信息不确定性的度量。从数学上直观理解,熵就是与状态数或组合数有关,是后者的对数,即 $  S=k \ln \Omega $。其中,k是玻耳茨蔓常数。为避免过于复杂的解释,不妨认为 k 就是熵的“单位”。
[分析] <wbr>部落战争熵议
将熵的概念迁移到游戏理论中,它就可以用于表示一个系统的变化性的度量,游戏的可玩性就来源其多变性。没有熵或者说毫无变化的游戏,不会是认为好玩的。

文本试图分析《部落战争》(COC)的一些系统熵。COC是手游时代的神作,其数值表面看似简单,实则暗藏玄机。本方在分析时为了方便求解,运用了大量简化,从这些简化模型中计算得出的近似熵或许不尽准确,但本文也不是非要得到什么精确的数字,主要是从熵的角度来理解这个游戏如何好玩。

数据示例

COC 目前最高为十级,本文以八级(八本)的数据为例进行讨论说明。为何取八本,因为该游戏内有个成就就是要升到八本。可以认为游戏设计师也认为八本应是一个标准玩家的状态,平均状态,从八本后,玩家升级极为缓慢。

防御熵

在八本时,总计有以下建筑:
[分析] <wbr>部落战争熵议

问题:作为防御方的玩家,有多少种布阵方法?

COC 的“棋盘”总共40*40大小,每个建筑大小不一,但绝大数是3*3,故将这样的建筑称为大众建筑,或称标准建筑。而将其他非标准建筑近似为几个等效的标准建筑。但墙比较特殊,它只点一格空间,不会与其他建筑有冲突影响,可以见缝插针,故将其称为填充建筑(其实还包括几个小陷阱)。具体计算过程如下:
[分析] <wbr>部落战争熵议
其中,大整数的阶乘计算用于斯特林近似公式(参考百科 Stirling 公式
[分析] <wbr>部落战争熵议
误差分析:将非标准建筑当作标准建筑肯定只是近似估计,另外,40格的场地即使只放3格大小的标准建筑也不是整除。精确的计算可能涉及二维排列问题,但笔者限于学识所限,不能快速得出结果。或者也可用程序暴力解决,但这个排序数非常之大,已超出常见编程语言 int 或 long 整数类型的范围,建议用支持长整数的语言解决。

错误纠正:后来才发现,在上面的计算中,不小心把墙的个数225写成255[分析] <wbr>部落战争熵议

进攻熵

进攻其实分两个步骤,战前的配兵部署,与战斗时的下兵过程。先只讨论战斗的即时过程。在COC中最主要的玩法方式是先造满兵营的兵,出发搜索打“鱼”。所以,当战斗开始时,能够使用的兵是已经确定了的,在八本时,最多可用200兵。

在战斗过程中,玩家可控可操作部分只是在放兵,然后每个兵好像都有自己独立的思想行动(AI)去进攻敌人。进攻的策略性在于:何时,何地,放哪个兵。这里的数学问题是:有多少种放兵方法?

与静态的防御布阵不同的是,放兵是动态的,不仅与空间有关,还与时间有关。但注意有一个理念,时间与空间是相对的,是统一的。故我们可以将时间转换为空间来处理。比如在 t 时刻在某地放下的兵,可以认为是在 0 时刻在另一个远处B放下兵,而在 t 时刻恰好它走了A地。于是,与时空有关的放兵问题就转化为了在 0 时刻(战斗开始的瞬间)放下所有兵的排列问题。

时空转化的关键是速度。COC 每个兵种有不同的移动速度,为简化计算,取一个平均标准速度。比如取自主角野蛮人(COC有猪脚么?如果有,我认为应该就是野蛮人),因为它是第一个兵种,速度也正中庸。据COC游戏中的信息资料显示,野蛮人的标称速度是16,实际意义是每秒移动1.6格。每场战斗限时3分钟,所以它最多可以移动288格。即在战斗最后一时刻在战场最边缘放一个兵(比如最后才发现边角上有个小屋没清掉),就相当于在战斗刚开始就在距边缘288格之外放下了这个兵。

于是,我们可以想象一个模型,将40*40的战场,向外扩大288格,在这个大战场中讨论有多少种放兵方法。在 COC 实际的进攻中,还会有个落点的概念,即敌方建筑一格内的范围是不允许放兵的。但这里只讨论进攻方的情况,忽略防守方的具体布阵情况。且40格的内核大小,与288格的外战斗相比起来,小得多,不妨忽略之。这样的进攻模型就是,无视防御方的内部结构,只从边缘处下兵(好像有个外挂插件就是这么干的)。根据该模型计算进攻熵的详细过程如下:
[分析] <wbr>部落战争熵议

误差分析:不同兵种不同的移动速度对结果有影响。另外,没有考虑法术与王,他们也相当于一次放兵操作。最主要的误差来源是,不同兵种还有不同占用的人口空间,即玩家不一定要点200次的放兵操作,所以这里计算的进攻熵是偏上限的值。不过对于一次具体的进攻,即使操作兵数不是200,计算方法是类似的。

结果显示,进攻熵大于防御熵,即进攻方有更多的选择来破阵。所以COC的玩家群中流传这么一句话,没有有攻不破的阵,原有以也。

配兵熵

正如上节所述,不同兵种实际有不同的人口空间。所以,在限定200的兵营空间下,有多少种配兵方案也就成了一个策略问题。这在部落战中更有实际意义,因为它让你有一天的时刻来考虑带什么兵去出战。

八本开启了以下兵种,一并列出其占用人口空间:
[分析] <wbr>部落战争熵议
如何从这些兵种中挑选,塞进兵营中,其实就是一个经典的背包问题。我一时也没想到如何只用数学解这个问题的思路,甚至也没想到可接受的简化方案,所以最后借助于程序解决。(感谢帖吧“数学吧”的网友热情提供程序思路,传送门在此
[分析] <wbr>部落战争熵议

注:这段程序由 python 写成,如果用 C 或 matlab 可能会失效,因为组合数太大可能出现整数溢界问题。python 理论上支持无限大的长整数,应该也有其他语言或扩展库支持。

从结果看,配兵熵(46.77)比上节的进攻熵(2568.5)小很多。但这并不是说配兵的策略性不同进攻的操作策略重要。从实际的游戏体验上讲,配兵可能更为关键,因为进攻其实有一定的容错性,放错一两个兵对结果可能无关紧要。但极大的进攻熵也说明,对玩家的操作精度毕竟有较大的要求,否则即使带足了兵,由于渣操作或误操作而遗憾败北的情况也不少见。这种操作精度的要求,使得高玩有了炫耀的资本,当然也催生了像叉叉模拟这样的外挂。

误差分析:事实上,玩家出门打鱼,未必需要带满兵力。所以上面的计算是偏下限的。另外,针对具体的玩家个人而言,他自有他习惯用得好的兵种,很可能极少会尝试使用其他兵种。

升级熵

在 COC 的玩家群中,还习惯将每本分几个阶段,初期、中期、后期。之所以有这个“理论”,是因为要在某本内升满所有建筑是一个相当长期的过程。先升哪个,后升哪个,是有讲究的,不同的升级方案,将影响玩家的发展过程与游戏体验。

问题:从八本初期到后期满防满墙,共有几种不同的升级方案,即升级熵有多少?

八本所有的建筑在讨论“防御熵”那节已列出,总共有308个建筑,包括墙。除了五个农民屋是必然没有升级概念的,我们假设其他建筑都能且只能升一级。这个假设有点粗略,因为有的建筑在一本内不只升一级,或者根本不能升级。但总体来看,不妨平均化地认为每本中每个建筑升一级。

于是八本时,需要升 308-5 次,升级考虑先后次序,则全排列组合数为 303!。但有大量同类建筑,先升其中哪个是无差别的,所以再除以所有同类建筑的全排数。这里实际是假设了更改玩家,他会在时刻调整布阵,使正在升级与未升级的同类建筑放在合适的地方。这很可能是高估了玩家,很多玩家是懒惰的,布好阵后一般只在原地升级,如此的话,即使几个同类建筑先升哪个也是不同效果的。若作此假设,则无需除分子的同类建筑全排数。但本文主要作理论分析,故还是作理性玩家假设,计算结果如下:
[分析] <wbr>部落战争熵议

误差分析:精确的结果需要查阅游戏资料,确认在该本下,哪些建筑不可升级,哪些可升级,各能升几级。这里主要说明分析方法与计算示例。事实上,不同玩家可能还有个性玩法,在初期的状态也未尽相同,可能在上一本还欠下些债有些建筑未升满;而在后期的追求目标也未尽相同,可能未全满级就急着升下一本了。

这里的结论是,COC 的升级熵相当大。即使“升级”这样司空见惯的游戏概念,在COC也变得有趣有策略性。在大多数游戏中,升级只是一种确定的结果(它带来的属性提升当然也是必须相同的,否则就有失公平)。确定的东西就意味着没有变化,没有熵。偏偏大多网游的成长系统又包含很多的升级,不仅人物升级,还有装备强化升级、宠物升级等等,不一而足。太多坑的频繁升级容易让玩家失去对成长提升带来的惊喜与快感,因为升级本身没有任何熵的变化,不再会有乐趣感,而只会变成不得不为之的任务负担。当然,很多游戏的强化系统有失败或暴击跳级的“变化”,但这也只是治标不治本的伪变化,因为玩家对所谓的强化概率完全没有控制手段,不管成功抑或失败,都只能被动地接受,故依然是零熵系统。事实上,我们策划为强化设置成功率,才不是为了增加游戏性呢,而是为了调控经济系统,直白点就是要吸引更多的游戏币,赚更多的钱。

附录:

本文大量需要用到计算阶乘对数,故将一些常用整数的阶乘及其对数列于Excel表,前10个小整数按阶乘定义精确计算,后面的大整数用Stirling公式近似只计算对数。大数的阶乘与组合数都非常大,读写不方便,故用对数表示熵值更有意义。
[分析] <wbr>部落战争熵议


0

阅读 评论 收藏 禁止转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有