使用Python脚本玩转类FOMO3D游戏

使用Python脚本玩转类FOMO3D游戏

前言

笔者其实编程水平并不高,也是半路出家的半吊子,第一次在CSDN上发帖,如果在技术上有什么不成熟的地方请各位大佬能够指教一下。
另外,本文只探究技术,并不鼓励大家把大量的经历投入到这类游戏上。

1.什么是FOMO3D

FOMO3D本身是个区块链游戏,至于什么游戏类型,我不知道该怎么定义,可以说这个游戏本身就创造了一种游戏类型,大家可以参考一下百度上的搜索结果。

游戏的规则很简单,玩家购买key投入到四种不同的动物上,没买一把key,key的价格都会上涨,而每买一把key,结束时间都会延迟30s。知道最后没人买了,这个游戏就会结束,最后的购买者及其所在团队会被判定为胜利者,并按照团队的分红模式进行分红。
在这里插入图片描述
虽说ETH的价格已经跌了很多,但笔者并没有那么多的ETH,做实验嘛,还是挑便宜的币做实验来的好。
所以,笔者决定在币价比较低的FOMO类游戏平台开始测试。
入口在FUNMVP
在这里插入图片描述
FUNMVP这个网站是在一个区块链的投资群里看到的,不过笔者注意到这里的人大部分都是投资人不是做技术的,所以大体猜测了一下,如果这些人参与这个游戏,他们大部分应该都是手工操作的,那么我使用脚本和他们跑,也许时间会久一些,但只要策略对,我耗得过他们。(事实上经过观察,他们确实在手动玩)

2.规则分析

既然决定要写脚本,那一定要先研究规则,不明白规则就瞎操作肯定是要跪的。
在这里插入图片描述
从规则上我们可以看出,每个奖金池的前5%总是有稳定的回报,既然如此我们可以得出结论,每个动物的第一把key是稳赚不赔的,而如果我们能预估出每局每个动物会被投入多少key,那么我们就可以知道,我们在前面有多少把key时可以获得稳定的收益。
而每个奖池的分配规则并不一样,其中买马的话如果赢得最后一把key奖励是最高的,实际上来看,马也确实很受欢迎,不过问题来了,虽然说如果最后获胜,马的奖励很高,但买马的人都是冲着成为最后赢家去的,其存在非常严重的内部竞争。每个玩家都是各自为战,无论现在的持有人是不是买的马,自己都要竞争下来,不然是赚不到的。
与马相对应的是牛,买牛的玩家会在没有交互的情况下默契的形成一个团体。这个团体出现内部竞争的情况比较小,买牛的玩家只要确认最后的买入者是牛就不会轻易的去内部竞争,所以说牛的买入者的key大部分时间都是在对抗其他三个团队,而他们本身是一个整体,比其他任何团队的资源利用效率都高。不过,牛这个团队本身也会因为机制的原因存在一个重大问题,牛的团队虽然没有太多内部竞争,但也缺少内部激励。随着游戏的进行,key价会越来越贵,牛的早期投入者会在后期竞争中非常上心,因为投的早,赢的话回报率高,而投的晚且在key价的时候没投入,那买马要比买牛划算的多。所以说牛这个团队在会渐渐的失去吸引新人的能力,团队参与者会逐渐固化。如果奖金池越来越大,没有新人站队,这个团队的后劲将会越来越不足。

总的来说,马和牛代表着两个不同的极端,而鱼和狗则在其中寻找着平衡。

3.检测端口

在这里插入图片描述
在了解规则后我们就要从游戏的接口进行一下探索。在其中笔者发现了一个名为"querygameinfo"的接口,从这个接口我们可以获取到本轮游戏的结束时间、现在的总奖池金额、游戏轮数、key的单价、最终key的持有者昵称以及各个动物的奖池的总金额。

那么我们现在遇到了第一个问题一共有多少把key投入到了游戏当中?由于key的价格是按照固定比率递增的,所以总奖金池是一个等比数列累加的结果。
在这里插入图片描述
在这里,a1就是数列最开始的值,也就是1,而规则中已经说明增幅为0.008%,那么q应该为1.00008,Sn已知,q已知,那么n(key的总数)可求。
不过我们知道key的总数还是不够的,因为除非从一开始就进行监控否则我们无法知道每个奖池的具体情况。
但是,我们可以大体估算一下。我估算的方式是:
动物的key投入=(动物奖金池/总奖金池)(key的总数)
当然还有一种估算方式是:
动物的key投入=动物奖金池/((1+现在key的价格)/2)
当然这两个方式都不是特别精确,所以我们求出的5%的安全位置最好保守一点:
前百分五=int(动物的key投入
0.05*0.9)
在假设新的一局的战况和上一局近似的情况下,我们可以大体找出前5%大概是多少把key,这样我们大概可以知道在每个奖池达到多少前可以入手。
在这种情况下,如果我们不争夺最后一把key的话,那么我们可以大体找到比较合适的投入时机。

好了,如果说我们要和别人争夺最后一把key我们该怎么办呢?
首先,如果你的资源特别特别特别多,其实买哪一个都一样,试想一下,一个池子里超过90%的key都是你投的,赢了就差不多是全赢了。
但如果你钱不多的话,我建议先进行一个记录。
在这里插入图片描述
我们先看一下从"querygameinfo"的接口中我们应该关注并记录哪些数据。
在这里我们应该优先关注的就是"LastNickName"这个字段和"LastTeamName"。把这两个字段的内容加上时间戳一同记录到数据库,这样我们可以大概了解有玩家比较活跃(其实就是看看和我们争夺最后一把key的对手有哪些)而我们的资源足够打败几个。通常情况下,我会倾向调取数据库中最后20个买入记录,当这20个买入记录中只有2~3个名字出现时,就意味着我们可以入手了,对手少了那我们就可以的竞争成本就小了。但我们的监控不能停,当除了自己外其他的参与者超过了3个我们要立刻退出。永远记住,我们玩的是“绝地求生”不是“魔兽世界”,我们要保存实力活到最后而不是打怪升级然后干翻全场。(虽然后者也能赢但代价太大了)

4.如何用实现登录

很抱

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值