游戏开发论坛

 找回密码
 立即注册
搜索
楼主: 邺剑云

[讨论] 为什么伤害躲闪之类的数值计算要那么复杂??

[复制链接]

26

主题

537

帖子

537

积分

高级会员

Rank: 4

积分
537
发表于 2007-4-17 17:15:00 | 显示全部楼层

Re:为什么伤害躲闪之类的数值计算要那么复杂??

分支语句比除高效,这个作为结论是草率了些,得看CPU的指令线长和指令处理方式,更得看具体代码设计。

但对其它的内容,我只能对santaclaus_lion说,你大概因为自己比较丰富的经验而太自负了,自负得甚至没仔细看清我的意思。

到处用if(x>y)——>太业余——>小白程序——>坐井观天,这些串联起来并没有错,不过只要开头不成立,后面的指责便毫无意义了,那么怎么时候该用if,用多少if,恰恰就是这个主题值得讨论的地方。

只拿前面一个例子来说,“if 伤害<=0;伤害=1”很可笑吗?一个攻击5的人和一个攻击100的人打一个防御100的人效果完全一样是扯淡吗?它们针对的是什么问题?——100个攻为1的攻击1个防为100的目标可能完全无效。现实中是怎样呢?100个士兵手持步枪攻击1辆装甲车应是什么效果——完全无效,这时你抱挺重机枪上来把装甲车扫得表面一片凹凸就有效了吗?现实最不扯淡:如果防御100,100个攻为1就是无效,1个攻击5的人和1个攻击100效果就是没有区别,“伤害=攻击-防御”不正确吗?

于是我们会说游戏不是完全的现实,所以应加上其它调整值诸如承受度等等...,愿意这样将公式想复杂些当然随设计者的便,但“if 伤害<=0;伤害=1”是什么?是用来说明:原本考虑的如果是“伤害=攻击-防御”这种简单公式,那么处理伤害这种特殊情况并不成为把它变得那么复杂的理由。

15

主题

526

帖子

526

积分

高级会员

Rank: 4

积分
526
发表于 2007-4-17 17:34:00 | 显示全部楼层

Re: Re:为什么伤害躲闪之类的数值计算要那么复杂??

系统崩溃: Re:为什么伤害躲闪之类的数值计算要那么复杂??
单纯的“伤害=攻击-防御”当然极端了些,然而对于“100个攻为1的攻击1个防为100的“这样的问题,在“伤害=攻击-防御”之后加一句“if 伤害<=0;伤害=1”,同在公式里加好几个乘除号和参变量相比又如何?


你不觉得这样的话伤害递减会很成问题么?

[攻100]打[防50]:造成50伤害
[攻100]打[防60]:造成40伤害。提升了20%的防御力,减少了20%伤害,收益100%
[攻100]打[防70]:造成30伤害。提升了约15%的防御力,减少了25%伤害,收益166%
[攻100]打[防80]:造成20伤害。提升了12.5%的防御力,减少了33%伤害,收益265%
[攻100]打[防90]:造成10伤害。提升了约11%的防御力,减少了50%伤害,收益455%
[攻100]打[防99]:造成1伤害。提升了10%的防御力,减少了90%伤害,收益900%
[攻100]打[防100]:造成1伤害。提升了约1%的防御力,减少了0%伤害,收益0%
[攻100]打[防200]:造成1伤害。提升了100%的防御力,减少了0%伤害,收益0%

你自己画曲线看看,提升和回报的比例是不是很怪?还有就是上面说的,攻击力1的小号和攻击力99的中号打一个防御力100的大号,伤害一样,是不是很荒唐?

49

主题

1388

帖子

1432

积分

金牌会员

Rank: 6Rank: 6

积分
1432
发表于 2007-4-17 17:49:00 | 显示全部楼层

Re: Re: Re:为什么伤害躲闪之类的数值计算要那么复杂??

Raketenfaust: Re: Re:为什么伤害躲闪之类的数值计算要那么复杂??

[攻100]打[防50]:造成50伤害
[攻100]打[防60]:造成40伤害。提升了20%的防御力,减少了20%伤害,收益100%
[攻100]打[防70]:造成30伤害。提升了约15%的防御力,减少了25%伤害,收益166%
[攻100]打[防80]:造成20伤害。提升了12.5%的防御力,减少了33%伤害,收益265%
[攻100]打[防90]:造成10伤害。提升了约11%的防御力,减少了50%伤害,收益455%
[攻100]打[防99]:造成1伤害。提升了10%的防御力,减少了90%伤害,收益900%
[攻100]打[防100]:造成1伤害。提升了约1%的防御力,减少了0%伤害,收益0%
[攻100]打[防200]:造成1伤害。提升了100%的防御力,减少了0%伤害,收益0%

为什么会很奇怪呢?

我吃一个包子三分一饱
两个包子三分二
三个包子百分百
再增加包子,对我的收益也是为0啊,除非我自己想撑死自己、、、、、、 [em10]

15

主题

526

帖子

526

积分

高级会员

Rank: 4

积分
526
发表于 2007-4-17 17:55:00 | 显示全部楼层

Re: Re: Re: Re:为什么伤害躲闪之类的数值计算要那么复杂??

zfscnu: Re: Re: Re:为什么伤害躲闪之类的数值计算要那么复杂??


为什么会很奇怪呢?

我吃一个包子三分一饱
两个包子三分二
三个包子百分百
再增加包子,对我的收益也是为0啊,除非我自己想撑死自己、、、、、、 [em10]



攻击和防御双方都是要算损益的。你吃包子不需要计算你和包子之间的平衡性吧?别拿没有可比性的东西来添乱。

2

主题

44

帖子

44

积分

注册会员

Rank: 2

积分
44
发表于 2007-4-17 18:04:00 | 显示全部楼层

Re: Re:为什么伤害躲闪之类的数值计算要那么复杂??

jamesge: Re:为什么伤害躲闪之类的数值计算要那么复杂??

三句话:
公式服务于效果
效果需要平衡
平衡和效果又都是为了体现游戏的可玩性

公式并非是越复杂越好,...

简单易懂
在达到游戏可玩性的前提下尽可能的简单,这才是数值公式的根本

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
发表于 2007-4-17 20:05:00 | 显示全部楼层

Re: Re: Re:为什么伤害躲闪之类的数值计算要那么复杂??

Raketenfaust: Re: Re:为什么伤害躲闪之类的数值计算要那么复杂??



你不觉得这样的话伤害递减会很成问题么?

[攻100]打[防50]:造成50伤害
[攻100]打[防60]:造成40伤...


看上去是很怪…… [em22]

49

主题

1388

帖子

1432

积分

金牌会员

Rank: 6Rank: 6

积分
1432
发表于 2007-4-17 21:32:00 | 显示全部楼层

Re:为什么伤害躲闪之类的数值计算要那么复杂??

包子 类比 +防

肚量 类比 其他人的攻击度

为什么没有 可比性呢???

既然肚量就是 只能容纳三个包子,你给我再多的包子,我也不觉得有什么好高兴

同样,其他人的攻击度就是99,再给他再多的+防,他会更高兴吗?

"一个函数曲线,控制它的增减对于一个数学高手来说相对容易。"<------数学高手控制曲线是否有意义,取决于函数曲线所包含的数学模型是否有意义,单从曲线出发讨论是没有太大意义。

26

主题

537

帖子

537

积分

高级会员

Rank: 4

积分
537
发表于 2007-4-18 08:57:00 | 显示全部楼层

Re: Re: Re: Re: Re:为什么伤害躲闪之类的数值计算要那么复

攻击和防御双方都是要算损益的。


问题在于这个前提不是必然,没有人规定一个游戏中攻击和防御双方必须都要算损益。
如果采用“伤害=攻击-防御”这种极端公式,显然设计时只会考虑攻击与防御之间的平衡,如果你先将损益平滑增长作为一个必备出发点,当然不会用这样的计算公式。

15

主题

526

帖子

526

积分

高级会员

Rank: 4

积分
526
发表于 2007-4-18 22:30:00 | 显示全部楼层

Re:为什么伤害躲闪之类的数值计算要那么复杂??

别拿莫名其妙的比方来打马虎眼

再问一词:攻击力1的小号和攻击力99的中号打一个防御力100的大号,伤害一样,是不是很荒唐?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-18 11:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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