博路发

 找回密码
 立即注册
博路发
123123
查看: 833|回复: 5
打印 上一主题 下一主题

如何设计捕鱼达人游戏中的死亡概率

[复制链接]

926

主题

1759

帖子

3111

积分

超级版主

Rank: 8Rank: 8

积分
3111
跳转到指定楼层
楼主
发表于 2019-5-11 13:54:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在研究捕鱼达人(或者一类捕鱼db机器)的设计算法,但对里面的概率设计很难理解,想请教一下大家,下面是对问题的抽象描述:

捕鱼游戏中一共有X种鱼,每种鱼的基本分为S(x),玩家每次可以用倍数为y的炮弹去攻击鱼,每一发炮弹必然击中一条鱼(会在屏幕中反弹一直到击中鱼为止),鱼被击中后会以D(X, Y)的概率死去,其中Y为击中该鱼的炮弹的倍数,当鱼死亡后,玩家将得到S(x)*y的分数,否则将扣去y分,若要控制游戏的收益率为1%(即平均玩家每次消耗100分,其将损失1分,也可以理解为游戏抽水1%),应该如何设计每条鱼的死亡概率以及其基本分?

可以进一步假设玩家每一发炮弹击中鱼x的概率为 Q(x), 玩家使用倍数为y的炮弹去射击的概率为P(y) 目前我得出一玩家平均每一发炮弹的得分公式 R:

R = Sigma(y) [ Sigma(x) [Q(x) P(y) * y * D(x, y) * S(x)] - y ]

其中x取值为所有鱼的种类数(例如 1,2, 3, 4 ..... 20),y的取值为玩家可能使用的炮弹的倍数 (例如 10, 20, 30, 50, 100, 200, .... 10000)

思考:在实际游戏中,Q(x), P(y) 的取值可以实时的通过对玩家的行为进行分析从而进行计算,不知道有没有好方法可以通过反馈的方式来调节参数从而维护较为稳定的游戏抽水率。

PS: MadYangYi 提到 “每一发炮弹必然击中一条鱼(会在屏幕中反弹一直到击中鱼为止)” 与
“假设玩家每一发炮弹击中鱼x的概率为 Q(x)” 有矛盾,实际上并不冲突,因为每一发炮弹都会击中一条鱼,至于击中哪一条鱼还是有一个概率的,这个概率其实可以等价为鱼x出现的概率


文章源自 博路发论坛 原创,转载请注明:
本文标题:如何设计捕鱼达人游戏中的死亡概率
本文地址:http://www.bete68.com/thread-6856-1-1.html



上一篇:捕鱼三个小技巧,鱼儿轻松把入网
下一篇:手机捕鱼游戏平台的三大秘籍是什么
回复

使用道具 举报

926

主题

1759

帖子

3111

积分

超级版主

Rank: 8Rank: 8

积分
3111
沙发
 楼主| 发表于 2019-5-11 13:55:45 | 只看该作者
下面是我设计的主要思路,与原版的游戏应该会有出入。我来谈一下我设计的主要思路设计之初,我想过要给鱼一些生命值。所谓生命值就是打中一下扣N点的血。后来我认为,这样的处理方式不靠谱也不符合预期。原因有三:一:玩家有可能一炮就中大鲨鱼,大鲨鱼的血量必定是最高的,血量的设计不科学。二:如果加入了血量,那么只要玩家有耐心,肯投入,必定会中鱼。三:如果扣完血还不中,说所谓系统的控制。那么这样和没有血量的鱼没有区别(因为血量扣到0了还看系统脸色等于没血量)于是我移除了血量的设计,这样的设计就纯看脸

回复 支持 反对

使用道具 举报

926

主题

1759

帖子

3111

积分

超级版主

Rank: 8Rank: 8

积分
3111
板凳
 楼主| 发表于 2019-5-11 13:55:57 | 只看该作者


最基本的思路是:收益 = 消耗 - 抽水 = 消耗 * (1- 抽水比率)。从这个思路出发,归类现有的因素:消耗向:炮弹消耗为cost,抽水比率为chou。收益向:打渔金币为gold全局系数:倍率为ratio,作用于整体,放大收益和消耗。额外引入2个变量,用于游戏中控制鱼死亡概率:health:鱼的生命值,大鱼多小鱼少。health与gold绑定。x health = 1 gold。damage:炮弹伤害,大炮多小炮少。damage与cost绑定。y damage = 1 cost。则公式变化为:x * health = y * damage * (1 - chou)health = y * damage * (1 - chou) / x先定x,y,然后炮的cost和鱼的gold,根据chou可以得到鱼的health。炮弹击中鱼时,打死概率为 damage / health(具体肯定有额外控制公式处理特殊情况)。倍率控制总收益与总消耗,不参与具体概率计算。--------------------------我对捕鱼游戏的理解和题主有不同,具体在:1.倍率与概率计算无关。2.无论是否打死鱼,都会扣分。--------------------------题主有些混乱:每一发炮弹必然击中一条鱼(会在屏幕中反弹一直到击中鱼为止)和假设玩家每一发炮弹击中鱼x的概率为 Q(x)

回复 支持 反对

使用道具 举报

926

主题

1759

帖子

3111

积分

超级版主

Rank: 8Rank: 8

积分
3111
地板
 楼主| 发表于 2019-5-11 13:56:26 | 只看该作者

捕鱼游戏的实质是db游戏,通过抽水来赚钱。举个例子,玩家手里有10金币,玩了一段时间的捕鱼游戏后,他手里只剩下8金币,而另外的2金币被商家拿走了,拿走的这一部分就是抽水,这里的抽水率就为20%(= 2 / 10),抽水为2 。我们从最简单的情况开始分析。假设游戏中有A炮塔(每次攻击消耗10金币);A鱼(击中固定掉落20金币)。在不考虑抽水的情况下,为了达到收支平衡(玩家刚开始有多少钱,游戏结束后依然有多少钱),A炮塔击中A鱼的概率就是50% (=  10 / 20)。接下来我们考虑抽水的因素(假设抽水率为5% ),因为有5%的抽水,所以实际用于捕鱼的金币就为 9.5 (= 10 - 10*5%);这样实际击中的概率就为: 47.5% (= 9.5 / 20)。根据这个思路(每次攻击都是独立事件,相互之间不会有任何影响),可以计算出各种炮塔对不同种类鱼的击中概率。实际游戏中玩家需要较为明显的赢钱与输钱的过程。而目前这个思路在玩的过程中,玩家较难有这种体验,但在db游戏中这应该是必须的,玩家需要这样的刺激。因此我们将游戏划分为不同的周期,划分周期的依据可以是时间、攻击次数也可以是当前金币等。假设按照攻击次数将游戏划分为四个周期(第一阶段:0 ~ 300、第二阶段:300 ~ 500、第三阶段:500 ~ 650、第四阶段:650 ~ 800),前三个周期都让玩家明显的感到赢,在最后让玩家一次性输掉,但总体的抽水依然满足5%抽水率这个设定。我们可以手动设定前三个周期的抽水(第一阶段:-0.5、第二阶段:-1、第三阶段:-2),因为要让玩家感觉到赢,也就是商家送钱给玩家,此时的抽水就为负值,然后计算出第四个阶段的抽水为7。简单解释一下这个7是怎么来的。这里用了加权平均值的概念,设第四阶段的抽水为x,根据加权平均值的概念就有 (-0.5*300 +  -1*200 + -2*150 + x*150)/ (300 + 200 + 150 + 150) = 10 * 5% ,可以计算出x为7。如果你对加权平均值不是很理解,可以百度一下相关的概念。这里需要注意的是,第四阶段的抽水最大值不能超过10(这一点我不是很确定,但如果大于10的话,就没法计算概率了)。根据计算出的抽水,按照之前的思路算出相应的概率就可以了。在实际项目中不可能设计的这么死,肯定是会有变化的,至于项目要如何实现,可以多设计几组这样的周期来随机,或者还有其他什么方式来实现?捕鱼游戏中还有一个重要的问题是鱼群的问题。我们假设两种最极端的情况,一种是全是小鱼(掉落金币最小),在这种情况下玩家会觉得没意思,因为击中的概率会比较高,但是又掉落不了多少金币;一种是大鱼(掉落的金币最大),此时玩家会非常受挫,因为击中的概率太低了。所以比较理想的状态就是什么鱼都有,但还是应该有一个比例的,这里也可以采用周期的概念来配置。这些都是细活,需要慢慢来调,就不说了。由于我没有参与过捕鱼类游戏的设计,所以这个思路在实际中是否可行,还有待验证。希望你们在读过之后,可以指出其中存在的问题,非常感谢。

回复 支持 反对

使用道具 举报

0

主题

14

帖子

28

积分

新手上路

Rank: 1

积分
28
5#
发表于 2019-5-12 10:38:19 | 只看该作者
一会儿管理员就来了,哈哈

回复 支持 反对

使用道具 举报

28

主题

545

帖子

580

积分

高级会员

Rank: 4

积分
580
6#
发表于 2019-5-12 11:12:33 | 只看该作者
这个已经不在我们的能力范围内

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|博路发 ( 菲律宾ICP备73292958号-1

GMT+8, 2024-5-9 09:52 , Processed in 0.191635 second(s), 27 queries .

Powered by 博路发Copyright @ 2010-2015

快速回复 返回顶部 返回列表