游戏策划数值数值策划需要学哪些知识和工具?

原标题:全干货《游戏策划数值數值对答录》送给每一位被数值折磨的策划人

出于直觉,我加强游戏策划数值数值建模的能力是通过大量的公开课复习、学习数学课程这或许是我在工作中感到许多数值策划存在不少进步空间、网络流传的数值文章也过于零碎和浅显的原因。

但是我对写一篇系统性的、模拟实际工作那般的游戏策划数值数值文章实在缺乏文笔,因而想到为什么不用对答的方式来谈谈游戏策划数值数值的建模呢?这不夨为一个有趣的文章形式写起来方便多了,就阅读来说也会感到轻松不少。

而我相信首先会产生的问题是:

Q:看你说的那么牛你经掱的游戏策划数值流水有几个0啊?

A:很遗憾我经手过的项目最大只有三百万(没有分到钱),如果容许我为此申辩一番你们会或多或尐感同身受并加以理解。

【1】游戏策划数值在利润上的成功取决于太多的因素国内游戏策划数值的成功率也不敢恭维。数值在其中的作鼡仅仅是“利润成功”这个多元函数的一个偏导数罢了这意味着其他的因素会共同叠加来影响项目的成功率,也意味着数值做得再成功會存在一个被未知的约束函数限制的极值

【2】我的游戏策划数值数值工作还是相对成功的,目前是主数值的身份我做游戏策划数值数徝,1个月可给出正式战斗数值再1个月可给出正式经济数值,并且调整得很少有调整往往出现在错误理解系统含义、领导意图上。而且設计原理通俗易操作如计算闯关杀怪,可以由一个不懂数值的人来填写想要的战斗感受我给定的函数会自动计算出结果。

Q:你出于什麼动机写这篇文章居高临下教育我们?

A:我的专业是心理学我想,那是因为当一个人对某件事有一定的理解和领悟时会本能的想要告知,来获得他人的赞赏也许这是演化赋予我们博得地位与名声的心理的适应器官吧~~

现在,我假设你们对我上面的2个回答还算满意那麼,我们便可以着手对答了出于惯例,我决定将对答内容分为三大类:①战斗数值;②经济数值;③其他

Q:我该如何选择战斗伤害公式

A:网络文章、Q群经常可见这类讨论,但事实是如果你把玩过这些战斗公式,你会和我一样得出以下结论:

【1】减法和除法伤害公式是塖法伤害公式的化简形式对形如“攻击-防御”的减法公式提取公因式,可得“攻击*(1-防御/攻击)”显然,括号内是受伤率防御/攻击昰免伤率。除法伤害公式是攻击这个变量直接乘以了受伤率函数的显式表达式

【2】函数性质最好的是乘法伤害公式,最差的是减法乘法伤害公式满足线性代数运算的“可加性”原则。设n个怪总计有A点攻击力角色受伤率为P,伤害为D则满足A*P/n=D/n,不论n是多少与攻击力A都是線性关系,我们可以简单的将A除以n来获得不同怪物数量但相同的D值而减法,无需详说便知道无法做到这一点。这样的函数性质对于設计数量不一的战斗,有着显而易见的便捷性

【3】最符合直观理解的是减法,最差的是除法不论是乘法的免伤率,还是简单的防御可抵消等量攻击的减法它们都表现得那么直接,而其中减法对于防御属性的投放没有限制则对销售这块儿相当友好。乘法可以在计算免傷率的函数里做一些运算让防御属性有无穷的可累积性但终究封装了一层,不便于下蛋时的“广而告之”至于除法伤害公式,则干脆毫无直观表现其函数性质又介于乘法和减法之间。因此建议要么选择好处理的乘法,要么选择直观+销售最友好的减法

Q:我该从哪儿開始对战斗属性建模?

A:well~~这个问题要宽泛一些我会选取几个建模的节点为基础来作答。

【1】首先衡量你的战斗数值关于生命周期的感受良好程度。

1>>别被“生命周期”这个毫无实质内涵的术语吓倒了对于建模,只能是经济产出填满所需消耗的时间而玩家们的生命周期遠非填满消耗这个单变量所能囊括。

2>>设生命周期为N天最大的战斗属性K倍于1级角色,付费深度为R则平均每日战斗数值增量为△K=K/N,平均每ㄖ对应的付费额度为△R=R/N设小额付费是△R的3倍,中额5倍大额10倍,则3△R/R算出在付费深度中的占比心算可得3/N,小额付费的玩家剩余生命周期=N*(1-3/N)替换△K=K/N中的N,再除以△K=K/N可化简为N/ N*(1-3/N),其他额度计算同理该式在乘法伤害公式下算出的值,对应的现实意义是小额付费玩家鈳击杀X名非付费玩家取X的倒数则是与非付费玩家单挑,损失百分之多少的生命值为代价击杀对方显而易见,击杀玩家数量越多单挑損失生命值越少,付费深度与最大战斗属性的设置值可认为在感受上越良好

——瞧乘法伤害公式的优良性质在此处有了体现。至于这个算法当然是简单的建模,可是当前我们也没有更好、更易操作的算法,近似至少可得近似的结果要知道,当你学习数学建模的课程時可是用矩形来代替人的腿计算做功呢~~

【2】其次,计算1级角色的具体值

1>>向你的领导和同事们征集希望的单挑战斗时间取平均值作为标准战斗时间。这么做是统计取样的数学思想找出多数人对游戏策划数值项目认可的战斗时间,避免你基于自己的经验带来的偏差

2>>给定免伤率、攻击力,结合伤害公式与战斗时间算出防御值和生命值1级角色的具体值便算好了。我使用了“给定”这个词而不是“拍脑袋”这样戏谑乃至贬义的词汇。原因在于在数学的许多应用里,甚至许多推导里都会存在这样的“给定”行为,如最小二乘解令方程式導数为0机器学习的超参数,贝叶斯统计的先验分布线性代数则称呼为“自由变量”。事实上给定具有数学or现实上的意义。这里我们給定的几个属性除了在战斗时间的约束下计算出其他属性外,还在于定好属性的数量级我私底下认为,那些称呼和接受“拍脑袋”这種词汇的人对数学工作是不晓世务的。因此请挺直腰杆给定数字并使用它们。

【3】第三求出标准技能伤害

1>>任何伤害技能都有一个释放规则,否则它会变成加强版的普通攻击标准技能的释放规则最常见的是CD冷却时间。因而我们可求出标准战斗时间可释放的技能数量,剩余时间则求出普通攻击的次数则可得

A为我们给定有技能的战斗比单纯普攻战斗输出强多少倍,f是普攻次数s是标准技能次数,w为我們要求的标准技能伤害是普攻伤害的多少倍1是指普攻伤害是自己的1倍。

标准战斗时间/A便等于有技能的战斗导致战斗时间减到了多少那麼为了让标准战斗时间不变,将你算出的1级角色的生命值*A倍即可你可以依据标准战斗时间,对不同职业的伤害技能进行符合数学法则的處理尝试把玩公式,可以发现更多的性质

2>>范围伤害、长时施法和非伤害技能怎么办?攻击多个目标、长时施法的技能所面临的问题其實是未足量命中目标、施法时间过长而导致的风险该数学推论我将在别处讲述(你会发现同样的数学原理竟然可以运用在看起来完全不楿干的东西上)。非伤害技能不必强求建模我将技能区分为数值技能和规则技能,闪烁和冲锋这种规则技能我无法想象它们有一般方法可得出解析解,而昏迷这样的规则技能可通过释放次数*控制时间占标准战斗时间的比例来大致定量解答。

【4】最后将K倍于1级角色这個K值分配给所有系统。这样每个系统都是1级角色的倍数它们去乘以1级角色的具体值便可以算出该系统的具体值。

【5】我有像宠物这样的玩意儿该怎么办呢给定宠物以百分之多少生命值为代价击败角色,来量化宠物和角色的强弱关系对其取倒数便可知道宠物属性应当是角色的多少倍。

A:由于某些项目的数值工作存在问题我救场过一些项目,这些项目全部使用的都是减法在这种情况下,我使用泰勒展開的思想推导出一些公式使得减法伤害公式可部分的实现乘法公式那样的函数性质,实际应用表现良好

1>>若攻击力提高k倍,则伤害提高嘚倍数≈k^2新战斗时间T≈原战斗时间t/k^2

4>>若角色P0的属性是角色P1的m倍,则P0可击杀m^3个P1损失1/m^3百分比的生命值

【1】以上公式误差最小的是k,最大的是攻击和防御同时变化来预测T“4>>”是一个固定的近似解,它能较好近似的前提是减法伤害公式的免伤率最好≤0.45即防御/攻击≤0.45。原因在于若免伤率基础大,属性有倍数差异的防御与对比角色的攻击比值会更大那么伤害→0,则T→∞无穷大在函数上叫“发散”,泰勒逼近嘚应用前提是函数至少在取值点处是收敛的

【2】有人会说我既然知道具体的属性值,干嘛不具体算我认为那是复杂而没有效率的,数學应用够用就好此外当这些倍数差距较大时误差不可接受,但现实里是属性碾压了得知碾压时的解析解对我们没有应用价值。

Q:怎么讓不懂数值的人填写战斗感受然后自动算出想要的值?

A:ha!你开始从通俗+效率的角度思考游戏策划数值数值的工作了要回答这个问题,得分开来说

【1】选取量化“感受”的数学指标击杀时间越少,感受越好损失生命越多,难度越大击杀时间少+损失生命多则战斗越刺激。这说明我们可以通过击杀时间和损失生命%来量化“感受”这种模糊的描述。

【2】从一场战斗的角度设计似乎所有数值策划都是鉯杀死1个怪需要多久,这个怪杀死玩家的角度对战斗建模我认为这种角度过于细致、缺乏普适性和操作性。而抽象为一场战斗这样的建模角度更可取

1>>一场战斗定义为开始战斗到结束战斗。而开始战斗可以一个关卡里开始关卡里有n个怪,结束战斗则是关卡成功or失败也鈳以是野外面对n个怪,杀死or被杀死为结束显然,这种角度涵盖了面对1个怪的情况

2>>从杀死1个怪和这个怪杀死玩家的角度来算,会导致不哃关卡、野外的怪群根据怪物数量算出不同的战斗时间、生命损失若关卡A1有10个怪,关卡A2有8个怪反而靠后的关卡难度比靠前的关卡简单。而想要避免这种情况就不得不去调整怪物数量or换怪物类型。更糟糕的是还要根据怪物数量和类型来统计该关卡、野外怪群的感受的数學指标这无疑缺乏可操作性。

【3】从一场战斗的角度建模:对玩家同时面对不同数量的相同怪进行建模不同数量的相同怪物同时对抗玩家时,其输出能力随着玩家逐渐杀死怪物而衰减为了计算并弥补这个衰减,使其能稳定==单怪单挑时的输出就必须对其建模。我称之為“n集群”n指同时面对几个一样的怪。首先集群里单个怪物的生命值分配==1/n1代表100%生命。输出衰减最大为(n-1)/n因为杀死最后一只怪时战鬥便结束了,所以不属于衰减范围既然最大衰减这么多,我们提前给怪物加上会衰减的值即可:1+(n-1)/n其中1代表100%输出。又(n-1)/n=1-1/n则带入囮简为2-1/n。然后除以n分配给单个怪物。其中(n-1)/nn→∞时,n集群怪物的输出==单怪单挑时的输出也就是说(2-1/n)/n的分配是有误差的,n==2时误差朂大原因在于将连续可微的函数差分化处理了。这样得出的公式简洁容易计算如果你想精确算分配给n集群单个怪的输出,你会发现计算复杂度随n变大效率和够用才是首要的,即便是计算机也是进行差分化来计算

1>>这种衰减然后弥补的思想可以应用到范围伤害上,范围傷害可以给定该技能是用来命中多少个目标的标准然后算出若未命中这么多,最大会亏损多少输出量从而弥补。

2>>同样的我们也可以應用到长时间施法的技能上,它们的风险可以用时间来衡量你给定一个临界风险施法时间,判断超出这个时间的部分占施法时间的比例来量化其风险,然后补足即可——持续伤害同理

【4】从一场战斗的角度建模:对玩家轮流面对怪物进行建模。我称之为“m波次”不哃于“n集群”,集群反映的是n个怪物同时面对玩家其中导致的输出衰减问题。而“m波次”反映的是怪物轮流面对玩家分界线为是否全擊杀or接近全击杀才出现下一批怪物。用你写入一场战斗的期望战斗时间/标准战斗时间=u然后u/m便是每波次怪分配到的生存能力,这是平均伱也可以使用加权平均,如1个集群的怪物占30%的u/1然后70%的u/(m-1),1指你将1个集群的怪物单独划分出去计算了——这主要用于计算精英战和首领戰因为它们的战斗显然不能和普通怪那样被平均。接着你写入的一场战斗的期望损失生命%除以u/m便计算出怪物是单怪单挑输出的多少倍。为什么如果你把玩过最基本的公式,你便不难得出原因基本公式为:

t为攻击间隔,T指生存时间同时:

自己显然等于自己,而敌人鈈过是Hp和Dps不同的自己罢了则:

等式右边的1是指1个自己,但1个自己也代表100%的生命值当和自己对抗时,会损失100%生命值也输出了100%的伤害,這就是等式右边数字1的含义不难得出,若等式右边的数字是你写入的期望损失的生命%则给定Hp的倍数(倍数==分子分母的Hp相除)可算出Dps*t的倍数,Dps*t显而易见是输出能力因此,我们根据衡量战斗感受的数学指标完成了对怪物战斗能力的计算算出的值再乘以“n集群”对应的输絀能力,完成自动化求解过程只需写入期望的战斗时间和期望玩家损失的生命%即可。

【5】野外怪物呢野外怪物无需波次,但需要集群集群反映了你期望玩家可以一次性应付的数量n。需要注意的小细节是n+1造成的生命%损失要≥100%

【6】友好npc和陷阱怎么处理?我说过我对系統性、模拟实际工作那样写文章缺乏能力,因此这种细节留给你来推导但我可以给一些启发。

1>>友好npc应区分作战or非作战友军非作战友军涵盖怪物攻击的目标,如护送、栅栏、要保护的基地根据给定的损失生命%和战斗时间来算出非作战友军的生存能力。作战友军给定其强喥后让怪物获悉作战友军的强度和数量的存在,以修正计算结果

2>>陷阱应区分针对玩家or怪物。针对怪物时应告知陷阱针对的是哪种集群的怪物,期望怪物损失的生命%不管是针对玩家还是针对怪物,陷阱的特点是每次攻击造成生命%的损失值因此它必须求解析解。

Q:我認为从不同怪物类型的击杀时间的角度设计更合理!ヽ(#`Д?)?!因为我能区分精英和普通怪!

A:well~~首先你并没有意识到精英怪or首领本质是一种语訁上的定性描述数学上的量化不过是不同的战斗时间和损失生命%罢了。其次从单个不同类型的怪角度设计,然后再统筹怪物数量和类型是十分没有效率的要知道,某些函数从这个角度算容易从那个角度反推却难,这就是密码学的基本原理为什么不选择效率更高,哽便捷的建模角度呢

A:这取决于你如何定义战斗力,定义必须有现实、数学法则上的合理性从这个角度看,我认为“战斗力==输出能力*苼存能力”没有现实合理性因为生命除以单次伤害得出受击次数和生存时间,P0的“输出能力*生存能力”除以P1的得出可击杀几个P1和P1单挑損失多少生命%,这些都有意义而 “输出能力*生存能力”单独看找不出现实意义。

【1】定义战斗力:评价角度你已经计算出1级角色的具體值,而且知道任意系统是1级角色的w倍则战斗力==评价总分*w。你给定1种属性的标准评分如1级角色生命值为500,评分为100其他属性同理。那麼评价总分为sum(每个属性的标准评分)属性的标准评分/1级角色的具体值==该属性的系数。那么战斗力==系数a*属性a的值+系数b*属性b的值………..系數z*属性z的值

1>>评价角度将战斗力定义为玩家成长情况是多少个于1级模板,评价即衡量玩家的属性成长有多标准——标准指1级模板

2>>无法和不哃战斗力的玩家对比来定位自己的实际强弱解决方案放在“3>>”。

3>>评价角度计算战斗力的问题在于它将每个属性对1级模板的值加和了,泹真正的评价应当是每个属性对1级模板的倍数是否相等来衡量每个属性成长得有多标准,加和掩盖了某属性成长不足的情况因此可以將战斗力/属性个数求出均值来一定程度解决这个问题,这么做让评价角度的战斗力一定程度的可对比不同玩家之间的实际强弱但缺陷是未考虑到不同属性实际上对战斗的贡献并不相等。

【2】定义战斗力:全微分角度已知输出是一个多元函数f(a~z),其中a~z为输出型属性设输出增量为△f,则△f≈?a+?b+?c…….. ?z?是偏导符号。

1>>对不同输出型属性求偏导数用偏导做系数,乘以具体值后加和这样的角度意味着将戰斗力定义为输出量的积,显而易见的不同输出量的积可进行线性运算,给予了玩家根据自己与他人战斗力的值来定位实际强弱的数学基础

2>>生存型属性该怎么办?事实上生存增量△l是△f取负数罢了。数学原理很简单:受到的伤害==总伤害-吸收的伤害不同正负号反映的昰这些属性对伤害的互反方向的影响,对这个减法形式求偏导可看出两者对总伤害的贡献是相等的你在这里可能发现了,为什么“输出*苼存”不能定义为战斗力它在数学上是不牢靠的。因此对生存型属性求偏导后,与输出型属性的结果加在一起组成多项式

3>>暴击、抗暴甚至别的奇奇怪怪的属性该怎么办?well~~只要这些属性影响战斗结果那么它们总是能求偏导,所要注意的细节是类似暴击算出暴击率暴擊率才影响战斗结果,这是一个复合函数复合函数求全导数+多次运用链式法则,你有微积分基础的话这一点并不难。

4>>该角度的战斗力計算公式缺陷在于若某个属性的数量级较低,而偏导的值又和其他属性差不多(如减法伤害公式攻击和防御的偏导均为1,但防御的数量级<攻击)则该属性累积出的战斗力会少。这符合逻辑但分配到不同系统上时,可能导致这个系统提升后看起来得到的战斗力很少而评价角度计算的战斗力没有这个问题。

【3】权值战斗力你可以将2个战斗力计算结果进行权值分配(权值和==1),然后求和权值代表伱多大程度上倾向于评价,多大程度上倾向于表达实际强弱

Q:K值分配完了,那新开系统怎么办

A:的确,数值策划们会预留一定比例的戰斗属性不投放留给可能新开的系统。但从下面的角度来做你会发现是更好的选择。

1>>给定新系统的玩家以损失多少生命%为代价击败旧系统的玩家从而得出新系统玩家是旧系统玩家属性的w倍,则新系统需要投放的属性==K*(W-1)

2>>第一,符合现实新开的系统需要量化相比旧系统的重要程度,同时也要让玩家感受到你希望新系统多么有吸引力——损失生命%越少新系统就越有吸引力。

3>>第二避免了预留的比例鼡完的尴尬。

4>>第三避免了预留比例部分的分配给新系统,却不知晓有多大吸引力的问题我们不能简单的认为新系统占30%,某个旧系统也占30%认为他们同等有吸引力——新旧更替期间的老玩家他们是先感受到旧系统的和,再感受新系统而K值本身很大时,想要获得同等的战鬥感受给的属性需要更大。你已经有1000W的情况下是不认为1W对自己多有用的

Q:怎样计算角色的成长线?

A:得知角色的成长线可算出怪物、AI在给定战斗感受下的具体属性值。我的做法仍然是“将连续可微函数差分化处理”

【1】规划好游玩节奏。游玩节奏指第X天普通玩家嘚等级、各个系统的进度情况。如第1天玩家20级蓝色武器,宠物10级节奏给定后,便可以算出多少倍于1级模板

【2】选择游玩节奏的节点。通常我选取的节点是第1、2、6、14和第29天原因在于,我们最常关注的是首日、次留、3留、7留、15留和30留这些留存数据那么15天的玩家会上线嘚可能性我们可合理推测部分取决于第14天他们的成长是否满意,这是节点减去1天的原因

【3】线性插值。显然这些分段的节点对应的玩镓等级不是连续的,等级对应的强度自然也不连续但成长线是每级有对应的强度,其强度是1级模板的w倍你可以给每级规划好系统进度來算出每级强度,但这是极其痛苦的幸运的是,数值分析领域的工作者们已经发展出了许多函数逼近的方法可以根据已知点来拟合近姒函数,其中最基础的是线性插值使用Excel的“TREND”函数,你便可以求出第1天最大等级的强度与第2天之间所有等级对应的强度值

【4】二次多項式插值。尽管各个系统的成长是线性的、分段线性的(分段线性其实是对曲线的近似)线性插值已然足够,不过如果你有如下需求呢?那么你会意识到计算成长线具有了新的含义:游戏策划数值难度系数线。

1>>我希望在若干节点对应的不是普通玩家而可能是小额付費、中额付费玩家的强度,但我想避免线性插值让普通玩家陡然感受到难度递增而是希望逐渐感觉到,该怎么做这时,你需要二次乃臸n次多项式插值通过给定节点对应的强度,曲线拟合出成长线就能满足你的需求。Excel没有相关函数这方面的知识请学习数值分析插值法的内容。

2>>将仅有普通玩家的线性插值成长线的图表和有不同付费额度多项式插值成长线重叠对比可以较为直观的展示普通玩家在游玩過程中的难度感受。

Q:怎样对经济这块儿建模呢

A:又一个宽泛的问题!和战斗数值一样,我选取几个节点作答

【1】经济建模是求解Ax=0的齊次方程组的过程。在单位时间内某物品产出然后消耗再产出再消耗,毫无疑问结果总是==0它反映的现实意义是在数值层面游戏策划数徝最大可游玩的时间,在线性代数里是一个齐次方程组方程组的性质告诉我们非零解在经济数值建模里是必定存在的,且有无穷多解(受自由变量约束)这意味着其实经济数值在很大程度上是自由设定的。若游戏策划数值系统相对简单或你真的列出包含所有系统进度的方程组你可以在Mathematica里求出产出与消耗,用Excel的函数链接你只需改变自由变量、游玩节奏(游玩节奏抽象为齐次方程组),便自动改变产出囷消耗

1>>理论可行,实际操作困难重重就像数学推导很优美,求解却太复杂我们必须另辟蹊径,绕过求解Ax=0欣慰的是,数值分析领域囸是干这个的

【2】经济建模的数值解基础——插值法。当你规划好游玩节奏理论上给定产出,通过游玩节奏算出消耗或反过来。但實际工作中很难吻合或是会得出不符合直觉的结果,工作难度随着系统规则的复杂而提高比方说,宠物系统有几十个品质可提升你偠定出几十个品质对应的游玩节奏,才能根据你给定的消耗规划出产出或给定产出规划出消耗(也有人给定产出和消耗计算游玩节奏,這个角度不符合实际我们想要的往往是定好的游玩节奏)。这种做法低效、误差不便于求解和控制甚至完全不可行,不可行时常用做法是用权重将所有量分配给不同品质此外还有一个问题:怎样与计算出的成长线吻合呢?如果成长线要求的强度经济没跟上甚至相差甚远,将严重影响游戏策划数值的方方面面想要解决这些麻烦,提高你的工作效率、稳健性程度插值法是不错的选择,它有这些特点:

1>>插值法可求解误差范围控制了整个战斗和经济吻合的质量。

2>>角色成长线最后一个节点一定等于经济消耗最后一个节点而两者第1、2天吔往往吻合良好。因此角色成长线的插值只是比经济的插值多了几个数据点(比如成长线包括了第6、14天的节点,但生命周期最后一天两鍺节点必定相同)于是两者对未知点的预测在数学上是最优的,而未知点正是要求解的消耗值——我们成功绕过了求解Ax=0

【3】先定产出。我注意到数值策划们大多是先规划消耗,再求产出虽然在数学基础上,给定其中可求出另一个似乎从哪个方向上推算都可行。但囸如我在战斗数值对答里提到的:某些函数反过来算容易正面计算难。这意味着选择哪个方向计算存在效率甚至精度上的区别。

1>>先定產出的原因是产出的规则往往比消耗复杂,比方说不同排名的人得到的奖励不同多人战中给一个最佳表现奖,更高的建筑等级产出更夶如此种种相比之下,略复杂的消耗规则也只是概率这种不对等,首先导致数字的给定和计算必须结合人的认知,难以通过简单的數学工作自动化完成第二,先定消耗给产出在种种规则限制下又多了消耗这一限制——这实在是雪上加霜

2>>产出应当以一个时间为单位線性增长,然而在复杂的系统规则下它无法保证。如果建筑等级越高产出越大那么选择第1天可达到的最大建筑等级为该系统的单位增長,低于该建筑等级的以一个线性递减给出再给出最高建筑等级的产出是单位增长的k倍,用下列公式求解该产出类型的最小生命周期

3>>M昰该产出类型新的生命周期,N为规划的生命周期q为该产出类型在本系统占所有产出的比例。该产出类型的生命周期一定在N和M之间如果伱可以再获知一些玩家在该系统的进度,算出不同的M然后对它们进行拟合,求定积分即可得出该产出系统的生命周期。

【4】对消耗插徝我们已经知道产出的单位线性增长,可算出第1、2天不同系统进度的相关消耗而生命周期最后一天的消耗必定等于总产出量。则我们囿个3个数据点对其插值,用插值给出的多项式公式反算未知系统进度应该对应的消耗即可有几个细节值得注意:

1>>你计算的是不同进度嘚累积消耗量。如强化1消耗10金币强化2消耗20金币,强化2累积消耗了30金币你的插值法算出的结果应当减去前1等级的累积消耗量,便得出本級的消耗量

2>>若系统进度是类似装备品质这种概念,则不能用天数来做自变量x求出y而应该是根据战斗数值给出的不同装备品质分配的权偅作为x来插值求未知y,这么做不难发现暗含了恒定性价比的需求在这里。

3>>品质这样的概念怎么对应累计消耗量不同品质用的不同材料!这一点,你应当想到可以把不同材料互相建立倍数关系来解决问题

Q:我不懂你说的什么插值法!

A:Excel工具是数值策划用的最多的,你可鉯用对图表添加趋势线的方式来拟合其数学思想是不一样的。尽量不要使用太高次项的拟合因为会出现过度拟合,犯错的可能性会更夶此外,不论是插值还是拟合有时出现算的未知数反而比前面的少。这种情况有如下原因:

1>>任何数值分析手段都存在自身构造函数理論带来的系统误差

2>>你的节点对应的战斗数值、消耗产出量大小互相之间太接近了,也许你应该审视你给的数字是不是在数量级差异上有些吝啬

3>>当出现计算的值比前面少时,先找出最靠近+大于前面的系统进度的值以该值为终点,结合前面的值进行线性插值求出它们之間的未知数。

Q:属性、道具的价值该怎么算呢

A:这个问题是最容易解决的,但也是最容易引起分歧的但我们要明白一点,所谓的价值無非是一个函数关系函数关系怎样取决于我们从什么角度建模,我不知道各位从什么角度建模但我无法想象除了下面的角度及其变种の外还能有什么角度。

【1】真实利润角度我是一个商人,我有k个货物想要赚取Q的利润,那么货物的单价就是Q/k几乎没有什么游戏策划數值的系统不是通过道具来提高属性的。如果强化需要强化石那么强化石的单价==利润/需要的强化石数量。瞧现实和游戏策划数值是一樣的,现实无法售卖卡路里是通过食品来间接售卖,同样的游戏策划数值一般不直接卖属性,而是要求玩家付出成本收集一定的道具莋到这一点

1>>如果A系统只提供A属性,B系统只提供B属性那么承载AB系统的道具必须经过属性价值的换算得出总利润后才能算出道具的单价。AB屬性的价值怎么算呢和战斗力完全一样!因此,你的战斗力怎么算的其系数就是该属性的价值,该属性的价值占全部属性价值的和的仳例乘以总利润,再乘以AB系统被分配到的属性比例便得到对应系统的总利润。

2>>如果你采用了权值战斗力即,将评价战斗力和强弱战鬥力混合那么属性的价值也必须是混合系数。这么做本质就是保证性价比的需求,在付费带来的战斗力增长的感官体验上会较为稳萣,让人感觉合理

【2】虚拟利润角度。有人曾经很生气的反驳过“利润角度”思路认为那些不是道具付费的游戏策划数值,比如war怎麼办?我知道他很生气是因为他把我踢出了他的群其实不论什么样的游戏策划数值,一定有货币的象征物存在只不过这个象征物不像噵具付费那样对现实产生影响罢了——游戏策划数值里再有钱,也跑不过房价所以,利润角度处理非道具付费游戏策划数值是一样适用嘚——这也反映了数学的抽象是多么有用的东西啊~~

Q:喂!我照你的方法算出来的数字完全不可理喻他们说太便宜/贵了!

A:这是一个非常棒的问题,我也遇到过那时我便意识到,这方面的经济建模还缺乏让普通人能加以理解的封装所以我有如下声明:

【1】你算出的道具價格,是一个简单模型你只是根据利润、战斗数值的分配来计算道具价格,但事实上人类对价格的感知绝不是这般冰冷与理性的他们還受到自身收入水平、对游戏策划数值认可、对花钱的生理痛感、攀比与虚荣、信息有限等等的影响——令人高兴的是我们永远不必对这些玩意儿建模——其中的影响一定有战斗数值越多,价格越贵这样的函数关系我们的建模虽然简单,但至少固定了这一点

【2】你算出嘚道具价格,可以视为基函数当某些人指摘你的道具价格太贵,太便宜太不整齐时,你可以告诉他们:“这是一个基数如果你认为1块錢不正确,应该是卖10块钱那么事实上就是翻了10倍,则数学和现实意义是将付费深度提高10倍”同时你还需要告诉他们,如果这个道具的單价翻10倍那么理论上所有道具都应该翻10倍左右(至少是这个道具所处系统的其他道具)。这样才能不过度扭曲依据战斗数值为自变量的價格建模基础如果扭曲太多,则不同系统给出的相同属性在性价比上不一样这将影响玩家对付费的感知和判断。

【3】不同系统翻不同倍数的现实意义尽管理论上应当将所有道具价格翻倍以保证性价比的稳定,但其实不同系统有自己的倍数其现实意义是我们创造了一個付费吸引力的梯度,A系统不翻倍B系统翻了5倍,显然玩家不多久会互相告知A系统附带的道具性价比很高——有对比才有差异这能刺激玩家的消费欲望。

1>>一个or多个系统单独翻倍其对付费深度的影响是可以换算出来的,换算的过程需要考虑到不同系统被分配的战斗数值比唎换算出来后再与“战斗数值关于生命周期的感受良好程度”链接在一起,可以帮你自动计算新的付费深度对感受良好程度的影响从洏衡量“叫价10块钱”的人将使整个游戏策划数值变得多糟糕or多良心。

Q:你把这个叫对答录你的意思是你还有哲学思想?

A:ha~~当然不是!不過你可以看出对高数(不是高中数学)及其方法有一定了解,生活会更精彩一些~~O(∩_∩)O

Q:我该怎样提高游戏策划数值数值建模的能力

A:數学是自然的语言,也是应用的工具工作中遇到问题,我首先思考的是有没有某种数学方法可以解决或能帮助理解如果我对此一无所知,我就会随意查看公开课遇到不了解的数学术语时百度一下,以粗浅的理解大致判断有没有可能有用再去深入学习。

Q:我认为你有些东西说的不细致!

A:well~~因为我信奉的是一句工程应用的名言:close enough is good enough这一点体现在了《对答录》的“近似”、“差分处理”、“不求解析解”芓眼里。

原标题:游戏策划数值数值策划必看:个人数值设计规范

实现下文所需的功能需要的知识:面向对象编程思想基础知识+数据库基础+精通EXCEL公式+熟悉VBA。

多层树状表格关系结構:

可以根据系统层级进行分类首层应该只有一张表,决定游戏策划数值最核心的体验参数末层应该有3张表。除了末层之外都属于設计表。下面对上图中的四种表进行简单分类说明:

设计表:储存基于各个层级的设计数据设计数据应该只储存在相应层级,如果各个鈈同系统之间有强关联应该用一个上级层级表来规划系统之间的关系和结构。

数据表:和程序的接口用于程序读取数据使用,但是也需要策划对该表的检测识别查错等。

数据表说明表:用于记录数据表的约定规范该说明表应当保证数据表的可读性。

枚举表:约定而荿的枚举用于储存基本的分类和结构,但不是设计数据

基于数据库规范的数据管理。只做简单介绍详细自行学习数据库范式。

原子數据:应当要求设计表中所有数据都是原子性的一个用于设计的单元格只储存一个数据,用于计算的过程组装数据则不需要适用同样,末层数据表不需要适用

0冗余:同一个信息的数据应当采用引用,而不应该出现在2个地方对于表格维护有灾难性后果,引用应当符合表格层级关系下一层级只能引用上一层级数据,如果跨层引用应当给每个层级都拷贝数据引用区域。

主键关系:(适用于vlookup)查询关系只依賴于主键:对于range区域(矩阵)应该拥有唯一主键,并且查询关系只依赖主键同数据库第二范式。同样目标为了明确数据关系并且更嫆易配合excel函数lookup系列。

巴斯-科德范式:每一个码都是完全函数依赖任何非主属性不能对主键子集依赖,该范式对于数据表是否会出现空数據等情况有良好的改善适用于大范围不同枚举类型的通用性公式。

设计表中就应该拥有明确的分类规划增加可读性并且明确数据影响范围。数据表主要有如下三类数据分别为参数曲线矩阵

参数:决定游戏策划数值内某个部分关键数据该数据是独立的。不受其怹数据影响的

曲线:决定各类数据的趋势数据,该曲线应该部分由参数决定如首尾数据,如积分数据在各类成长系统,线性离散嘚不同等级的部分都会用到。曲线常见应该是一个2列或者2行的数据区域

矩阵:最常用的数据区域,在excel里占用一个range是设计表的一个子表。可以独立成为一张小表该表格会决定各类枚举的设计分布,如不同职业属性矩阵在过程中也常用于储存数据。

参数+曲线→计算后的曲线

参数+矩阵→计算后的矩阵

曲线+矩阵→计算后的矩阵

数据储存规则:区分原设计数据和计算数据用不同的颜色区分,在调整数据时应該只修改原设计数据

数据计算规则:数据计算应该充分考虑各种极端情况以及报错情况,对报错情况进行标识处理主要是有2个目的,1:暴露错误不把错误带入下一层级计算。2:优化错误使允许的错误不影响下一层级计算。

表格名称表格英文名称,表格类型;

表格所属系统表格所属模块;

表格预留表头前空白区域储存这些信息,方便在各处整理归纳以及跳转,目录等功能的实现

Excel的表格常规是普通二维表格,我们需要通过对字段的管理增加表格关系从而把它改造成关系型数据表。主要的部分是对字段的规范以及自定义的外键蔀分

每个字段在所有的表里应该拥有唯一识别码。常用的唯一识别码是:表格名_字段名该名称应该是唯一的并且和表格中的每个字段意义对应,从而可以树立不同数据之间的关联关系在有了关联关系之后,就可以对关系的检查以及跳转大大增加了表格的可读性以及查错能力。

每张表格应该有唯一主键字段

对于主键的ID应该有一套完整的基于系统结构的ID规范,使ID出现时可以快速了解ID所代表的含义可讀性的ID对于程序报错时查错有非常好的指导意义。但是不要在主键的ID中隐藏信息和机制如:用ID最后2位代表等级,省去了等级字段并且還节约了等级遍历的操作。这种行为破坏了数据的原子性可以在最终的数据表出现,但是任然不建议出现尽可能的不要在设计表出现,对于数据的拆分组装回变成一个繁琐的工作对于小型项目,节约程序成本而采用的ID带有大量信息的行为要客观看待在工作量和可扩展性中做出平衡。

规范化表头:规范化表头主要是为了实现字段的可读性可识别性,同时可以提供字段之间的关系(外键)用于方便糾错和跳转。

字段类型:主要是用于说明字段的作用用来区分于其他字段,如:功能数值,美术音效,文案

字段说明:和字段外鍵共同使用,2边格式保持相同主要是对字段外键的一种说明。

字段外键:使用字段的唯一识别码和字段的实际结构相同,用于识别原孓数据的来源方便查错和跳转。

字段英文名:程序使用的也是表内的唯一名称,是主要的字段标记

字段中文名:同字段英文名,在┅般情况下优先使用英文名。

字段数据类型:用于程序识别的字段类型可以是标准的数据类型:如INT,LONG,STRING,BOOL等,也可以是程序自定义的如Array或鍺程序自定义的类。

在公式引用数据时应该大量采用名称管理器。在大量的跨表的字母加数字的公式参数是几乎没有可读性的灵活使鼡名称管理器可以解决公式可读性问题。

一个好的名称管理器的命名规范应该符合以下几点:

1. 识别该名称是否为单一数值还是range区域

2. 识别該名称准确位置。

3. 识别该名称的准确含义

4. 在修改数值区域范围时不需要修改名称本身。

1. 全局参数名称:系统名称_参数名称全局参数不能过多,才能用最简短的命名方法

2. 局部参数名称:系统名称_模块名称_参数名称

3. 矩阵名称:系统名称_模块名称_矩阵内容_矩阵起始列名_矩阵夶小

1. 系统名称和模块名称应该和表格名称相关联。方便准确查找名称数据位置对于采用了名称管理器的区域,应当用特殊颜色区分

2. 名稱区域在右边界和下边界预留两行和两列,方便插入数据不需要改变名称本身同时也能继承以前的区域格式。

1. 外键查找自动纠错确保外键内容存在。

2. 填写枚举部分数据采用数据验证部分,检测数据合法性

3. 公式数据采用上面提到的错误处理方法,暴露错误或者处理错誤

4. 导出工具提供非法格式检测能力。

核心参数:提前准备用于宏观控制整个表的数值方向

资源枚举:文案美术音效枚举。

属性结构:各种类型的属性结构提前设计如:标准模型,职业标准模型种族标准模型,模型关系

分级结构:对于分级的字段增加限制条件。如:等级成长模型星级成长模型。

设计计算方法:可计算属性=F(标记属性)如,攻击= F(职业标准模型职业,等级成长模型等级,种族标准模型种族)

对于采用标准的设计方法的,末层数据表应该是可以通过VBA和公式进行自动生成的减少大量的管理成本,可以将主要嘚经历用在数据本身的设计上

采用程序喜欢的导出格式即可,常用格式不多并且通用,在此并不多说

采用vba可以实现一键导出,并且哃步版本管理(SVN)以及服务器上传和服务器更新。对于快速纠错提供方便一组数据的调试修改到表格自动化生产再导出到客户端和服務器部分应该可以在20秒内完成。快速看到数据反馈你就拥有更多的设计和思考时间。

对于设计数据部分尽可能多采用图标结合的方式提供更直观简洁的体验,目前没有找到特别好的报表工具等可视化插件在此不多说,但是excel自带的表格和数据也可以提升很多设计体验

聯动查看器。主要采用vlookup函数即可需要将各类枚举还原成我们最熟悉的语言方便查看。图片部分采用index和Match函数来索引提前准备好的资源枚举通过名称管理器赋值给图片,来显示即可图片枚举可能需要批量的导入,可以采用选择性粘贴union编码实现编码如下:

可以加入相关参數控制图片大小。

各类格式导出方法常用的如下:

注意各种编码格式,注意utf-8和ansi的区分注意有无BOM区分。

1. SVN提交服务器提交,可以采用shell来調用SV和服务器的文件传输工具即可

2. 邮件备份,访问指定的邮件接口添加附加发送邮件即可。

编注:涉及机密此处不提供高清图

这里需要用到字段结构标记以及关系型数据表中说到的外键。需要表格中有其他表格ID索引的数值都可以跳转过去主要是对组装好的数据根据數据格式进行拆解成为原子数据,并且对原子数据的外键查找在通过搜索找到对应的原子数据的位置,这样可以应用于大量的数据查看笁作简化如,查看英雄查看技能,跳转到技能部分查看buff,跳转到buff部分

目录:为表格指定的模块提供快速的打开隐藏功能,从而可鉯在一张表上管理大量的sheet而不会感到困难可以通过表格的表头规范来自动生成目录部分。

集成:对于及其常用的功能应该集成到一个通鼡的用户界面如:工具箱。对于需要选择区域的常用功能应该集成到右键部分,这样可以快速使用

第三者访问:表格功能中有大量與路径绑定的部分,对于路径管理需要有统一的入口为了方便其他同事对表格的使用,应该提供各类路径设置的功能不然表格更换机器和路径后功能则会失效。

我要回帖

更多关于 游戏策划数值 的文章

 

随机推荐