根据变化率计算敌人的生命值(推断)?



在我们的游戏中,我们有一个老板(NPC(,他的生命正在被检查一个时间间隔,比如1分钟。我需要找到一种方法来推断已知点(生命,时间(,并大致预测一分钟后的生命(1分钟后生命将再次检查,并将放入数据集(此外,外推主要需要考虑最近的变化(例如,如果我们有10个点,而最后两个点变化迅速,它应该能够在下一个点预测更快速的变化(。我找到了多个示例,这个和这个,但似乎我无法在 as3 代码中翻译所有这些。基本上我正在寻找的是2D外推

附言关键是任何计算值都不能超过之前的任何值,那是因为boss的生命值不能增加,也不能保持不变;他们只能减少。我想这意味着外推是行不通的。所以我正在寻找另一种可以做到的算法。

考虑一种受微积分启发的方法。如果我们有一个列表d[i]过去时间i的损坏,并且当前时间是 n ,那么我们可以使用列表中以前的值来估计d[n+1]d[n] - d[n-1]根据最近的值提供从d[n]d[n+1]的变化的估计值,(d[n] - d[n-1]) - (d[n-1] - d[n-2])提供该变化变化的估计值,依此类推。这个想法是使用差异来估计变化。如果你有一个时间序列数据列表d[i] = [a,b,c,...],另一个列表d2[i] = d[i] - d[i-1],那么d2[]是 i> 1 的所有时间d[]的变化。由于d2[]也是一个时间序列,您可以使用它来创建d3[],链接项以提供估计值:

d[n+1] ~ d[n]    +    ( (d[n] - d[n-1]) )  +  ( (d[n] - d[n-1]) - (d[n-1] - d[n-2]) )  +  ...
         ^last value    ^ est. change           ^est. change of change
         d[n]           d2[n]                   d3[n]

当然,这对传入的数据做出了很多假设。我能想到的两个最重要的问题:

  • 这假设最近的变化完全代表未来的值 - 在变化项是非线性的情况下,这会导致估计滞后于实际数据
  • 随着添加更多项,"滞后"变得更强 - 更好的估计(更多项(必须与更好的敏捷性(更少的项(相平衡
  • 传入数据中的异常值直接反映在等式中,从而直接影响生成的估计值

相关内容

  • 没有找到相关文章

最新更新