游戏开发论坛

 找回密码
 立即注册
搜索
查看: 53206|回复: 66

[讨论] 一个数值公式设计问题!高手进来算算

[复制链接]

8

主题

144

帖子

161

积分

注册会员

Rank: 2

积分
161
QQ
发表于 2007-3-14 23:33:00 | 显示全部楼层 |阅读模式
说明:  
     公式设计要求尽量的缩短程序运算时间
比如说2个公式满足要求,在计算次数无穷大时,程序运算时间短的为最好。


题目如下:

            设定 A 为 发动者的攻击力
            设定 B 为 目标的防御力
            设定 C 为 目标被攻击后受到的伤害

  设置前提:A下限为1,上限为3000,但不会到3000,可以无穷接近3000
            B下限为1,上限为500,但不会到500,可以无穷接近500
            C下限为1,上限为1000,但不会到1000,可以无穷接近1000
  
  要求:
          1.当防御越高,受到的伤害就越小
          2.防御力越接近上限,伤害数值上的变化越小。(就是说防御提升与伤害减少不是按照正比计算。是一个曲线比例,比如说每提高100点防御,伤害应该减少1/5,但是这里要求,1点防御提到100,提升后伤害比1点防御要减少1/5,从100提到200,伤害减少就 < 1/5了,而随着越接近上限500的时候,减少就越来越小)
          3.防御为1的时候,攻击力与伤害数值相等,可以允许 略小于攻击力的数值
          4. 防御为无穷接近500的时候,基本不受到伤害,或者受到很小的伤害
------------------------------------------------------------------------------------------------
本来想发个关系曲线,但想还是算了。看各位的文字理解吧
[em23] [em10]

52

主题

979

帖子

1066

积分

金牌会员

Rank: 6Rank: 6

积分
1066
QQ
发表于 2007-3-15 09:14:00 | 显示全部楼层

Re:一个数值公式设计问题!高手进来算算

在下在之前公司做的数值,,攻防方面就是这样做的...

8

主题

144

帖子

161

积分

注册会员

Rank: 2

积分
161
QQ
 楼主| 发表于 2007-3-15 09:29:00 | 显示全部楼层

Re:一个数值公式设计问题!高手进来算算

这里的关系曲线是一个比较平滑的曲线,难度就在这里。能给出公式的就发上来看看吧,讨论一下最好的方法和思路

27

主题

1289

帖子

1374

积分

金牌会员

Rank: 6Rank: 6

积分
1374
QQ
发表于 2007-3-15 09:41:00 | 显示全部楼层

Re:一个数值公式设计问题!高手进来算算

去找个WOW的伤害计算公式来看吧

那里有个系数调整的很不错

我之前的公司就是用的那个公式的修改版本

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
发表于 2007-3-15 10:18:00 | 显示全部楼层

Re:一个数值公式设计问题!高手进来算算

((技能伤害值A+攻击伤害随机加成数B)*(1-防御减少伤害百分比C*防御效果率D*防御成功值E*护甲耐久比F*护甲效果率G)+(等级差加成伤害值H+伤害随机加成值J)—(格挡值K*格挡效果率L*格挡成功值M+随机格挡加成值N))*(暴击倍数O*暴击效果率P+暴击随机加成数Q)=实际伤害值R

找到个自称巨牛的WOW伤害公式,是不是那个玩家自己乱造的

比较不解的是何谓 效果率???竟然还“防御效果率D*防御成功值E*护甲耐久比F*护甲效果率G”,让人摸不着头脑,谁能解释下?

8

主题

144

帖子

161

积分

注册会员

Rank: 2

积分
161
QQ
 楼主| 发表于 2007-3-15 11:34:00 | 显示全部楼层

Re:一个数值公式设计问题!高手进来算算

1。(针对角色属性影响)防御效果率就是角色属性上影响的防御修正,防御成功值就是角色属性上关于防御的命中率修正问题。
2。(针对装备影响)护甲耐久比就是装备的防御吧,护甲效果率就是命中率

4

主题

192

帖子

198

积分

注册会员

Rank: 2

积分
198
发表于 2007-3-15 13:06:00 | 显示全部楼层

Re:一个数值公式设计问题!高手进来算算

=。=

自己适合的公式就好。满足需求的就好。

做出来大概样子,拿matlab或者mathamatic多模拟几遍调整系数,合适就ok了。

14

主题

145

帖子

191

积分

注册会员

Rank: 2

积分
191
发表于 2007-3-15 17:54:00 | 显示全部楼层

Re:一个数值公缴杓莆侍猓「呤纸?此闼?> </td>

如果光是只要满足题目所提出的要求,其实是很简单的一个公式...

用EXCEL表模拟出来的结果

公式模型:C=A*参数1*(1-B的平方根*参数2/100)

实际公式:C=A*0.35*(1-B的平方根*4.4/100)
C向上取整

OK,搞定!

14

主题

145

帖子

191

积分

注册会员

Rank: 2

积分
191
发表于 2007-3-15 18:00:00 | 显示全部楼层

Re:一个数值公缴杓莆侍猓「呤纸?此闼?&gt; &lt;/td

C=A*0.35*(1-B的平方根*4.4/100)
C向上取整
这个公式完全满足你的条件

1.当防御越高,受到的伤害就越小
B是减少的百分比,B越高,C自然越小;

2.防御力越接近上限,伤害数值上的变化越小
因为取的是B的平方根,固而B越大,变化的趋势就越小,对伤害的降低影响也就越小

3.防御为1的时候,攻击力与伤害数值相等,可以允许 略小于攻击力的数值
防御为1时,防御对伤害的吸收为4.4%,已经非常小了

4. 防御为无穷接近500的时候,基本不受到伤害,或者受到很小的伤害
防御接近500,对伤害的吸收接近100%,所以就基本上不受伤害了

另外,在这个公式里,当攻击趋向3000,防御趋向1时,伤害正好到达上限1000.而下限,因为向上取整的关系,所以至少为1

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
发表于 2007-3-15 18:50:00 | 显示全部楼层

Re:一个数值公式设计问题!高手进来算算

明白了,F(A) = A * a * ( 1 - sqrt(B) * b / 100 )

令 g(B) = 1 - sqrt(B) * b / 100

lim g(x) x-&gt;500 时 g(x) -&gt; +0

推出 b 约= 4.4

……剩下的用极限可以推出  [em2]

[em5]要严谨的话,还要证明在域内是单调函数,高数复习的有些效果  [em19] [em23]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-14 12:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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