试图找到(猜测)游戏公式

时间:2014-12-01 14:05:42

标签: math game-engine formula linear-algebra

您好我正在尝试找到某个系统(游戏)的公式,并希望得到一些帮助。

我会尽量不要太过深入了解游戏背景,但有时需要更好地了解情况。

这是一篇有点长篇文章,但请耐心等待!这个游戏现在存在了12年,没有人试图破译它(或者至少发表了结果)

我确定游戏主要是在 C ++ 中完成的,如果有帮助...

事实:

1)它是未知顺序的百分比和平面值的混合

2)我不知道实际的基本价值是多少,而且很可能存在其他隐形奖金

3)找到所有奖金是无关紧要的,只找到适合公共使用的工作算法

4)我可以收集无限量的示例方程式

5)我有10个装备槽+ 1个武器槽,每个装备都有一定的%奖励,而且武器可以有一定的平坦奖励


现在我假设通用公式是

(baseValue + flatBonuses)*(sumOfAllPercentageBonuses/100 + 1) =finalTotal

等式示例:

我在这里遇到的主要问题是,当我移除所有装备+武器碎片时,我看到的数字似乎并不是基本值,因此为什么:

2170是我可以直观地看到删除所有设备的最低值

(2170)*(1.22) = 2543 is false

但我认为可以安全地假设2170接近实际的基础伤害,因为它比上述的22%增加了17%

武器很可能有一个修正值,它的平坦值:

309这里是武器扁平伤害

 2170 + 309*weaponModifier = 2685

另一种武器:

2170 + 34*weaponModifier = 2226

考虑到2170应该接近实际的基础伤害,并且使用2170的武器修改器给出大约1.6ish,我们可以假设武器修改器是1.6且具有低误差范围。

有可能百分比实际上没有总结:

再次,从2170年开始:

  • 使用1台设备,每台22%,最终达到2543
  • 有2台设备,每台22%,最终达到2993

应用一般假设公式在视觉上实现最高价值:

设备:

  • 4x22%

  • 1×19%

  • 1x159%

  • 1×10 5%

总计379%

  • 1x494(武器)

    (actualBaseBalue + otherFlatBonuses + 494 * weaponModifier)*(4.79)= 12,908

我不是要求任何人为我努力工作,但我不是数学家。我已经尝试了2个小时没有结果,如果有人有任何想法我会非常感激他们!谢谢你的阅读。

如果有人对其他信息或截图感兴趣,请询问。

1 个答案:

答案 0 :(得分:1)

可以做出几个假设。假设你有两种奖金,平和百分比,因此分别是加成和乘法奖金。让b为基值,a为加性奖励,m为乘法加值 - 按照您定义的方式,因此需要乘以(m+1)

  • 添加奖金可以在乘法之前应用,如您所谓(a+b) * (m+1)
  • 相反的b*(m+1) + a
  • 两者(例如之前获得一次力量奖励,之后获得一次额外奖励)(a+b) * (m+1) + a'
  • 可以添加几个乘法奖金:b * (1+m+m')
  • 可以乘以几个乘法奖励:b * (1+m) * (1+m')

棘手的部分是有许多参数,上述任何组合都可能有效。尽管或者你的技能已经超过了#34;如你所说(因此在整个实验过程中保持不变),他们可能仍会通过修改或思考这些值来发挥作用,例如p一个重要因素,b * (1+pm)b * p(1+m)

我建议的是以下内容:

  • 对于每种设备,试着找出它是乘法或加法。
    • 尝试找到没有附加特殊物品的设备(没有"附魔和#34;额外的奖金或其他)。让我们注意v每个实验的价值。
    • 您需要至少2件与您相同的设备,具有不同的值x。实验越多,你必须弄清楚以下哪些法则是恒定的(或x中的线性,如果你不除以*)。
      • 如果这件设备的奖金是加成的,那么(v - b) / x就是不变的。
      • 如果这件装备的奖励是乘法的,那么v / (b * (1+x))就是不变的。
      • 如果在添加1到m之前,这件设备的奖励是重要的,那么(v / b - 1) / x是不变的。
  • 现在你已经为每种单独的设备制定了法律,尝试将它们混合起来。让我们记下b基值v1v2不同设备的值(单独),以及v新实验的值。
    • 如果奖金累加,v = b + (v1 - b) + (v2 - b)(这适用于两个附加法则,或根据乘法法则适用的附加法律)
    • 如果奖金倍增,v1 / b = v2 / v1,例如2543 / 2170~ = 2993 / 2543~ = 1.17(这适用于两个乘法定律,或者是加法定律后的乘法定律)

等等。基本上,尝试探索组合的可能性空间,以获得一个值,看看它意味着什么(即试图预见值),然后进行实验,直到你得到正确的模型。并且记住,只要您有多个项目,奖金的申请顺序就很重要。只要你一次添加一个项目,你应该没事。


*不要忘记输出值是int,因此是公式输出的舍入值。我建议每次尽可能多地获取,并尝试绘制每条曲线(v-b) = f(x)v/b = f( (1+x) )(v/b - 1) = f(x),并查看 - 或拟合模型 - 以查看哪条是线性的。如果有某种思考,那就是这条线的斜率。