游戏开发论坛

 找回密码
 立即注册
搜索
查看: 15100|回复: 31

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

[复制链接]

12

主题

124

帖子

243

积分

中级会员

Rank: 3Rank: 3

积分
243
发表于 2014-6-12 10:55:22 | 显示全部楼层 |阅读模式
本帖最后由 xiahj 于 2014-6-12 15:30 编辑

假设:
技能1:动画播放时间10秒,cd时间40秒,造成100伤害。
技能2:动画播放时间5秒,cd时间20秒,造成50伤害。
技能3:动画播放时间10秒,cd时间10秒,造成25伤害。
技能4:动画播放世间5秒,cd时间30秒,造成75伤害。

条件:
(1)cd时间从动画播放开始就计算。
(2)技能的伤害是动画播放的最后一帧结算。
(3)一个技能动画播放完毕才可以播放下一个技能的动画。
(4)当有多个技能可选时,选择伤害最高的技能。

求:
(1)根据以上条件,求10分钟内的最大伤害值和各技能的施放次数。
(2)如果以10分钟和最大伤害值为常量,反推以上各技能造成的伤害,该从何入手?

1

主题

14

帖子

94

积分

注册会员

Rank: 2

积分
94
发表于 2014-6-12 12:48:12 | 显示全部楼层
一样的吧。

12

主题

124

帖子

243

积分

中级会员

Rank: 3Rank: 3

积分
243
 楼主| 发表于 2014-6-12 13:08:59 | 显示全部楼层
trarck 发表于 2014-6-12 12:48
一样的吧。

怎么可能一样。。。必须做到技能穿插施放才可以达到最大效能。但这个穿插如何用数学公式推算?

0

主题

200

帖子

907

积分

高级会员

Rank: 4

积分
907
发表于 2014-6-12 15:06:55 | 显示全部楼层
有什么帮助? 一个序列问题。。伤害结算点是在动画播放完?播放开始进入CD? 不管你是出题目还是碰到的问题,能把题目描述清楚么?

12

主题

124

帖子

243

积分

中级会员

Rank: 3Rank: 3

积分
243
 楼主| 发表于 2014-6-12 15:29:40 | 显示全部楼层
pettine 发表于 2014-6-12 15:06
有什么帮助? 一个序列问题。。伤害结算点是在动画播放完?播放开始进入CD? 不管你是出题目还是碰到的问题 ...

谁都知道这个是统筹问题。不希望做个循环语句每次判断。我要一个算法知道10分钟内每个技能施放多少次和总共造成的伤害。

3

主题

28

帖子

104

积分

注册会员

Rank: 2

积分
104
发表于 2014-6-12 17:14:43 | 显示全部楼层
不要意思,我新注册的,以下是我的解法:
首先要清楚解题核心是要保证在10分钟内达到伤害最大化
所以要使得释放大伤害值的技能的次数最多(即技能1)
假设10分钟内达成伤害最大值的技能释放次数按排列依次为a,b,c,d。就是10分内共释放技能1,a次;依次下去
则所求MAX=100a+50b+25c+75d
条件:
技能释放次数*技能CD<=空余时间
空余时间=总时间-动画播放时间
分析:
伤害值:技能1>技能4>技能2>技能3,所以从左开始考虑可释放技能的空余时间。
初始600s,考虑改时间内技能1可释放几次:
a=600/40      技能1释放a次所需时间不超过总时间,若所得a值取整,余数设为t1并与技能1释放时间10比较,若t1>=10,则技能1次数为a+1
d=(600-10a-t1)/30   技能4伤害值排第二,其空余时间为总时间-a次技能1释放时间,同上
b=(600-10a-5d-t2)/20
c=(600-10a-5d-5b-t3)/10
结果:技能1次数:a=15,
技能4次数为:d=15,
b=19且t3=5,所以技能2次数为:b+1=20
c=29且t4<10故技能3次数;为:c=29
若有不对请指出,反推也是按技能伤害值从大到小考虑。数学模型自己想,程序自编,本人程序小白,勿扰

13

主题

832

帖子

1875

积分

金牌会员

空想家

Rank: 6Rank: 6

积分
1875
发表于 2014-6-12 19:06:51 | 显示全部楼层
简便的做法是将动画锁死时间设为一个相同的较小值,这里设为1秒。
然后除了CD:ANIM的基准技能外,所有其它技能的发动几率就是1/CD,
技能的效率按 (dmg-基准技能dmg)/(CD-1)排序,其发动几率之和小于1的话,
剩余的几率就是基准技能的发动几率。

各技能的发动机率*DMG求和,就是DPS了。

13

主题

832

帖子

1875

积分

金牌会员

空想家

Rank: 6Rank: 6

积分
1875
发表于 2014-6-12 19:07:32 | 显示全部楼层
是CD=ANIM不是CD:ANIM,就是楼主的3技能。一般是普攻。

12

主题

124

帖子

243

积分

中级会员

Rank: 3Rank: 3

积分
243
 楼主| 发表于 2014-6-12 20:57:39 | 显示全部楼层
Mr_I 发表于 2014-6-12 19:06
简便的做法是将动画锁死时间设为一个相同的较小值,这里设为1秒。
然后除了CD:ANIM的基准技能外,所有其它 ...

如果将动画播放时间设为0,则极限效能就很好算了。就是4个技能 额定时长*技能伤害/cd时间 之和。 但加入动画播放时间后就很麻烦了。想不出什么很好的解决方案哎

7

主题

371

帖子

2212

积分

金牌会员

Rank: 6Rank: 6

积分
2212
发表于 2014-6-12 22:05:56 | 显示全部楼层
最简单的算法,单位DPS最高的能扔就扔。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-3-28 23:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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