Written by Mervin 公式篇 数值设定的步骤很多,本文只讲公式类型、特点及应用;牵涉到数值设定中常遇到的几种类型的设定:几率、经验、属性、技能;本文由简入烦,主体以公式的类型、特色来划分章节,穿插几种类型的设定讲解。 OK,Let’s Begin。 加减乘除 线型为线性,变化稳定,比较容易找到规律,预期后面的发展; 举几个例子: 每加一点力量,近战物理攻击加1;每射击一次,子弹数减少1; 每使用一次冰箭术,熟练度加1,达到2000时,升级为2级; 宠物近战物理伤害=宠物物理攻击-目标物理防御;宠物近战物理伤害=宠物物理攻击*目标物理吸收比;近战物理技能伤害=((武器伤害+技能附加)*技能增幅)*目标物理吸收; 血击(技能):在HP<50%时,将自己所有HP化为伤害,攻击目标,使用后生命值为1;伤害=(基本伤害+当前HP)*(1+技能等级调整值+10*当前HP/大HP); 总结: 加减的运算为直观,一眼就可以发现规律,甚至潜意识;乘除的运算容易简单、直接的对数据造成跳跃性,而常常是有意识、有规律的跳动;混合运用时,可以实现很多有特色的功能; 幂函数 幂函数f(x)=x^i;对比函数g(x)=x; 当0g(x);[1,∞]区间内,f(x) 当i>1时,[0,1]区间内,f(x) 当i<0时,[0,1]区间内,f(x)逼近无穷大;[1,∞]区间内,f(x)逼近无穷小; 示例曲线图如下:
7 小时前 上传 举例应用: 本级升级所需经验=上级所需经验+本级等级数*10000; 休闲小游戏COMBO得分Ver2.0:Combo1=宝石数*c1,Combo2=宝石数*c2,Combo3=宝石数*(c1+c2),…,Combo(i)=宝石数*(c(i-2)+c(i-1));其中c1=2,c2=3; 总结: 对于一些不方便、不必要用公式来表达的数值,采用数组直接存取方便快捷;(你也可以说这是索引表) 对等差、等比这种基础的数列进行一些细节的改变,往往可以产生微妙的变化。例2就是一个递归的例子,曲线走势类似f(x)=x^2;(当然,你也可以说这本来就是递归) 数组、数列其本身并不是什么公式,更多的是一个看问题的角度; 正态分布 正态分布的应用非常深、广,笔者实在是能力有限,只探讨下在几率问题上的正态分布; Random[]:在[0,1]上随机取数; Random[Integer,{1,100}]:在[1,100]上随机取整数; 1d8=Random[Integer,{1,8}]:投一次8面骰; 2d4=Random[Integer,{1,4}]+ Random[Integer,{1,4}]:投2次4面骰; … xdy= Random[Integer,{1,y}]+ Random[Integer,{1,y}]+…:投x次y面骰,设结果为s,结果s的几率为p′,那么,设p= p′*y^x,则为受x,y,s影响的3元函数,p(x,y,s): 1/(y^x)为p′的小单位; s∈[x,xy],s为整数; x=1时,分布曲线为平行线y=1/y;x=2时,分布曲线为折线,示例图如下(实际为散点图):横轴为s,纵轴为p;
7 小时前 上传 x>2时,s的出现几率p(s): ( B[n,m]为Binomial[n,m]的省略,为组合;n≥m) p(x,y,s)={B[x,1]*p(x-1,y-1,s-y)+B[x,2]*p(x-2,y-1,s-2y)+…+B[x,3]*p(x-i,y-1,s-i*y)}+{B[x,1]*p(x-1,y-2,s-y)+B[x,2]*p(x-2,y-2,s-2*y)+…+ B[x,i]*p(x-i,y-2,s-i*y)}+…+ B[x,i]*p(x-i,y-j,s-i*y)+… (i,j,x,y,s∈integer, 1≤i 上式中,B[x,i]*p(x-i,y-j,s-i*y)有解的条件是: x≤i*(y-j)+x-i≤s-i*y 曲线总为对称图形,s=(xy+x)/2时的p(x,y,s)值大,s为整数,唯一大,为小数,上下取整,两个大值; 必须注意的是,x,y是一常量,i,j是变量;请勿混淆; 给出示意图一张(5d4) ,横轴为s,纵轴为p: 7 小时前 上传 p(a,b,a)=1,p(a,b,ab)=1;∑p′=1; 另外一种计算p的方式较为容易理解,我称之为冒泡法;见示意图,讲述的是p(5,4,7)的求解过程; 7 小时前 上传 7 小时前 上传 |
级别 |