捕鱼类游戏计算方式的设计思路
最近准备开发一款以植物大战僵尸为素材的捕鱼类游戏,在初期讨论阶段,发现大家的思路比较混乱。本人通过一段时间体验捕鱼游戏,大致规划了一个捕杀的计算公式,供大家参考,也欢迎各位朋友指出其中的不足和漏洞。
1、基础计算公式
以单个玩家使用单个豌豆(消耗 1 金币,攻击值为 1)攻击单个普通僵尸(击杀后获得 10 金币,生命值为 10)作为基础模型。
假设每次攻击都能 100%击杀僵尸,要达到收支平衡,需满足攻击子弹消耗(投入)$I$等于击杀僵尸获利(产出)$E$,即$I = E$。
在某一时刻:
- 当$I > E$时,投入大于产出,玩家的金币会越打越少,玩家亏损而游戏公司盈利;反之,当$I < E$时,玩家盈利。
- 当$I = E$时,玩家收支平衡,可以持续游戏。
例如,当 1 颗豌豆杀死一个僵尸,消耗 1 金币,获得 10 金币,玩家净收入为 9 金币。
但在实际情况中,每次攻击并非必定杀死僵尸,此时需要计算一颗子弹杀死僵尸的概率。概率期望达到的平衡公式为:投入$I$等于击杀概率$KP$乘以产出$E$,即$I = KP×E$。
当 1 颗攻击为 1 的豌豆攻击生命为 10 的僵尸时,若要达到期望平衡,击杀概率应为 10%。
在某一时刻,若要使$I > E$,可通过调低豌豆攻击或调高僵尸生命,使击杀概率低于 10%,从而在理论上实现游戏公司盈利。
然而,实际测试结果显示,存在 100 多次产出过高和过低的情况(时间越往后越明显)。这表明纯随机的方式难以控制,需要进行实时调整。
2、实时调整
为了更好地控制游戏收支,需要对概率进行实时调整。当玩家收入过高时降低击杀概率,收入过低时提高击杀概率。为此,引入实时调整参数$AP$(取值范围为 -10%到 10%)。
击杀概率调整公式为:调整后的击杀概率$KP' = KP + AP$。
- 当玩家收入过高时,降低$AP$的值,从而降低僵尸击杀率,使玩家纯收入锐减。
- 当玩家收入过低时,提高$AP$的值,提高玩家收入,避免玩家流失。
在游戏不同阶段,$AP$的调整策略如下:
- 游戏初期:提高$AP$,增加金币产出,提升玩家收入,强化爽快感,吸引玩家持续游戏。
- 游戏中期:适度调高和调低$AP$,使玩家收入出现波峰波谷(类似股票走势),吸引玩家充值,同时提高游戏黏度。
- 游戏后期:降低$AP$,提高玩家冲击高分的难度,强化玩家之间的比拼,吸引玩家充值,增加游戏收入。
需要注意的是,$AP$是在游戏中根据玩家收支情况实时调整的,且单个玩家的$AP$调整仅对该玩家有效,不会影响整体数据模型。
3、武器定价
以豌豆射手为基本模型来确定其他武器的定价。豌豆射手每次发射一颗豌豆,击中一个普通僵尸,其击杀普通僵尸(10 金)的几率是 10%,一颗豌豆对于普通僵尸的期望价值为 1 金币($10×10\%$),平衡公式为:武器价格 = 僵尸掉落金币 × 击杀概率。
数量优势
仙人掌每次发射 4 颗钉刺,每个钉刺可刺中一个普通僵尸。其攻击效率约为豌豆射手的 3 - 4 倍(不一定每发都能击中),则每次使用仙人掌消耗的金币可定为 4 金币(具体数值需根据实际情况调整)。
威力优势
火焰豌豆射手每次发射一颗火焰豌豆,威力是普通豌豆的 2 倍,击中一个普通僵尸的几率是 20%($PA$提高 2 倍)。一颗火焰豌豆对于普通僵尸的期望价值为 2 金币($10×20\%$),考虑到几率提高到 20%后会大幅度增加收益,每次使用火焰豌豆射手消耗的金币可定为 2 金币(可设置略高价值)。
随机优势
西瓜大炮每次发射一颗西瓜,西瓜击僵尸后爆炸,会波及若干个僵尸。由于每次攻击的僵尸数量不确定,需要进行测试后确定平均值。这种高级武器在比赛场等不注重效率但注重数量的模式(击杀越多排名越高)中有优势,因此可以提高定价。
随着版本更新,新增加的武器需将其攻击方式和攻击效率与基本模型(豌豆射手)进行对比,确定其理论收益。在理论收益成立后,经过实际测试和微调,使每种武器单位金币期望价值基本相同。
4、概率调整
通过基础计算公式,可以得出武器攻击僵尸的收益比$IR$,计算公式为$IR=\frac{ZG×PA}{PG×ZH}$(由于实时定价参数为暂时影响,为简化计算将其去除)。
- $IR$的理论值为 1 时,该武器攻击该僵尸收支相等。
- $IR > 1$时,玩家使用该武器攻击该僵尸会亏损。
- $IR < 1$时,玩家使用该武器攻击该僵尸会盈利。
将所有僵尸和武器的数据代入上述公式,可得到一个矩阵。游戏正式上线后,武器价格$PG$、僵尸掉落金币$ZG$为固定值,不能随意更改。但由于游戏模式、刷新僵尸机制、玩家数量等不确定因素,可能会导致某个$IR$值过高或过低。此外,出于运营或游戏性的需要,也可能有意提高或降低某个武器和某个僵尸的$IR$值。此时,只需调整僵尸生命$ZH$、子弹攻击$PA$,就可以调整该武器攻击该僵尸的收支水平。
5、抽水放水期
根据游戏整体的收支情况,可以设定整个平台的抽水和放水机制。
- 抽水期:玩家击杀僵尸的概率普遍降低,投入金币量高于产出金币量。
- 放水期:投入金币量低于产出金币量。
抽放水参数$TP$的调整方法与实时调整参数$AP$类似,击杀概率调整为:调整后的击杀概率$KP'' = KP + TP$。
当$TP > 0$时,处于放水期;当$TP < 0$时,处于抽水期。建议$TP$的取值范围为 -5%到 5%,且$TP$调整对整个平台的玩家有效。
抽水放水调整以 1 天为期进行调整,游戏上线初期或版本更新时可缩短至 3 小时或 6 小时,版本稳定后可放宽调整时间。同时,服务器应设置收支预警(当收入严重小于持续支出时触发),预警后自动调整抽水参数。
6、小黑屋
某些玩家由于某些原因获得了超量的收益,为了保证平台收入和游戏平衡,需要将其纳入“小黑屋”。被纳入小黑屋的玩家,其击杀概率会被大幅度降低。
设调整后的击杀概率为$KP'''$,调整公式为$KP''' = KP + BP$(建议$BP$的取值为 -50%,且$KP$被降低至负数时取 0)。
取消小黑屋状态有两种条件:
- 游戏时间:玩家进行一段时间游戏后,自动解除小黑屋状态。
- 玩家投入金币数:玩家投入一定量金币后,解除小黑屋状态。
7、倍数
玩家可选择不同的倍数,提高子弹的消耗$N$倍,击杀僵尸后获得的金币量也相应提高$N$倍。例如,在 1 倍下,豌豆消耗 1 金币,杀死僵尸获得 10 金币;在 10 倍下,豌豆消耗 10 金币,杀死僵尸获得 100 金币。
倍数设置值为 1 倍、2 倍、5 倍、10 倍、20 倍、50 倍、100 倍。玩家开启某个倍数会受到其等级限制和房间上限倍数限制。
8、房间概率调整
将游戏房间分为初级、中级、高级三种类型,根据房间的定位调整玩家在该房间内击杀僵尸的概率。
- 初级房:只能使用低倍数,提高击杀概率,玩家随便打打就有较大机会赢钱。
- 中级房:可以调整高低倍数,平衡击杀概率,玩家掌握技巧后可基本实现收支平衡。
- 高级房:可以开启最高倍数,略微降低击杀概率,玩家可能赚得多也可能赔得多。
加入房间参数$RP$后,击杀概率公式调整为:调整后的击杀概率$KP'''' = KP + AP + TP + BP + RP$。建议初级房的$RP$为 +10%,中级房为 0,高级房为 -8%(具体数值可配置,以实际调整后为准)。