游戏开发论坛

 找回密码
 立即注册
搜索
楼主: xiahj

[求助] 大家来做题,关于技能伤害计算,对大家都有帮助的

[复制链接]

26

主题

607

帖子

2276

积分

金牌会员

Rank: 6Rank: 6

积分
2276
发表于 2014-6-13 00:15:45 | 显示全部楼层
把这里的"动画播放时间"转换成我们常说的"读条",就很好理解了.所谓输出循环就是在开始使用技能时到下一次所有技能重置完毕时.我只考虑到了一种情况,就是释放技能顺序如下组成一个循环:41234231423(5)2.按照有4放4,没4放1,2。最后放3的顺序。一个循环90秒,一共可以打出6个循环剩下60秒.一个循环伤害是700.6个循环是4200.在加上剩下的60秒可以打一个41234321,伤害为500.10分钟打出的伤害最高是4700.不知道这样算对不对呢?

2

主题

48

帖子

241

积分

中级会员

Rank: 3Rank: 3

积分
241
发表于 2014-6-14 15:20:28 | 显示全部楼层

我的解法如下:

思路是:首先不能用函数表达式直接求极值(也可能可以,但我不会),明确了这个后,我们要做的是找出无CD情况下输出最高的技能,因为这个才是实际输出最高的技能。为什么,等会再说。
技能1:
E1(无CD)= 10
E平均 = 2.5

技能2:
E1(无CD)= 10
E平均 = 2.5

技能3:
E1(无CD)= 2.5
E平均 = 2.5

技能4:
E1(无CD) = 15
E平均 = 2.5

可以看到所有的技能平均伤害时间都是相同的,这意味着,只要有充足时间释放,每个技能DPS都是一样的。但实际情况不是如此,因为技能可以交错避开CD释放。
这样一定要让技能4发动最多,因为技能4瞬发伤害最高,即无CDdps,那会不会出现有其他技能E(无CD)没有技能4高,但是CD时间里加其他技能伤害加起来比技能4组合高呢?
答案是不会,因为E(平均)是一样的。
T(技能4CD - 动画)=25s
在这25秒里,再按刚才的方法递归,找下一个E(无CD)最高的,也就是技能1和2,其中优先发CD高的
最后发招顺序是技能4 - 技能1 - 技能2 - 技能3
但是实际情况是,技能1CD太长,下回合发不出,所以技能1下一回合顺序放后面
技能4 - 技能1 - 技能2 - 技能3 - 技能4 - 技能2 - 技能3 - 技能1 - 技能4 - 技能2- 技能3 - 技能2
这是每90s伤害,然后最后时间剩60s再凑一凑

26

主题

607

帖子

2276

积分

金牌会员

Rank: 6Rank: 6

积分
2276
发表于 2014-6-14 20:56:21 | 显示全部楼层
violet_smy 发表于 2014-6-14 15:20
我的解法如下:

思路是:首先不能用函数表达式直接求极值(也可能可以,但我不会),明确了这个后,我们 ...

跟我那个是一个意思不?

5

主题

101

帖子

1681

积分

金牌会员

Rank: 6Rank: 6

积分
1681
发表于 2014-6-18 17:31:28 | 显示全部楼层
本帖最后由 BeerRabbit 于 2014-6-18 17:41 编辑

发一个模拟结果(50000次,取最优解,当然未必是唯一的)
1、模拟耗时
Elapsed time is 665.823701 seconds.
2、最大伤害(至少在这5万次的模拟结果中是最好的,不保证没有更好的)
MaxTotalDamage =
        4350
3、释放顺序(每一行的三个数表示=【释放时间(单位:秒),技能索引(按照LZ给出的顺序表示),技能伤害】)
DischargeState =
     0     4    75
     5     3    25
    15     1   100
    25     2    50
    30     3    25
    40     3    25
    50     3    25
    60     2    50
    65     1   100
    75     3    25
    85     2    50
    90     3    25
   100     3    25
   110     1   100
   120     4    75
   125     2    50
   130     3    25
   140     3    25
   150     4    75
   155     3    25
   165     2    50
   170     3    25
   180     3    25
   190     3    25
   200     1   100
   210     2    50
   215     3    25
   225     3    25
   235     2    50
   240     3    25
   250     1   100
   260     3    25
   270     2    50
   275     3    25
   285     4    75
   290     3    25
   300     3    25
   310     1   100
   320     4    75
   325     3    25
   335     3    25
   345     2    50
   350     4    75
   355     3    25
   365     3    25
   375     1   100
   385     4    75
   390     3    25
   400     2    50
   405     3    25
   415     4    75
   420     2    50
   425     3    25
   435     1   100
   445     3    25
   455     4    75
   460     3    25
   470     2    50
   475     1   100
   485     3    25
   495     4    75
   500     2    50
   505     3    25
   515     3    25
   525     2    50
   530     4    75
   535     1   100
   545     3    25
   555     3    25
   565     2    50
   570     4    75
   575     3    25
   585     2    50
   590     3    25
4、四个技能的释放次数:
10    16    36    12




12

主题

124

帖子

243

积分

中级会员

Rank: 3Rank: 3

积分
243
 楼主| 发表于 2014-6-20 10:21:49 | 显示全部楼层
BeerRabbit 发表于 2014-6-18 17:31
发一个模拟结果(50000次,取最优解,当然未必是唯一的)
1、模拟耗时
Elapsed time is 665.823701 seconds ...

亲,5万次模拟我早就搞过了。。但这个不能成为“算法”的依据,只能作为检验算法是否准确的凭证。。。。

0

主题

37

帖子

57

积分

注册会员

Rank: 2

积分
57
发表于 2014-6-23 15:54:44 | 显示全部楼层
楼主你是要写宏么~~?请站桩测试~

12

主题

124

帖子

243

积分

中级会员

Rank: 3Rank: 3

积分
243
 楼主| 发表于 2014-6-23 18:48:07 | 显示全部楼层
土豆发涩 发表于 2014-6-23 15:54
楼主你是要写宏么~~?请站桩测试~

我是要公式算法。写宏没有意义。

0

主题

37

帖子

57

积分

注册会员

Rank: 2

积分
57
发表于 2014-6-24 20:53:18 | 显示全部楼层
xiahj 发表于 2014-6-23 18:48
我是要公式算法。写宏没有意义。

写公式算法的意义何在~? 为了锻炼数学能力么~?

9

主题

37

帖子

143

积分

注册会员

Rank: 2

积分
143
发表于 2014-6-26 23:01:58 | 显示全部楼层
yefengzi 发表于 2014-6-12 17:14
不要意思,我新注册的,以下是我的解法:
首先要清楚解题核心是要保证在10分钟内达到伤害最大化
所以要使得 ...

我理解为abcd是你所设的技能施放次数,对于技能1234,施放所用时间为,10,5,10,5.
你的结果为,a=15 b=20 c=29 d=15

a*10+b*5+c*10+d*5  =615,  为什么多了15秒?

3

主题

28

帖子

104

积分

注册会员

Rank: 2

积分
104
发表于 2014-6-27 20:56:06 | 显示全部楼层
915206034 发表于 2014-6-26 23:01
我理解为abcd是你所设的技能施放次数,对于技能1234,施放所用时间为,10,5,10,5.
你的结果为,a=15 b=20 ...

a=d=15,c=28,b=19,之前计算有误 ,原先计算的时候我把C和D的释放时间弄错了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-3-29 13:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表