3D相册代码明星游戏FOMO3D代码剖析|直播预告

本文转发自哈希1024社区。作者tyler将于9月12日周三晚进行网络直播,在线解析FoMo3D智能合约游戏的代码细节,机会难得,欢迎参加。参与方式见文末。 前段时间令人瞩目的明星游戏 FOMO3D,大家可能都有了解,也许一部分朋友也参与进
原标题:明星游戏FOMO3D代码剖析|直播预告本文转发自哈希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.000075ETH,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具体是怎么分配的。TeamPotF3DPlayerP3DPlayerSnek20%56%10%Bull35%43%8%Whale50%30%6%Bear43%43%0%比如玩家购买时选择蛇队,意味着玩家eth的20%进入池底,56%按比例分配给之前的游戏玩家,10%给P3D玩家(注:P3D这家公司的另一款产品,实际上也是一个合约,具体参考这里);其他战队分红方式也是类似。以上表格可以看出,无论选择哪队,86%的eth被分配了,还有14%的奖池分配如下:10%分配给玩家的推荐者(若没有推荐者,则分给P3D玩家),2%分配给社区基金,1%给potswap,1%用于空投。注:玩家会有一定概率获得eth空投奖励;F3DPlayer的金额是在一个玩家购买key后,严格按照每个玩家拥有key的比例立即进行分配,后续文章会讲解。玩家购买一个key后,可通过etherscan查看改交易的分配情况:一轮游戏结束后,奖池里的ETH具体分配情况:TeamNextRoundF3DPlayerP3DPlayerSnek10%20%20%Bull10%30%10%Whale25%15%10%Bear25%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游戏的实现,讲解以太坊的合约编程与传统的编程思路的不同之处。相信通过学习这系列文章,无论是在智能合约编程还是区块链游戏开发方面,都会有很大收获!(未完待续)作者简介:tyler,程序猿,就职于镍磐科技,哈希1024社区专栏作者,近十年开发经验,干过传统金融,继而转战互联网金融,现在从事区块链研究与开发工作,2012年开始关注比特币,并对区块链产生了浓厚兴趣。希望和大家共同学习区块链,多多交流。哈希夜话直播活动预告:我们将在9月12日周三晚举行在线哈希夜话直播活动,本次主题为FoMo3D游戏智能合约剖析,希望参加直播的读者先加入哈希1024社区微信群,直播信息将在群里通知。名额有限,请尽快报名。报名方式:哈希1024社区,在后台回复“哈希”即可。责任编辑:

本文来自投稿,不代表长河网立场,转载请注明出处: http://www.changhe99.com/a/XJwQbODedE.html

(0)

相关推荐