基于游戏的理论计算工具的算法(英雄联盟)


10

我想为一个游戏(传奇联盟)创建一个模拟器(主要用于测试)。

游戏基础:

您有一个具有以下统计数据的英雄:

  • 健康点
  • 攻击伤害
  • 攻击速度
  • 盔甲
  • 护甲穿透
  • 移动速度

英雄可以拥有4种技能(每个级别上只有一个技能点)(大多数情况下它们是手动激活的,具有冷却时间,伤害,攻击力/攻击伤害比例和技能等级)+被动技能

您可以杀死具有相同属性的敌方英雄或中立怪物:

  • 健康点
  • 攻击伤害
  • 攻击速度
  • 盔甲

我想做的是:

创建一个工具来测试特定物品或特定属性的增加是否会加快您的杀伤力/速度。

地图:http : //evtron.com/Evtron-Alpha/wp-content/uploads/2011/02/Summoners-Rift.jpg

统计示例:

  • 马力:420
  • 广告:55
  • AttackSpeed:0.613(攻击/秒->每1 / 0.613秒的攻击)
  • 护甲穿透力:25

角色将以1 /攻击速度自动攻击敌人,并造成攻击伤害(有一个计算伤害的公式,但是我猜这个阶段并不重要),一旦他们死了,就以移动速度移动到下一个敌人(您可以在地图上看到营地,黄色的头骨)

我在考虑算法:

  1. 我想如果我只是从i = 0到i = 30000(计算毫秒)做一个for,那么我就可以检查敌人的hp和我的hp,以及每个ms都非常糟糕(相当的cpu重,我想给它放一些随机数,所以我应该能够总结出1k次迭代,这是不可能的)

  2. 其次,我认为我应该做一个从i = 1到30的取值,并每秒检查一次,并检查最后一秒发生了什么,但是一些中性怪物在一个大营地(最多4个怪物),并且这样,代码变得越来越复杂。

  3. 我将为每个玩家/怪物创建线程,一旦它们完成,将在死亡时进行查找,并降低玩家的生命值。

我的问题是,这是正确的方法吗?

TLDR:我想创建一个工具来对游戏进行分析(迭代1k并计算平均值),该统计数据的增加将使角色杀死更快的中立怪物。

我更喜欢java,但是atm却使我陷入了困境。


@Karoly S:是的,我不好,.com-> .eu

我一直在努力:

我正在检查每个对象的剩余时间(玩家技能,自动攻击,增益),并始终选择最短的时间,并存储last_time,并将时间与时间相加,在下一轮中,我用(time-上次)

如果对象的剩余时间为0,它将执行所需的任何操作。

我不知道这是否有效,但这是我能做的最好的事情。


1
您可能会希望在Stack Exchange的“游戏开发”部分/站点上遇到更好的运气,尝试获得Mod来移动它,尽管无论如何它们还是有可能的。一个杂乱无章的模拟器会很有趣,我会考虑一下,然后看看我想出了什么。
Karoly S 2011年

感谢您的快速解答,非常感谢您的帮助。我的猜测是您也是匈牙利人,对吗?

绝对,这是我考虑过的事情,虽然深度不尽如人意,但我会对它感兴趣。我的最初方法是查看#2的有效而简单的版本是否可行。我想与您详细讨论。是的,您的猜测是正确的:)
Karoly S 2011年

对我来说听起来很酷,我将让话题保持开放状态,也许有人已经对此有所了解。我的电子邮件(在gwelican dot com

听起来不错,我会考虑一下,然后在今天晚些时候给您发送电子邮件。
2011年

Answers:


1

逐帧模拟的替代方法:

您可以通过以下公式获得某种合理的模拟近似值:

rawDamage = <some function of strength?)
Damage = rawDamage - enemyArmorReduction
DPS = (attackSpeed * Damage) * enemyArmorMod
myRemainingHP = myDPS / theirHP  - theirDPS / myHP

您还可以维护一个移动队列,以便模拟每个动作而不是每个刻度:

// my aspd = 4 attacks per second, his aspd = 3 attacks per second
0.0s : start battle
0.25s: I attack
0.33s: He attacks
0.50s: I attack again
...
1.00s: I attack
1.00s: He attacks
...

移动队列将更加准确,因为它可以正确处理损坏是离散而不是连续的事实。例如,如果我在0秒内造成50点伤害,而在1秒内又造成50点伤害,则我的DPS为50,但我会在1秒内杀死100 HP目标。

@hammar:是的。战斗越短,基于DPS的估算就越不准确。

游戏具有眩晕和其他减益效果的事实将使这种工具的确难以实现,因为不同的玩家杀死率会有所不同。无论如何,好的答案。
格里姆肖2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.