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

本文转载自: 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%(数值可配置,具体数据以实际调整后为准)。

时间: 2024-07-30 15:29:03

捕鱼游戏捕杀计算公式的设计思路的相关文章

致佳音: 推箱子游戏自动求解算法设计(四)

这一节是本文的核心内容,即推箱子游戏求解算法的设计思路过程 前面已经说过过,判断局面重复的最好标准不是局面完全一致,而是坐标排序相同且角色坐标通行 如下图,角色无论怎么移动,不推动箱子的时候,都能回到原来的位置,算作同一个局面: 再如下图,两个箱子互换位置,结果与没有移动箱子是一样的,所以排序箱子坐标以后一致,还是相同局面 问:有必要判断局面重复吗?是不是只是提升一下效率? 答:不是为了提升效率,而是为了能解出来,如果使用递归,重复的局面反复耗尽堆栈,而队列则耗尽内存 正如上图,反复推这两个箱子

张左峰的分享 网页游戏制作技术 加密的设计思路与手段

网页游戏制作技术 加密的设计思路与手段 必备工具:Doswf 好朋友Laan开发,请自行百度搜索 今天太晚了,明天再更新内容...咔咔咔

unity3D 游戏开发之工程代码框架设计思路MVC

unity3D 游戏开发之工程代码框架设计思路MVC 设计目的 1.使工程结构更规范. 2.提高代码可读性,封装性,拓展性 3.提高工作效率. 正文内容: 1.Frame的组成结 (1)视图层(View) (2) 控制层(Control) (3)数据层(Model) 整个Frame是由这三个部分组成,每一层管理属于自己的逻辑,核心思想是游戏逻辑和UI 逻辑独立开.目前遇到的项目工程大多数View和Control逻辑都写在一起,这样后期修改 和维护效率会很低,因为耦合性很高而View又是经常要修改

cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第0步---知识点总结&amp;amp;效果预览&amp;amp;设计思路

/* 说明: **1.本次游戏实例是<cocos2d-x游戏开发之旅>上的最后一个游戏.这里用3.0重写并做下笔记 **2.我也问过木头本人啦,他说:随便写.第一别全然照搬代码:第二能够说明是学习笔记 **3.这里用cocos2d-x 3.0版本号重写,非常多地方不同,可是从重写过程中也非常好的学习了cocos2d-x */ 环境:Win7 .cocos2d-x 3.0final .C++ .VS2012 笔记思路:后面就按这样的思路写笔记啦 1.首先给出每次实现的效果截图 2.然后给出设计思

课程设计小组报告——基于ARM实验箱的捕鱼游戏的设计与实现

课程设计小组报告--基于ARM实验箱的捕鱼游戏的设计与实现 一.任务简介 1.1 任务内容 捕鱼游戏这个项目是一个娱乐性的游戏开发,该游戏可以给人们带来娱乐的同时还可以给人感官上的享受,所以很受人们的欢迎.本次游戏的程序设计包含,java swing组件的合理运用,还有图像的变动达到一个动态的动画效果,线程的运用,游戏的异常处理,等方面的知识.培养学生运用所学知识的基础理论.基本知识和基本技能,分析解决实际问题能力的一个重要环节.它与课堂教学环节彼此配合,相辅相成,在某种程度上是课堂学习的继续.

课程设计个人报告——基于ARM实验箱的捕鱼游戏的设计与实现

课程设计个人报告--基于ARM实验箱的捕鱼游戏的设计与实现 个人贡献 实验环境的搭建 代码调试 在电脑上成功运行 在ARM实验箱上成功实现 给程序增加功能(没成功) 研究程序代码撰写小组报告 一.实验环境 Eclipse软件开发环境: ARM实验箱(HonyaS5PC100): windows操作系统. 二.实践内容 Windows环境下ARM集成开发环境的搭建与使用: 安装软件到模拟器: 连接ARM实验箱与PC机: 将工程代码在ARM实验箱上实现: 给程序增加新的功能. 三.实践步骤 3.1

细数捕鱼游戏软件开发的游戏技巧,趣味性十足遵循经典套路设计

捕鱼游戏作为深海捕鱼游戏从出现就吸引了很多人的目光,并且在随着技术的发展和进步下,手机捕鱼游戏开发也逐渐的愈演愈烈,甚至是成为了当下流行的投资运营选择.其实在手机捕鱼游戏开发下的捕鱼游戏蕴含了许多还没有被玩家了解透彻的游戏技巧,仍然需要玩家在捕鱼游戏中自己慢慢的发现与总结.欢迎咨询电话:15315986100:QQ:3410861822 手机捕鱼游戏开发,华软打造值得玩 谈及捕鱼游戏的游戏技巧很多人都认为捕鱼游戏就是简单的点击屏幕进行发射就好,账户金币没有了就等着系统的补助发放,丝毫不去想如何捕

Pongo网页版JavaScript源代码及设计思路

1.游戏背景介绍(写在前面的废话): 五月初的某天,看到某网推荐了这款游戏,Pongo,看着还不错的样子就用ipad下下来试玩了下,玩了两局感觉还错挺过瘾的,因为是手欠类游戏嘛大家懂的. 但是没一会发现游戏在ipad似乎有些bug,玩一会就会卡住然后只能强退了,真是揪心,记录还等着破呢. 怎么办?玩游戏不如玩自己的游戏的念头又邪恶的出现了,然后就把pad丢给了朋友虐心去,我默默回到电脑前开始动手自己写个不会卡的. 大概两小时吧,写出了基本框架,然后扔sinaapp里试了下效果基本能玩就洗洗睡了.

俄罗斯方块的设计思路

前段时间帮人写了个俄罗斯方块的Demo,今天有时间分享下设计思路. 分析: 游戏中会出现7种形状,每种形状在游戏中都能够旋转,形成新的形状.每种形状都是由方形的色块组成的. 数据类: Shape:形状类,总共7个. Block:方块类,其实只有一个贴图的属性. 关于旋转: 为每个形状寻找旋转点,每个形状的旋转点都是固定的. 红色的点为参考点,所在行列为(x,y) 在Shape的数据中将旋转后的各个Block相对于红色Block的位置都记录下来,游戏中旋转的时候直接根据红色的Block确定其他的位