【研机析理】改进卡牌游戏卡组设计提升趣味

作者:clatterrr
2019-06-14
14 14 0

简介

本文翻译自文章的主要内容:Evolving Card Sets Towards Balancing Dominion 

原文链接:http://julian.togelius.com/Mahlmann2012Evolving.pdf

原文作者:Tobias Mahlmann, Julian Togelius and Georgios N. Yannakakis

我们的游戏玩家简直是一群刁民,张三觉得要这样才好玩,李四觉得那样才刺激,隔壁老王又认为他们说得都不对…总之,不同玩家对“有趣”的定义不同。我们没法同时满足不同要求,但在这篇文章里,我们会借助一款卡牌游戏,尝试找出尽量满足某一类玩家要求的游戏机制和规则,让这类玩家感到有趣好玩。

Dominion

这是一款在 2008 年发行的超好玩的桌面卡牌游戏,据说发售当日就卖光了。现在已有授权的线上版。剧情很简单:先帝不知是出了车祸还是失忆了还是发现皇后是自己亲妹妹,总之是将皇位传给了你。而你要带领你的国家争取更多的土地,同时也要防止对手的扩张。

作为桌游,规则也不复杂。这个游戏一共有三种卡,分别是资源卡,行动卡,领土卡。

每己方回合从初始牌组抽五张牌。每个己方回合包括一次行动阶段和购买阶段。在行动阶段可以使用行动卡,发挥它的特殊效果。行动阶段后是购买阶段,可以使用货币卡购买桌面上预先放好的卡,包括行动卡组(中间两行共 10 种,每次游戏的可以选择不同的行动卡牌组),货币卡组(左侧固定3种)和领土卡组(左侧固定 4 种),购入后不能使用,而是放入“弃牌堆”。己方回合结束后,所有用过没用过的牌都放入“弃牌堆”。当牌组抽完后,将“弃牌堆”作为新牌组使用。

领土卡面积从小到大分为“”,“”和“”,将其面积作为分数。当所有“省份”领土卡被买完或其他至少三种卡被买完后,游戏结束,统计所有在手牌,弃牌堆,牌组的领土卡,拥有领土面积最大的玩家获胜。

不同玩家的不同要求

由于货币卡组和领土卡组都是固定的,所以我们重点研究的乃是行动卡组。不同的行动卡组,会让游戏玩法千差万别。那么肯定有些卡组相对于其它的来说,更能满足玩家的各种刁钻古怪的兴趣。

正如前面所提到的,我们的游戏不可能满足所有玩家,所以接下来我们假想出三种类型的玩家,设计三种满意度测量方式,尝试建立能满足特定种类的玩家的卡组。

基于分数差异的满意度

在玩这款游戏的时候,我们假设第一种玩家想要大获全胜,即以远超对手的分数胜利。第二种玩家觉得能险胜,即以小分数差取得胜利,才能嘲讽对手,才有味儿。

我们想要找满足这些要求的行动卡组。能分别达成这两个目标的卡组,应该包含哪些卡呢?张三大声嚷嚷要有这几张,李四理直气壮说要有那几张,面红耳赤争论了半天,最后才发现张三玩的是《昆特牌》,李四说的是《斗地主》。

空口无凭,实践才是检验真理的唯一标准。不过为了假装这个实验很厉害,我们特定准备了一些满意度公式。用来检验特定行动卡组的满意度。如果你还没有直面这个数学公式的勇气,那么请直接跳过吧。

其中 h(i) 是获胜者在一局中的分数,l(i) 是失败者在一局中的分数。N 为每种卡组所比赛的局数。在我们这个实验中 N1000。公式意思即两人之间的分数差,比上胜利者的分数,在每场游戏中的平均值。这个值介于 [0,1],越高说明胜利者和失败者的分数差越大,更能让第一种玩家胜利后得瑟:“没办法,实力不允许吖”。

不过要是对于那些希望险胜的玩家呢?我们又设计了第二种测量满意度的函数:1-fs。意思即为失败者的分数,除以胜利者的分数。这个值介于 [0,1],越高,说明两者分数越接近,越能让第二种玩家胜利后兴奋:“差一点就输了,真刺激!”。

基于决定性时刻的满意度

第三种玩家偏喜欢那些有各种不确定性,鹿死谁手要到最后一刻才能揭晓的游戏。要是胜负能早早决定的话,那还不如回家洗洗睡。

嗯,没办法,人类就是这样。例如龟兔赛跑,如果兔子不去睡觉,而是径直冲向终点的话,那么这个故事第三种玩家肯定不喜欢看,说不定还会特意准备一棒槌,在半路把兔子打晕,看它能不能在乌龟获胜之前醒过来。

我们还是想要找出满足这个要求的卡组。我们把张三李四的口用胶布封了起来,扔到小黑屋里,然后来继续分析。

优势变更:当游戏的主导权从一方变到另一方时。例如龟兔赛跑中,当乌龟越过真正睡觉兔子的那一刹那,优势就变更了。

决定性时刻:当某个行动能让对手彻底失去胜利机会的时候。当乌龟到达离终点线某个距离时,兔子就算立马起来,使出吃奶的力气奔跑,也没法取胜了。

为了测量决定性时刻 f(d),我们又提出一个数学公式。t(l) 是最后一次优势变更的回合数,而 T 是总回合数。

第三种满意度

优势变更和决定性时刻一起用来测量满意度的方法,已经在其它回合制策略游戏中被证明是很有效的了。在这里,我们使用下面这个公式作为第三种满意度测量方法。L 为优势变更的次数。

电脑玩家设计

我们拜访了三位电脑君主,他们使用不同的战术,代表不同战术的人类玩家。我们唆使他们多多发动战争,好让我们统计数据。他们的黎民百姓疾苦,我们也管不了了。

第一位君主名叫 “Earl”,这位君主行动阶段时,首先选择能增强自己的卡,然后是增加额外行动点以及能影响对方的卡。然后再随机使用剩下的行动卡。游戏开始时会为每个卡设定一个购买优先级,购买阶段而依据优先级去购买。

第二位君主名叫“Drew”,这位君主行动阶段时,首先选择能增加额外行动点的卡,然后是能影响别的卡的效果的卡。然后再随机使用剩下的行动卡。游戏开始时会选定一些卡为“有价值的卡”,购买首先购买它们,如果没有的话就随机购买。

第三位君主名叫“F-N”,这位君主会根据当前游戏状态,以及手上的牌,双方的牌的效果,双方分数差以及很多因素综合考虑自己该怎样使用行动卡以及购买。但是由于计算机性能限制,只能计算出当前回合最好的战略,而不是这场游戏的整体最优战略。

本来还有第四位君主,他依据的是随机,啥事都靠随机。结果战绩惨不忍睹,我们只好给他路费,打发他回家了。不过这样证明了,在这款游戏中,靠随机是无法取胜的,必须要有技术。

对战结果

我们首先想确认这几位君主的水平确实不同,而不是意识到我们在操控他们后,逢场作戏,宣而不战。我们先进行了一次预实验,让两两之间进行了 50000 场游戏,每场的行动卡组都不相同。

上表中,右边两列数中,左列表示前者的胜利场数,右列表示后者的胜利场数,平局算他们都胜利。不同的胜率表明他们确实使用了不同的战术,我们的傀儡操控确实有效。

不对,这种尔虞我诈的战场必须提高警惕。之前我们只是试探而已,万一他们也知道我们是试探而故意不暴露呢?在我们正式的三个实验中,我们又增加了很多预防措施。

我们使用遗传算法来尝试找出那些有趣的卡组。三个实验分别使用三个不同的满意度函数作为依据。

<First> 为第一次实验的满意度,<Last> 为经过 30 代后的最大满意度。为了预防误差,我们又增加三列数据,σ 为标准平方差,而 p 为双边 Student's t-test。看不懂没关系,总之电脑君主一旦出现什么预料之外的偏差,都能被我们及时发现。嗯,它们永无翻身之日了!

在第三个实验尝试最大化第三种满意度函数的时候,为了防止能在最开始就能预测出结果,我们让这些君主自己打自己,即 Drew vs. Drew 之类的。

表 2

从表 2 来看,似乎第二种满意度最大,我们的游戏更能让第二种玩家感到满意。我们是不是该请第二种满意度函数吃顿饭呢?别急,接下来,我们会尝试找出,三种满意度最大的行动卡组中,应该包含哪些卡呢?

分析

我们的预实验证明了依靠特定战术取胜的方法不具备传导性。Drew 和 Eral 平分秋色,Drew 能碾压 F-N,Eral 却被 F-N 虐得死去活来。这些君主没法只靠一种战术就毫无悬念打败其他人,嗯,这下这些电脑君主或人类玩家可有的玩了,他们必定会陷入连年混战,乐此不疲。

接下来是三个正式实验。我们尝试找出我们能满足哪些特定玩家,并找出这些玩家会喜欢的卡牌。嗯,找到这些特定的卡牌之时,就是我们的游戏热销之日。

 

表 3

上图为表 3,不同满意度测量方式下,满意度最大的行动卡组每张卡的名称,以及满意度。

第一个实验中,我们尝试最大化 fs,即最大化分数差异来增加满意度。实验效果不咋地。在表 3 的 a 中,我们仅找到了 1 张出现了 3 次的卡,以及 3 张出现了 2 次的卡,而对局满意度也都在 0.6 左右,即不太容易找到满足第一种玩家要求的卡。第一种玩家:怪我咯?

第二个实验中,我们尝试最大化 (1-fs),即最小化分数差异来增加满意度。满意度非常接近 1 了(注:表中的满意度应该是四舍五入后为 1.0)。看来第二种满意度确实最有前途,我们的游戏能让第二种玩家感到非常满意。

我们也很快就找到了我们寻找的那些卡片,在表 3 的 b 中,有 2 张卡出现了 3 次,5 张卡出现了 2 次。这些行动卡,都是符合第二种玩家胃口的行动卡。假如你也是第二种玩家的话,那啥也别说了,赶紧买买买吧。

当然了,别忘了亲自体验游戏,推测看看这些卡牌的效果为什么能让第二种玩家高兴。

第三个实验中,我们尝试最大化 f,但得到了相当不稳定的结果。我们没能找到在三种对局中都出现的卡。并且对于这三种自己打自己的内战来说,满意度也非常不同。我们的游戏不太适合第三种玩家,他们虽不至于经历人生的大起大落,但也只好真的回家洗洗睡了。

总结

在这个实验里,我们测试了在这款游戏里,哪些行动卡组能让不同玩家满意。当我们设计卡牌游戏时,我们无法同时满足所有人的要求,但可以针对一类特定的玩家,依照上面的方法,改进卡组设计,尽可能让他们感到有趣。

但我们认为,这种方法在设计其它类型游戏时也很有用。我们可以把每张卡当成其它游戏里不同的机制或规则,然后尝试找到那些能让游戏更加有趣平衡的机制或规则。例如,超级马里奥兄弟中,主角有很多移动机制,可以奔跑,跳跃,跳墙,射击…我们可以找出那些能让特定类型玩家喜欢游戏机制和规则,再继续改进,从而牢牢吸引住他们。