经典的捕鱼游戏程序原理.包含程序员揭秘(第一章节)

一直以来做为一个比较热爱捕鱼的粉丝,从最初的程序员,到现在的玩家。基本上对于捕鱼的无非是技巧征服。事实上。在技巧方面,如果想得到百分之百的机率方法。个人以自己编写的程序出来说。这不可能。为什么这样讲?因为捕鱼游戏的程序原理是一个比较深的话题。或许很多人想不到。就普通的技巧无非是一些心态而已。而真正的程序原理,永远比你想的复杂。在写这个文章的时候,足足花了我一个星期才编写好。本人将会三到五个章节把原理写出来。大家一定要从第一章节看到最后。好好保存这些数据。或者有一天你玩捕鱼,会学不少的东西。哪个时候你就会知道为什么这是一个完整篇了。

目录:

第一章:基础模块(2019年完结)

Part1——————游戏的介绍(已完结)
Part2——————基础的数值(已完结)
Part3——————房间的架构(已完结)
Part4——————鱼儿的路径(已完结)
Part5——————特殊的鱼儿(已完结)
Part6——————进阶的玩法(已完结)
Part7——————模块的拼装(已完结)
Part8——————数据的监控(已完结)
Part9——————商业化方式(已完结)
Part10——————结束语

image


Part1:

游戏的介绍:

捕鱼游戏,是一款通过发射子弹捕获鱼从而获取金币的“概率”游戏,市面上流行最早应该在2005年左右,街机厅风靡社会的时候就出现了,具体什么时间面向市场的也不清楚,现在移动端盛行的年代,街机厅的大部分游戏也被移植到了手机上。捕鱼游戏也不例外。
游戏的核心:

游戏本质是一个“概率”游戏,不同的开发商通过不同算法或者产品模式会改变这个规则,有的可能使用的是“弹夹概率机制”,有的使用是“伪随机概率机制”,有的使用是“养猪杀猪式”;

我这里采用的是伪随机概率机制作为游戏的核心算法,在这里就不介绍其它方式了,不是特别熟悉,仅仅有接触。

--------

Part2:

基础的数值以及内容:

伪随机概率机制即:

通过程序的随机数判断玩家是否可以捕获鱼儿,计算方式有很多种了,我采用的是纯随机+生命值的算法

假设一只鱼儿的生命值是10(返奖金额=生命值10),子弹的伤害值为1,则捕获的概率=1/10=10%
(这是我使用的核心基础算法,所有的后期扩展都是在该基础上进行调整或者波动)

那么原则上,一条10分的鱼,10%概率捕获,返奖10,是一个返奖率为100%的标准模型
这样在基础算法有了的前提下,一个粗略的捕鱼环境就有了。有了1~10分的小鱼,10~50分的大鱼,50-100分的大鱼,那么捕鱼的基础生态就算完成了。

定义一下使用参数的名称:

鱼的生命值(HP)、炮台的伤害值(A);得 捕获概率公式= [公式]

金币获得(G)=(HP);

当G>HP时,即回报率>100%俗称放水——玩家体验就是打鱼好打了

当G<HP时,即回报率<100%俗称抽水——玩家体验就是打鱼难打了

以上回报率在100%左右时,实际体验中并没有什么变化,想要明显提升玩家打鱼的感受,还需要很多辅助功能去实现,为了保障系统的稳定性以及可观测性,我采用了单独模块去调控,而不是直接把回报率向上提升

(直接提高回报率:可以降低鱼分值,也可以调整玩家的子弹伤害,总体上需要可观测具体的投放值,来给自己的系统制作一套衡量标准,后续调整时也有一定的参考体系)


关于抽水的这个问题

1.我在设计捕鱼游戏时,并没有刻意引入这个观念,因为自从看过了永乐老师的“久赌无赢家”视频——》》久赌必输

2.做游戏,本身就是一个娱乐的过程,业内所采取的“抽水”“放水”需要精细化调整,粗狂的数值设计只会把这整体游戏体验变的更糟,所以在设计游戏时并没有引入这个概念

3.很多养猪杀猪式的游戏(或者不该称这些产品为游戏),前期会放许多水让玩家盈利,后期疯狂抽水,把玩家坑到不断付费的过程(有些菠菜游戏,请您放过捕鱼,这本身可以是一款可以有更多拓展内容的游戏题材)

根据以上相关了解后

我给自己的产品定位:在保持理论公平随机的情况下,增加玩家在游戏中的乐趣,通过丰富的玩法来加强随机数与玩家之间的博弈

这也是捕鱼游戏的炮台倍率扩张的由来:由1倍炮——>1万倍炮甚至更高,由于捕鱼游戏的核心货币是【金币】,游戏中通过子弹发射即发射【金币】,通过博弈来希望获得更多的金币以及体验游戏中各种特色鱼类玩法,所以通常炮台的倍率范围和游戏的货币体系是紧密联系的,游戏的货币价值直接会影响到游戏的【充值收入】,所以为了运营一款长久的捕鱼游戏,不建议大家采取疯狂贬值、充值赠送的模式,这样当系统里的玩家都是亿万富翁时,很难再去把控整体上贫富差距。

一款捕鱼游戏,我搭建的整体游戏模型是:

image


后面会陆陆续续介绍这些功能模块对应的玩家生命值周期成长,回到基本数值部分

1.上面第一部分介绍了我采用的基础捕鱼算法,这部分基础算法可以满足所有普通鱼的数值搭配,即大鱼和小鱼的区分仅仅是生命值和回报率的扩大化,通过不同的表现形式展示给玩家而已。

鱼的分值大小与玩家的回本周期存在一定关系,当鱼分整体偏高时,玩家所需要的金币数需要较多才能“保障”他可以捕获到鱼,反之鱼的分值越小,玩家所需要的金币数需要较少即可“保障”他可捕获到鱼

2.炮台的倍率同时也会在此基础上放大玩家所需要消耗的金币,所以在设计房间时,采取以上两个因素,决定房间的【倍率限制】【资产限制】——》【鱼的种类】,这样可以尽可能的让不同的房间区分开不同的“游戏感觉”

---------------------------------

Part3:

刷鱼的相关数值配置框架——》有了鱼:

随机拍脑门定义下列设计框架

【A类鱼:1~10生命值的鱼】【B类鱼:10~50生命值的鱼】【C类鱼:50-200生命值的鱼】

【D类鱼:200~1000生命值的鱼】

新手房间需要玩家保持一个良好的“盈利”体验,让玩家感觉鱼好打,所以在配置鱼的数值上;我采用的是【A高频】【B正常】【C低频】【D固定时间出现1个】

进阶房间的玩家已经对游戏有了一个基本的认识,这时候需要把玩家带入到一个小波动的状态下,我采用的是【A正常】【B高频】【C低频】【D固定时间出现1个】

高阶房间的玩家希望他能有较大的资产波动,这时候需要把玩家带入到一个大波动的状态下,我采用的是【A低频】【B正常】【C高频】【D固定时间出现1个】

顶级房间的玩家已经具有一定资产,这时候需要把玩家带入到类似于梭哈的状态下,我采用的是【A低频】【B低频】【C高频】【D出现频率较多】


注:实际在配置不同鱼出现的频率时,需要反复的亲自体验,去亲自观察打鱼时鱼的出现是否感觉良好。

根据上面所需要实现的玩家成长周期来看,房间的鱼是玩家主要的游戏内容,所以大部分玩法、功能、以及精力都需要放到鱼身上,这是玩家最直接、最有效能接触到的内容

搭配鱼的方案就比较通用了,大部分游戏如果是复刻的别人家的,一般不会在房间差异化以及鱼种上做过多的文章,但是如果想要经营一款长久的捕鱼,鱼是直接展示给玩家的第一要素,差异化、特色、新鲜感都需要从鱼身上来反馈给玩家,毕竟,玩家有新鲜的体验,即使输了,也会降低一些抱怨心理,谁家的捕鱼也不可能天天靠着放水玩家赢钱来留下玩家(这样还怎么挣钱呢?……)

后面我常会采用多模块来分散玩家“输”的感觉,主要的载体就是鱼,这样可以尽可能让玩家在游戏中后期不至于因为输而抱怨。(虽然不可能,还是有许多玩家骂的……)