游戏开发论坛

 找回密码
 立即注册
搜索
查看: 26321|回复: 9

[讨论] 如何设计捕鱼达人游戏中的死亡概率?

  [复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2015-6-9 14:21:18 | 显示全部楼层 |阅读模式
4f55f00d72878e3c6735979a990eaa8c.jpg

  GameRes游资网发布 文 / 奕成

  捕鱼达人或是捕鱼类游戏,鱼的死亡概率是怎么定的呢?在几年前我在街机上面玩过捕鱼达人这样的游戏,后来自己做的游戏引擎需要一个Demo。我就山寨了一个捕鱼达人,先放些截图。

1.jpg

  下面是我设计的主要思路,与原版的游戏应该会有出入。

  我来谈一下我设计的主要思路

  设计之初,我想过要给鱼一些生命值。所谓生命值就是打中一下扣N点的血。

  后来我认为,这样的处理方式不靠谱也不符合预期。

  原因有三:

  一:玩家有可能一炮就中大鲨鱼,大鲨鱼的血量必定是最高的,血量的设计不科学。

  二:如果加入了血量,那么只要玩家有耐心,肯投入,必定会中鱼。

  三:如果扣完血还不中,说所谓系统的控制。那么这样和没有血量的鱼没有区别(因为血量扣到0了还看系统脸色等于没血量)

  于是我移除了血量的设计,这样的设计就纯看脸 23333333

2.jpg

  捕鱼达人的鱼被不被打中在设计中应该要注意如下几点:

  一:有没有必中的概率;

  二:碰撞检测的难度;

  三:游戏的平衡;

  一般游戏设计是纯随机,但是一款商业游戏或者游戏机室的游戏不应该纯随机(原因你懂的)

  那么既然没有纯随机,就会有一个收支比(付出与收益的比值)

  我采用了两个变量保存收支比,m_nTotalPay与m_nTotalGain;

  每一炮打出去的时候,我会计算一个权值:

  fPayGainPower = m_nTotalPay / (float)m_nTotalGain;

  得出收支比;这样的收支比设计者可以定期清空(因为游戏机室不一定一直都是同一个玩家,我个人没有清空)

  之后我们可以针对收支比进行一个计算,当收支比小于0.5的时候,也就是说玩家收入是支出的一倍,那么我会把倍率调整到0;

  if (fPayGainPower <= 0.5)

  m_SystemPower = 0.0;

  其余的值可以从0.0-1.5不等,具体逻辑游戏设计师可以自己定义。

  数值的话你具体可以自己设置一下,如果联网游戏,那么服务器也可以主动设置这个值。

  当用户赚得多,系统权值低,用户赚得少,权值高。如果用户赔到底裤都没有了,权值最高。

  PS:当用户的钱快花完了也可以相应调高权值,激励玩家充值。

3.jpg

  这个值会赋值到炮弹,炮弹打出去之后会对鱼进行一个碰撞检测。具体的碰撞检测会根据游戏设计师的设计逻辑会有所改变。

  例如下面矩形就是一条鲨鱼的碰撞盒。

4.jpg

  只要网碰中了红色的区域,就会进行捕获的一个随机。

  捕获的随机是,不同的鱼类有不同的权值,炮弹有不同的权值,1级炮弹和7级炮弹也不一样。

  下面是鱼的权值(随机后结果超出这个值即可抓获)

5.jpg

  下面是炮弹的权值

  一级 0.1

  二级 0.2

  三级 0.3

  四级 0.4

  五级 0.5

  六级 0.6

  七级 0.7

  捕获的权值nCatchPower 是

  100的一个随机数 * 大炮的权值 * 系统给定的权值

  nCatchPower = (rand() % 100 + 1) * fCanonPower * m_SystemPower;

  最后判断CatchPower和鱼的权值,当Catch数值高,鱼就被捕获,进入结算流程。

6.jpg

  这样游戏可以一直进(keng)行(qian)下去让玩家快(ku)乐(bi)地玩耍拉。

  这是我的设计方法,希望抛砖引玉!

声明:游资网登载此文仅代表作者观点,不代表本站立场。

1

主题

61

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
发表于 2015-6-9 15:15:00 | 显示全部楼层
今天工作不忙,我闲聊两句。如果我设计的话...

捕获率由两部分相加而成:基础捕获率和动态捕获率。

基础捕获率,所有玩家在任何情况下相同。
动态捕获率,根据玩家当前收益和玩家的攻击模式有关。

我们最终要研究的是如何控制玩家收益率,以确保游戏自身收益。
所以,我们要看看捕获率如何影响收益率。(收益率,相当于赌马中的赔率)
每次发射的收益率应该为:
捕获率*捕获收益*平均捕获数量/子弹消耗。

例如:
用某种子弹,集中某种鱼,
捕获率8%,
捕获的话,得到10金币,
这种子弹平均能击中2条鱼,
(不同子弹和不同鱼组合出来的平均击中数量,可能是不同的)
发射一发这种子弹,消耗4金币。
0.08*10*2/4=0.4
即,玩家如果消耗1000枚金币,用这种子弹,攻击这种鱼的话,平均收益是400金币。

由于不同子弹,不同鱼的组合中,平均捕获数是固定的(暂且这样假设,一般来说也的确是这样的)
子弹消费和捕获后的收益也是固定的。
所以想得到某种收益率,可以反推出相应的捕获率。

问题来了,如果让玩家觉得自己未来会赚金币。
说两种抛砖引玉的思路:
1、利用动态捕获率。让收益形成曲线,波峰就是赚了,波谷就是赔了。
玩家短期内赚到了,会给他未来还会赚更多的假象。
关键是控制好,赔到什么程度时,要让玩家赚一些,使此时的结算收益大于0,
玩家赚了一次之后,还要继续赔多久。
确保最终平均收益,是玩家亏了。又要让玩家觉得下次能再赚回来。

2、使不同鱼与子弹的组合中,有的收益率高一点,有的收益率低一点。让玩家自认为抓住了游戏规则的漏洞。
玩家往往习惯攻击同一种鱼,即某种鱼被攻击率较高,我们简称为目标鱼。
一局新的游戏中,玩家集中攻击目标鱼一定时间后,降低该目标鱼的收益率,然后持续一段时间,如果他有意无意集中了另一种鱼(诱饵鱼),则使其被捕获,是玩家得到收益。
让玩家有一种原来这种鱼更容易捕获的假象。
但之后则降低诱饵鱼的收益率。

结合上述两种规则,写成代码,动态调整每个鱼和子弹组合的收益率。
确定收益率后,反推出所需要实际代入运算的捕获率。

0

主题

2

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2015-6-12 10:55:28 | 显示全部楼层
呵呵.呵呵呵.

6

主题

33

帖子

357

积分

中级会员

Rank: 3Rank: 3

积分
357
发表于 2015-6-21 23:48:03 | 显示全部楼层
呵呵.呵呵呵

0

主题

25

帖子

86

积分

注册会员

Rank: 2

积分
86
QQ
发表于 2015-6-23 17:40:42 | 显示全部楼层
有借鉴意义,谢谢楼上2位的分享

0

主题

3

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2015-6-23 17:44:10 | 显示全部楼层
楼上说的对

8

主题

66

帖子

703

积分

高级会员

Rank: 4

积分
703
发表于 2016-2-29 22:07:07 | 显示全部楼层
收藏,呵呵

0

主题

7

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2016-4-22 20:01:46 | 显示全部楼层
还可以,学习了

0

主题

1

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2016-9-12 10:58:43 | 显示全部楼层
请问出鱼的规则是什么思路。是根据表让程序来出吗。

0

主题

6

帖子

40

积分

注册会员

Rank: 2

积分
40
发表于 2017-9-13 14:07:51 | 显示全部楼层
2位的思路都非常棒,谢谢。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-5-7 14:30

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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