欢迎光临散文网 会员登陆 & 注册

战场兄弟策略随写:(2)骰子迷思

2023-09-21 12:12 作者:猫咪仙知  | 我要投稿

随机数基础

随机数表

了解计算机的玩家都知道计算机没有真正的随机数,通过预先生成的列表提供数据。这些表格在制作的时候就已经考虑到了分布情况。

列表的缺点:如果每一次都用同一个列表,我们是可以完美预测到下一个数字的。

实际操作上计算机会提供多个列表,大部分开发者根据当前时间或者类似的方法来确定使用哪一张列表(种子)记忆模糊:我记得早期 BB 似乎如此,还提供了一个每次随机种子不同的选项?


PRNG

但显然熟悉代码的朋友们,很容易看出 Squirrel 脚本和 ECMAScript 很相近,也就是我们熟知的 Javascript。很多类似的解释器,会使用伪随机算法来获得随机随机值,实现 Math.random() 函数。

其中最经典的就是梅森回旋,他会依赖上一个随机数的计算结果,去计算下一个随机数。当然现在也有新的乘法/加法进位法来生成随机数。但是本质上是一样含有状态的。简言之就是他是包含状态依赖

PRNG的缺点:同随机数表一样,相同的种子肯定算出相同的数列。


Low-Discrepancy Sequence

以上两种随机数方式,都能获得“均匀分布”的数列。但是实际情况,则是他们的分布仍然“不够均匀”。所以金融和CG领域会采样 Low Discrepancy 数列(+Shifting)来获得更“均匀”的结果。但是显然,BB没有采用这一种方式。

我们做个实验便知。


骰子到底有没有灌铅?

实验方式

实验的方法很简单,我们在攻击时,将掷骰子的行为重复 1000 次,然后进测试场景攻击几次变能获得足够的测试数据。

在 scripts/skills/skill.nut, Line: 1411,我们增加如下代码。


样本分析

战斗结束后,我们将数据导入到 excel 中进行处理。我们将1-100分成10个组,对随机数采样结果计算占比。

随机数分布,为方便图展示,我将他们都进行了归一化。

可以很明显的看到,当数据量超过2000之后,每个分组的占比逐步回归均匀。观察柱状图表能更清楚对比差异。

如果我们用8000个样本数据和30个数据进行比较的时候,可以看到30样本的分布很有趣。

样本分布,ALL是一个参考

考察8000样本的时候,我们可以看到每个区间的占比基本落在 10%附近,可以用作参考。

显然的,在前30个样本里,Roll点有更多的次数落在 (20, 30] ,而10以下一次都没有。50样本类似。

一般来说低差序列不会产生这样的情况,会分布非常均匀。


重采样

另一方面,重采样会影响样本分布是一些玩家会忽略的情况。从我们在游戏中有几个有趣的限制,包括

  • 战斗中Roll点是敌人和我方轮流进行的。

  • 许多战斗在接敌之后,一般也就持续5个回合左右。

基于以上情况,我们在样本空间中重采样,就简单按顺序跳着采样,每8个样本取一个。在这个基础上,我们随便拉出20个样本来看看。

从图表中可以看出,如果这场战斗的顺序是一直没改变的条件下,第一人一直 roll 出70+,偶尔能roll 出 30+ d的命中。第二个人会有很多机会 roll 出 60 以下的数值。

而与之相反的,第8个行动的人恐怖如斯,基本都会命中,甚至不会roll出 90+的数值。那么大概率会有玩家觉得骰子被“灌铅了”。


技术上是否规避这个情况?

分两个层面。

从均匀层面上探讨,Low-Discrepancy 的方法能很“均匀”的投掷骰子。但是如果我举一个极端的情况,抛硬币,每一次都一正一反,那么在重采样的情况下,2个人物的命中将会变为 100% 和 0%。

从状态依赖层面而言,为了避免这种极端情况,我们一般会对每一个玩家提供自己的骰子(单记录状态)就可以规避。那么,50%的命中率,你可以很安心的认为2次攻击肯定会中一次。即使因为随机发生器出现了偏差,你也可以明确的知道下一个回合的两次攻击一定全中。

这对策略安排非常友好。所以为什么官方不采用这些改进方式?我不知道。但我也曾经尝试过修正过这个情况。最终的结论就是:不好玩。缺少偶然性,没有戏剧性,没有机械降神。

换句话说 50%的命中率,只需要2个回合,神选怒火就一定会降临在你的身上。


补充:命中率

如果你对以上图表看的不是很明白,那么我补充一下累计分布图来看看命中情况吧。

累计分布
  • 第一组样本,60以下的roll点很少,意味着如果他命中率在50以下,大概率不会击中敌人(笑哭)。但如果他最终命中率超过了70,那他基本刀刀烈火。

  • 第二组样本能 roll出更多的 30- 的值,而 60 也有很多。但是因为90以下的只有80%的样本,因此此人会比普通人有更多的几率大失败无法命中敌人。

  • 第八组样本,我觉得应该是绝对代表哥布林吧!它甚至不会 roll 出 90 以上的点数。绝对的灌铅

当然,我们只是理想的考虑按顺序的攻击 roll 点,其他按下不表。


对玩法的影响

到此为止,骰子灌铅的答案已经不重要,更重要的是骰子表现出来的情况,会如何影响我们的策略。

  1. 随机值是均匀的,但是我们考量的是采样结果。特别是小样本情况下,分布不属于我们直觉上的“均匀”。在宏观概念上样本仍然是符合直觉的。

  2. 大概率情况,实现方式采样伪随机数生成器。这种方式是状态依赖的,多个人共用一个骰子的情况下,会造成实际结果的更不“公平”。

  3. 重采样的方式会对样本空间造成影响,但这导致的结果和 2 差不多。

  4. 即使是实体骰子,也会因为场地因素影响不会绝对公平。

基于以上结论,在特定的战斗情况下,我们用概率去考量骰掷结果不是一个很明智的选择。而且追求样本均匀,可能会更“公平”,但不一定更“有趣”。

我们结合第一篇的底层思路,Anti-Pseudo 的方式去游玩本身就是一种保底策略玩法。这是我为什么推荐 Fast Adaption 的原因。你可以从以上的实验结果,很明显的感受到,+10命中 ≠ 增加10%的命中几率。从累积分布图里可以看到,60点与70点区间差了30%的样本。

连续多刀不中的情况确实挺影响心情的,不妨考虑一下你面对一个逃跑的敌人,你在用 22 命中的匕首对他拔甲。

但是有了 FA,就有一个“信息”,告诉你这人一定会击中目标。这也是 9L、HH 带来的信息优势,这些信息会左右到你战场上的策略选择。也会给你在前期带来巨大的优势。


至于 Lv2 点 Student 不在此文讨论内容,每个人都有他的游玩习惯,我也不想强迫你按照我的方式去玩游戏。

战场兄弟策略随写:(2)骰子迷思的评论 (共 条)

分享到微博请遵守国家法律