游戏开发论坛

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

[讨论] 思考命中率和致命一击率时得出一些疑问

[复制链接]

11

主题

903

帖子

914

积分

高级会员

Rank: 4

积分
914
发表于 2007-3-16 18:30:00 | 显示全部楼层

Re: Re:思考命中率和致命一击率时得出一些疑问

jamesge: Re:思考命中率和致命一击率时得出一些疑问

2.若认为爆击率是“击中后爆击的几率”,那么在计算普通攻击时要把此几率去除。所以你的第二个公式有点小问...



你误解了哦  写一下代码就明白了,无论如何爆击的条件判定都应该是在命中的条件判定之下的,在计算攻击输出时,则暴击这部分须不计入普通的命中。

14

主题

145

帖子

191

积分

注册会员

Rank: 2

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

Re:思考命中率和致命一击率时得出一些疑问

呵呵~~那我们用实例来证明吧

比如游戏中有一个角色
命中只有20%,爆击有80%,
且是先判定命中,再判定爆击的
那么,你认为爆击的几率是多少呢?
按照你的说法就是
(1-20%)*80%=64%
也就是说,爆击会比命中更容易发生咯?
这就显然是错误的吧

真正的爆击是多少呢?
20%*80%=16%
这才是对的吧

11

主题

903

帖子

914

积分

高级会员

Rank: 4

积分
914
发表于 2007-3-16 18:48:00 | 显示全部楼层

Re: Re:思考命中率和致命一击率时得出一些疑问

jamesge: Re:思考命中率和致命一击率时得出一些疑问

呵呵~~那我们用实例来证明吧

比如游戏中有一个角色
命中只有20%,爆击有80%,
且是先判定命中,再判定爆击...


老大,写些代码阿……我上面不是写了一段了嘛,你看我是这么写的么……
爆击率是从攻击算还是从命中算个人认为并非太要紧,设计思想不同罢了,若要表达“打10下miss一下爆击一下”这种概念,哪种写法都可以表达出,只是再平衡数值罢了。楼主提出的是一个数值问题而并非系统问题。

11

主题

903

帖子

914

积分

高级会员

Rank: 4

积分
914
发表于 2007-3-16 18:58:00 | 显示全部楼层

Re: Re:思考命中率和致命一击率时得出一些疑问

jamesge: Re:思考命中率和致命一击率时得出一些疑问

"另外从另一方面来分析,若爆击从属于命中,会导致爆击这条属性的效果弱于命中这条属性的效果。当然这...

你概率学过么……按你列的公式,命中和爆击并非无关事件而是相关事件,所以有A*B这种项,若A增加10%则伤害提升10%,而B增加10%伤害提升却小于10%只有A*10%,这就是我不倾向这种做法的原因(虽然此问题可以接受且可以修正)。
另外这与你计算伤害并未剔除重复计算的命中*爆击这部分完全无关。

14

主题

145

帖子

191

积分

注册会员

Rank: 2

积分
191
发表于 2007-3-16 20:57:00 | 显示全部楼层

Re: Re: Re:思考命中率和致命一击率时得出一些疑问

xianrena: Re: Re:思考命中率和致命一击率时得出一些疑问



老大,写些代码阿……我上面不是写了一段了嘛,你看我是这么写的么……
爆击率是从攻击算还是从命中算...



你是指你写的这段伪代码吧?
OK,那我们就针对你这段伪代码来说.
很显然,你并没有看懂楼主的意思,从你的伪代码来看,命中和爆击不是前后发生,而是同时发生的,为什么?因为你随机的这个R!因为随机参数只有这个R,所以你等于是把命中和爆击这两个原本不相干的事件放在了一起进行判定
当然,从程序的实现角度上来说,这样做是无所谓的,因为在游戏过程中,并没人在乎命中和爆击是不是同时发生的.但是,从概率学的角度来说,这样做就明显的违背了楼主所假想的逻辑,而在这种伪逻辑下所计算出来的结果也就不是楼主所期待的一种正确结果了.

那么按照楼主的意思,正确的伪代码应该是怎样的呢?

A情况--先判定爆击.再判定命中
假设参数的过程我就按照你的代码假设的那样
RANDOM R(0,1)
RANDOM T(0,1)
IF R<b
THEN 伤害=M
ELSE IF T<a
  THEN 伤害=1
  ELSE 伤害=0
   
B情况--先判定命中,再判定爆击
RANDOM R(0,1)
RANDOM T(0,1)
IF R<a
  IF T<b
  THEN 伤害=m
THEN 伤害=1
ELSE 伤害=0

那么在这样的伪代码下,你的运算公式中还能出现(a-b)的项吗?
很显然,不能!因为,a和b并不是发生在同一个时间点的事件概率,它们呈现出的是一种顺序关系,这样一来,相减就没有任何可以讲得通的理由了.

14

主题

145

帖子

191

积分

注册会员

Rank: 2

积分
191
发表于 2007-3-16 21:03:00 | 显示全部楼层

Re:思考命中率和致命一击率时得出一些疑问

"事实上 A B 之间的关系并不是简单的并列关系

可以假设以下情况

a.
    若命中和致命分为两步单独的计算,而且致命一击必中。作为致命一击率 B 产生的同时,视为一次命中,这时真正的命中率其实是 B 与 A 的并集M,可以确定致命一击率为 B,但未算爆击的命中率是 M 与 A 的补集
b.
    若只有命中之后才计算致命。则得到,B 是 A 的子集,真正的致命一击是包含于 A 中的 B,而未算爆击的命中率为 A 与 B 的差集。"

我学过概率学,而且相信学得不会很差.
不过,请xianrena先看清楼主所提出的假设前提!
我并不是说你的代码本身有问题,如果放到游戏中,要我来设计,我也会用你写的这种伪代码形式,因为容易计算,也容易理解.但楼主所假设的前提,是将命中和重击当成一个前后关系逻辑处理的,而并不是一个并列的逻辑,故而前事件的发生概率也就必然会对后一事件产生影响了.

前后两相关事件处理概率时,该用减还是用乘?相信你也学过概率学,这就不用我多说了吧.

49

主题

1388

帖子

1432

积分

金牌会员

Rank: 6Rank: 6

积分
1432
发表于 2007-3-16 22:01:00 | 显示全部楼层

Re:思考命中率和致命一击率时得出一些疑问

按照楼主要的

第一个情况 公式应该可以写成

E_a=a*a_attack*100
100-E_a=b*100*b_attack

第二个情况 为
a*b(a_attack+b_attack)+a(1-b)*a_attack=100

E_a  A的数学期望
a_attack  A的攻击值   a  A的概率
b_attack  B的攻击值   b  B的概率

不过、、、、、算出这些有什么用呢? 奇怪ing

23

主题

3388

帖子

6440

积分

论坛元老

Rank: 8Rank: 8

积分
6440
发表于 2007-3-16 22:34:00 | 显示全部楼层

Re:思考命中率和致命一击率时得出一些疑问

我承认没看明白大家在争论什么...

我觉得做数值调整的时候只要根据当前爆击率和命中率(以及所采用的模型)计算出平均伤害\最大伤害等值就可以了.

我纳闷的是LZ为什么一定要用爆击产生的"额外"伤害来弥补未命中所造成的"损失"呢?未命中真的是损失么?

我的认识是:爆击和命中都是按一定概率随机出现的,这些东西就象是扔筛子------能不断的给用户带来类似于赌博的压抑和释放,以及由此产生的快感.

设定命中率和爆击率以及爆击伤害加成,应该更多的从用户感受方面出发,而不是拘泥于"使爆击产生的伤害弥补未命中的损失"------因为这看起来象是为了"做数值"而做数值.

15

主题

727

帖子

736

积分

高级会员

Rank: 4

积分
736
发表于 2007-3-16 23:27:00 | 显示全部楼层

Re: Re:思考命中率和致命一击率时得出一些疑问

卡特铁角: Re:思考命中率和致命一击率时得出一些疑问

我承认没看明白大家在争论什么...

我觉得做数值调整的时候只要根据当前爆击率和命中率(以及所采用的模型...

当你需要作出差异化时,那么可以理解为弥补"损失".
例如:
你做了两个职业,希望他们之间有明显的差异,能够让玩家觉得这两个职业的玩法差别很大;
但同时,你又因为多种原因,希望这两个职业的伤害是较长时间内的制造伤害能力等量的.
那么你就可以用暴击来调整,一个职业基础攻击力高,命中高;一个职业基础攻击力低,命中也低,但是暴击高.
那么问题就来了,暴击其实还分暴击命中率与暴击伤害.也就是这张帖子在讨论的主题.没细看JAMESGE的说法是对的似乎.

14

主题

145

帖子

191

积分

注册会员

Rank: 2

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

Re:思考命中率和致命一击率时得出一些疑问

哎.............

楼主的这句话已经把它研究这个问题的意义说明白了:

"实际上算法不同,最终得到的DPS是不同的。"

爆击和命中都能影响到平均DPS,而DPS是游戏平衡的一个重要数据

如果你说:一般游戏中,爆击和命中对DPS的影响不大............那我也就没话说了

的确是有影响不大的游戏,但如果放到影响大的游戏中怎么办?

不做考虑?还是装作没看到,没注意?

楼主是在思考解决这个问题的办法,而不是在寻找另一个问题来替代这个问题............
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-17 11:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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