码迷,mamicode.com
首页 > 其他好文 > 详细

捕鱼游戏捕杀计算公式的设计思路

时间:2016-12-28 17:09:01      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:僵尸   矩阵   大致   开启   建议   取值   模式   strong   .com   

本文转载自: http://www.aiweibang.com/yuedu/89054024.html

(只作转载, 不代表本站和博主同意文中观点或证实文中信息)

公司最近准备做一款以植物大战僵尸为素材的捕鱼类游戏,初期讨论的时候发现大家的思路都比较混乱。本人通过一段时间玩捕鱼之后,大致规划了一个捕杀的计算公式。大家可以参考一下,也欢迎各位朋友指出不足和漏洞。

1、基础计算公式

以1个玩家,单个豌豆(消耗1金币,攻击为1)攻击单个普通僵尸(获得10金币,生命为10)作为基础模型。

假设每次攻击100%击杀僵尸,需要达到收支平衡:

攻击子弹消耗(投入)I = 击杀僵尸获利(产出)E

 

某一时刻:

 

当I>E时,收入大于产出,玩家前越打越少,玩家亏钱公司赚钱,反之。

 

当I=E时,不输也不赢,玩家可以持续游戏。

 

当1颗豌豆杀死一个僵尸,消耗1金币,获得10金币,玩家净收入为9金币。

 

每次攻击并非必定杀死僵尸,则需要计算一颗子弹杀死僵尸的概率:

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

 

 

则概率期望到达的平衡公式为:

 

投入I=击杀概率KP×产出E

 

 

带入概率公式则平衡公式为:

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

 

 

当1颗攻击为1的豌豆,攻击生命为10的僵尸,击杀概率为10%,则可以达到期望平衡。

 

某一时刻:

 

要I>E,则调低豌豆攻击,或调高僵尸生命,使概率低于10%,则可以达到理论上的公司盈利。

 

实际情况模式:

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

(模拟500次后的收入产出图,红色为投入、绿色为产出)

 

实际结果,有100多次产出过高和过低的情况(时间越后越明显)。所以纯随机不好控制,需要进行实时调整。


2、实时调整

对概率进行调整,收入过高时降低概率,收入过低时提高概率,则对概率进行调整,增加实时调整参数AP(-10%<AP<10%):

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

 

 

则击杀概率调整为:

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">

  • 当收入过高,降低AP,降低僵尸击杀率,造成玩家纯收入锐减。

  • 当收入过低,提高AP,提高玩家收入,避免玩家流失。

  • 游戏初期,提高AP,提高金币产出,增加玩家收入,强化爽快感,吸引玩家持续游戏。

  • 游戏中期,适度调高和调低AP,造成收入波峰波谷(类似股票),吸引玩家充值,同时提高游戏黏度。

  • 游戏后期,降低AP,提高玩家冲击高分的难度,强化玩家之前的比拼,吸引玩家充值,提高收入。

 

AP调整为游戏中根据玩家收支情况实时调整,不影响整体数据模型!

 

单个玩家的AP调整仅对单个玩家有效:

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

(波峰波谷,红色为投入、绿色为产出)


3、武器定价

 

豌豆射手每次发射一颗豌豆,击中一个普通僵尸。

 

豌豆射手(1金币)击杀普通僵尸(10金)的几率是10%。

 

一颗豌豆对于普通僵尸的期望价值为1金币(10*10%),平衡公式为:

 

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

以豌豆射手为基本模型,确定其他几种武器的定价:

 

数量优势

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

 

  • 仙人掌每次发射4颗钉刺,每个钉刺刺中一个普通僵尸

  • 仙人掌的攻击效率约为豌豆射手的3~4倍(不一定每发都中)

  • 则每次使用仙人掌消耗的金币可定为4金币(具体数值以实际调整后为准)

 

威力优势

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

 

  • 火焰豌豆射手每次发射一颗火焰豌豆,威力是普通豌豆的2倍,击中一个普通僵尸

  • 火焰豌豆射手击杀普通僵尸的几率是20%(PA提高2倍)

  • 一颗火焰豌豆对于普通僵尸的期望价值为2金币(10*20%)

  • 则每次使用仙人掌消耗的金币可定为2金币(几率提高到20%以后会大幅度增加收益,可设置略高价值)

 

随机优势

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

 

  • 西瓜大炮每次发射一颗西瓜,西瓜击僵尸后爆炸,波及若干个僵尸。

  • 西瓜大炮每次攻击的僵尸数量不确定,需要进行测试后确定平均值。

  • 因为这种高级武器,在比赛场等不注重效率但注重数量的模式(击杀越多排名越高)中有优势,所以可以提高定价。

 

随着版本更新,增加新的武器,其攻击方式和攻击效率都要和基本模型(豌豆射手)进行对比,确定其理论收益。

 

理论收益成立后,经过实际测试、微调,使每种大炮单位金币期望价值基本相同。

 

4、概率调整

经过基础计算公式,可以得出武器攻击僵尸的收益比:

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

带入击杀概率公式:

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

(由于实时定价参数为暂时影响,为了简化计算去除)

 

  • IR的理论值应该为1,则该武器攻击该僵尸收支相等

  • IR>1,则该武器攻击该僵尸,玩家亏钱

  • IR<1,则玩家赚钱

 

武器数据

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

 

僵尸数据

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

代入我们上的所有僵尸和武器数据后,可得矩阵:

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

游戏正式上线后,PG(武器价格)、ZG(僵尸掉落)为固定值,不能随意变化。

 

由于游戏模式、刷新僵尸机制、玩家数量的不确定因素,可能会造成某个IR过高或过低。或是由于运营或游戏性的需要,有意提高或降低某个武器和某个僵尸的IR值。则只需要调整ZH(僵尸生命)、PA(子弹攻击),就可以调整该武器攻击该僵尸的收支水平。

 

5、抽水放水期

 

根据游戏整体的收支情况,我们可以设定整个平台的抽水和放水。

 

  • 抽水期,玩家击杀僵尸的概率普遍降低,投入金币量高于产出金币量。

  • 放水期,投入低于产出。

 

抽放水参数TP的调整方法类似实时调整参数AP:

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

则击杀概率调整为:

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">

技术分享

 

  • 当TP>0,则此时为放水期

  • 当TP<0,则此时为抽水期

  • 建议TP的取值范围为-5%<TP<5%(具体数值以实际调整后为准)

 

TP调整对整个平台的玩家有效

 

抽水放水调整以1天为期进行调整,游戏上线初期或版本更新缩短至3小时或6小时,版本稳定后放宽时间

服务器设置收支预警(收入严重小于持续),预警后自动调整抽水。

 

6、小黑屋

 

某些玩家由于某些原因,获得了超量的收益,因为平台收入和游戏平衡,需要将其纳入“小黑屋”。

 

被纳入小黑屋的玩家,其击杀概率被大幅度降低。

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

  • 建议BP的取值为BP<-10%(具体数值以实际调整后为准)

  • KP被降低至负数则为0

 

取消小黑屋条件有两种:

 

  • 游戏时间:玩家进行一段时间游戏后,自动解除小黑屋状态。

  • 玩家投入金币数:玩家投入一定量金币后,解除小黑屋。


7、倍数

倍数:玩家可选择倍数,提高子弹的消耗N倍,击杀僵尸后获得的金币量N倍。

 

例如,1倍下,豌豆消耗1金币,杀死僵尸获得10金币。10倍下,豌豆消耗10金币,杀死僵尸获得100金币。

 

倍数设置值为1倍、2倍、5倍、10倍、20倍、50倍、100倍。

 

玩家开启某个倍数,受其等级限制、房间上限倍数限制。

 

8、房间概率调整

我们将房间分为初级、中级、高级三种房间。根据其房间的定位,调整在该房间内,玩家击杀僵尸的概率:

  • 初级房:只能使用低倍数,提高击杀概率,随便打打就可以赢钱。

  • 中级房:可以调整高低倍数,平衡击杀概率,掌握技巧可基本收支平衡。

  • 高级房:可以开启最高倍数,略微降低击杀概率,赚得多赔得多。

 

加入房间参数RP后,击杀概率公式被调整为

 

<ignore_js_op style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word;">技术分享

 

建议初级房的RP为+10%,中间房为0,高级房为-8%(数值可配置,具体数据以实际调整后为准)。

捕鱼游戏捕杀计算公式的设计思路

标签:僵尸   矩阵   大致   开启   建议   取值   模式   strong   .com   

原文地址:http://www.cnblogs.com/yzjn/p/6229692.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!