|
发表于 2007-5-21 20:24:00
|
显示全部楼层
Re: 我写的一点东西,关于数值的
看完了楼主的前两篇文章
“公式篇”中的公式总结的不错,包含了游戏设计中的大部分常用公式,对新人来说很有帮助。
不过第二篇的内容很多都是YY了,可读性不强,个人感觉~hehe。
其实,我个人认为,对数值设计来说,关键是要明确好需求,就是要想清楚,自己要设计的公式最终要达到什么样的效果,这点是最重要,也是最难的。相对来说,在明确需求的前提下,找到一个合适公式反而是件容易的事。
拿wow的中armor减少伤害的公式举例:
Damage-Reduction=armor/(armor+85*level+400)
在设计这个公式时,要明确的需求是:
1.Damage-Reduction的值与哪些参数有关(armor,level)
2.Damage-Reduction与参数呈什么样的关系(正相关、负相关、边界效用递减等等)
3.Damage-Reduction,armor,level各自的取值的范围是多少
4.……
这样的需求是实际和游戏内容相关的,不同的游戏会有不同的需求条件。
在确定好这些需求后,等于给了我们数学上的约束条件,接下来要做的就是寻求一个满足约束条件的公式。我们可以套用经典游戏中的公式,只要它们符合我们的约束条件,那么直接拿来改改参数就能用了。
所以,想清楚的你的需求,才是关键和难点,需求决定数值~
***********************************************************************
另外,关于楼主“公式篇”中提到的正态分布,我再补充一下。
其实,楼主写的内容并不是正态分布的应用。
楼主文中的Random[],是平均概率分布;而5d4之类,只是5个独立同分布(都是平均概率分布)的随机变量的和。
之所以会呈现出类似正态分布的曲线,是因为存在“中心极限定理”--当独立随机变量个数增加时,其和的分布趋于正态分布。
举几个例子来说明
假设某盗贼的闪躲率为p=20%,我们希望了解计算的,是在受到了n次攻击后,躲闪的次数大概是一个什么样的概率分布。
于是,我们设随机变量X,表示受到n次攻击后,闪避了x次。
用P{X=k},表示收到n次攻击后,闪避了k次的概率。
这是一个简单的二项分布,根据二项分布的公式P{X=k}=C(k,n)*0.2^k*(1-0.2)^(n-k)
那么,如果我们要计算受了1000次攻击后,闪避了100~200次的概率,即P{100=<X<=200},那么,如果按二项分布的公式来算,
则需要计算P{X=100}+P{X=101}+P{X=102}+……+P{X=200}
显然,这样的计算是非常的麻烦的。
于是,我们可以用正态分布来解决。
根据中心极限定理,当n充分大时,(X-n*p)/(((n*p*(1-p))^0.5)近似服从标准正态分布的,p为概率,这里p=20%。
那么P{100=<X<=200}=Φ(0)-Φ(-7.9)
直接通过查标准正态分布表,或用excel的函数=NORMDIST(0,0,1,TRUE)-NORMDIST(-7.9,0,1,TRUE)计算得到了P{100=<X<=200}=0.5,即受了1000次攻击后,闪避了100~200次的概率为50%。
再比如
我们想要,计算nd4的值的概率,即,用4面骰投n次,投出的n个数字总和的取值概率分布
我们设随机变量X1表示第一次投出的点数;X2表示第二次投出的点数……
随机变量X表示投n次后的点数总和。
显然,X=X1+X2+……+Xn,。这是n个独立同分布的随机变量和。
可以计算得到,Xn的数学期望E(Xn)=2.5=e,方差D(Xn)=1.25=d^2,d=1.118
同样,根据中心极限定理,(X-n*e)/[(n^0.5)*d],近似服从标准正态分布的。
以nd4为例,n=1000时,要求P{X<2600},即投了1000,投的数字总和小于2600的概率,则
P{X<2600}约=Φ{(2600-1000*e)/(((1000)^0.5)*d)}=0.9976。
这样,很方便的计算出了“投的数字总和小于2600的概率”为99.76%
(公式写的有乱,见谅~) |
|