游戏本体

Balatro

机核文章

小丑牌Balatro无法战胜的分数机制 | 机核 GCORES

总结

  1. 从底注11开始,小丑牌的难度显著增加。
  2. 无尽模式确实是无限的,而且你不能真正“通关游戏”。

契机

我经常发现自己有一个还不错的卡组,但在达到某个底注级别后,游戏难度会急剧增加。盲注变得如此之大,以至于游戏感觉无法战胜。

于是,我很好奇游戏到底是如何计算盲注分数的。从游戏文件中提取了 Lua 文件后,使用关键词“300”(初始回合盲注金额),我找到了 misc_functions.lua 中的方法get_blind_amount(ante)

发现

以下是完整函数:

get blind amount.png

这个方法很好分析:

  1. 有三个 if 语句,根据不同的ante_scaling参数来设置每一回合的初始金额,其中 1 是最低,3 是最高。

    Untitled

  2. 例如,在game.lua这个文件中,我们会发现等离子卡组为被设置成了2。

    b plasma.png

  3. 每个if判断语句的剩余代码相同,根据盲注等级(ante)设置分数(amount)。当盲注小于1时,分数为100。当盲注小于等于8时,分数从分数列表(amounts)中取。

    Untitled

    Untitled

  4. 然后,代码使用盲注等级和分数列表设置参数 a, b, c, d 来计算当盲注大于8时的盲注金额。

    Untitled

    $$ \text{用数学方法表达:}\\

    \begin{align*} &k = 0.75\\ &a = 180000\\ &b = 1.6\\ &c = n - 8\\ &d = 0.2 (n - 8 )\\ &A = \lfloor a \cdot (b + (k \cdot c)^d)^c \rfloor\ \\ &A'= A - \left( A \mod 10^{\lfloor \log_{10}(A) - 1 \rfloor} \right)\\\\ \end{align}

    \\\text{其中,k, a, b, c, d为自定义参数。a根据不同盲注等级取不同数值。} \\\text{n为盲注等级。A为运算中间项。A'为最终分数。} $$