首页 > 代码库 > 捕鱼游戏捕杀计算公式的设计思路
捕鱼游戏捕杀计算公式的设计思路
本文转载自: 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%(数值可配置,具体数据以实际调整后为准)。
捕鱼游戏捕杀计算公式的设计思路