前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >明星游戏 FOMO3D 代码剖析 | 直播预告

明星游戏 FOMO3D 代码剖析 | 直播预告

作者头像
Henry Zhang
发布2019-04-12 17:49:26
8420
发布2019-04-12 17:49:26
举报
文章被收录于专栏:亨利笔记亨利笔记

本文转发自哈希1024社区。作者tyler将于9月12日周三晚进行网络直播,在线解析FoMo3D智能合约游戏的代码细节,机会难得,欢迎参加。参与方式见文末。

前段时间令人瞩目的明星游戏 FOMO3D,大家可能都有了解,也许一部分朋友也参与进去了,题图的游戏界面,大家感受下。

第一轮经过短暂的火热,之后处于近一个月的低迷,于8月22日下午三点左右终于结束,目前第二轮还在进行中。

第一轮游戏总共有约十万左右的用户参与游戏,总共投入约11万个 ETH,7月21日为参与高峰,约 12700 个用户参与,赢家获得一万多个 ETH,平台赚取约 3900 多个 ETH。

FOMO3D 游戏主要通过以太坊智能合约实现,核心代码不超过两千行,里面有很多精妙的设计,值得广大程序员学习,后续文章会陆续道来。

本文主要讲解 FOMO3D 游戏的规则,以及这个游戏的实现原理概览。(本文首发于哈希1024社区:hash1024.org )

FOMO3D游戏的规则:

1.游戏有个倒计时机制,初始值为 24 小时,倒计时为零时,一轮游戏结束。

2.用户可以购买 key,每购买一个 key 会增加 30 秒(注意:24小时是上限)

3. 每一个购买了 key 的玩家,都会因为后入场玩家的每一次购买而享受分红,具体分红函数后续文章会详细介绍。

4. key的价格也会依照一个递增函数 f 缓慢增加。

(普通读者可以忽略以下公式:

初始价格为 0.000075 ETH,

f(x) = (0.78125x^2+0.74999921875x*10^24)/10^28

下一个key的价格是f(keys+10^18)-f(keys),其中keys表示这一轮到目前为止的key的数量)

5. 当一轮游戏结束的时候,最后购买key的玩家就是赢家,将获得奖池里的48%的 ETH。(本文首发于哈希1024社区:hash1024.org )

6.轮次间有一小时的冻结期,这期间是不可以买key的(买不进去)

7. 在购买key的时候可以选择战队,有四个战队可供选择:Snek,Bull,Whale,Bear (本质上不同的战队意味着不同的利益分成方式,后面会有比较详细的讲解)

8.用户获得的分红可以继续复投(继续购买key)

下面介绍下,在一轮游戏还没有结束时,玩家买key花费的eth具体是怎么分配的。

Team

Pot

F3D Player

P3D Player

Snek

20%

56%

10%

Bull

35%

43%

8%

Whale

50%

30%

6%

Bear

43%

43%

0%

比如玩家购买时选择蛇队,意味着玩家 eth 的 20% 进入池底,56%按比例分配给之前的游戏玩家,10% 给 P3D 玩家(注:P3D 这家公司的另一款产品,实际上也是一个合约,具体参考这里);其他战队分红方式也是类似。

以上表格可以看出,无论选择哪队,86% 的 eth 被分配了,还有14%的奖池分配如下:

  • 10%分配给玩家的推荐者(若没有推荐者,则分给P3D玩家),
  • 2%分配给社区基金,
  • 1%给potswap,
  • 1%用于空投。

注:玩家会有一定概率获得 eth 空投奖励;F3DPlayer 的金额是在一个玩家购买key 后,严格按照每个玩家拥有 key 的比例立即进行分配,后续文章会讲解。

玩家购买一个 key 后,可通过 etherscan 查看改交易的分配情况:

一轮游戏结束后,奖池里的ETH具体分配情况:

Team

Next Round

F3D Player

P3D Player

Snek

10%

20%

20%

Bull

10%

30%

10%

Whale

25%

15%

10%

Bear

25%

25%

0%

注:48% 的奖池属于最后一个买 key 的人,2% 属于社区。剩下 50% 的奖池,比如 Snek 队的玩家赢得了胜利,10% 的奖金滚到下一轮,20% 的奖金按照持Key比例分给F3D玩家,20%的奖金分给P3D玩家。其他情况类似。

上面比较详细地介绍了 FOMO3D 的游戏规则,下面介绍基于上述规则的用例图。

说明:除了玩家的购买(复投)以及提现功能,还有一个注册功能,玩家可以注册一个自己喜爱的名字(会消耗 gas 哟),方便以后推荐别人时使用。

购买 key 时的功能图如下:

从上图可以看出,玩家购买key(包含复投),会触发时间更新,推荐人奖励,F3D 玩家分红,同时触发外部分配;在购买key的过程中,玩家有机会获得空投奖励;当轮次结束,同样会触发外部分配与内部分配。

游戏的实现概述

相关的逻辑大部分被封装在了 FoMo3D 智能合约里,这个合约同时又与外部的其他合约交互 ( PotSwap 合约, JIincForwarder 合约是这个公司负责转发的合约,其中包含社区的合约地址, P3D 合约是这家公司的另一款游戏合约)

下面是各个合约以及DAPP的交互图:

蓝色的DApp是前端应用,主要是用 web3 (js接口) 与区块链上的合约交互并把结果展示在浏览器。(本文首发于哈希1024社区:hash1024.org )

DApp 要从 FOMO3D 合约读取数据,包括每个玩家的买的 key 数量以及 earnings,还有游戏的全局数据,比如 key 的价格,剩余时间,各个战队的购买情况等等;同时 DApp 负责监听 FOMO3D 的事件,并作出相应响应;

DApp 还要与 FOMO3D, PlayerBook 交互进行地址/名字与后台的 playerId 的映射,方便后续的存储与引用;

F3DexternalSettings 合约负责游戏的时间间隔设置,主要是进行轮次间时间的设置,这个合约的代码没有开放 ( 可能是这部分代码是这家公司的公共设置模块,不愿意开源);

购买key时智能合约调用过程:

比如用户在 DApp 上点击购买 key,这是会由 DApp 触发 FOMO3D 合约的方法,FOMO3D 会与 PlayerBook 交互获取 PlayerId ,并执行内部核心的购买逻辑,同时会调用 P3D 合约,PotSwap 合约,JIincForwarder 合约进行相应比例金额的转账。

总结与直播预告:

本文介绍了 FOMO3D 游戏的详细规则及其概览实现,让读者对 FOMO3D 游戏整体结构有了初步的了解,为后续的系列文章做好准备。

后续文章会介绍 FOMO3D 游戏实现的巧妙之处,还会结合 FOMO3D 游戏的实现,讲解以太坊的合约编程与传统的编程思路的不同之处。相信通过学习这系列文章,无论是在智能合约编程还是区块链游戏开发方面,都会有很大收获!

(未完待续

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 亨利笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档