为了账号安全,请及时绑定邮箱和手机立即绑定

目录

手机
阅读

扫一扫 手机阅读

区块链游戏 ForeverBird 开发实战

原价 ¥ 49.90

立即订阅 ¥ 49.90
01 ForeverBird 项目介绍
作者:赛班码农 更新时间:2019-06-12 14:58:34
受苦的人,没有悲观的权利。

——尼采

本节主要从以下角度分析:

  • ForeverBird 是什么
  • ForeverBird 主要功能
  • ForeverBird 系统设计
  • 预备知识
  • 专栏重点及安排
  • 学习建议

ForeverBird url:http://106.12.201.58
ForeverBird 项目代码:foreverbird/course

ForeverBird是什么

  • ForeverBird 是基于以太坊的区块链养成类游戏,基于区块链的永久存在、不可篡改特性,每只鸟都永久存在不会消失。
  • 每只鸟拥有唯一的 token id,对应唯一的基因序列,可以保证用户拥有的鸟都是独一无二的。
  • 鸟的基因决定了各个部位的展示,每个部位都可以有特定的稀有属性,稀有属性个数决定了鸟的稀有度。
  • 鸟本身固有力量、速度和体重(单位:盎司)三个重要属性,经验值和等级两个指标。
  • 每周都会按照鸟的体重进行排序,前 20 名的鸟可以参与平台盈利分红,利用分红作为激励机制提高玩家的参与度。

ForeverBird 主要功能

首先 ForeverBird 首页中主要是游戏介绍和登录入口,首页界面如下图:

图片描述

用户管理

ForeverBird 使用 Web 端 MetaMask 钱包管理以太坊账户,MetaMask 管理以太坊账户私钥、以太坊账户、维护账户登录状态。

ForeverBird 用户管理模块需要做到以下几点:

  • 记录用户与以太坊账户的关系
  • 管理用户登录状态
  • 实时检测获取以太坊账户
  • 以太坊账户登录认证等

玩家如何登录系统
ForeverBird 是基于以太坊的游戏,目前只有 Web 版本。玩家需要创建以太坊账户,ForeverBird 使用 MetaMask 钱包进行以太坊账户管理。用户首次访问需要注册,注册之后就可以进入游戏。

玩家登录系统之后,就可以进入用户空间展示,如下图:

bird_space

捉鸟

玩家首次登录系统之后,初始状态是没有鸟的,用户可以选择消费 0.03eth 在森林中“捉鸟”,用户依据概率能够抓取到各个稀有等级的鸟。捉鸟操作调用智能合约之后,待以太坊打包确认之后,用户就真正拥有了区块链鸟。系统界面如下图:

bird_catch

鸟市

鸟市是玩家之间交易的场所,玩家可以在市场上挂牌要销售的鸟并设定价格,鸟可以按照时间、稀有度、价格等维度排序展示。鸟挂牌销售后会一直存在市场,除非卖家撤销销售。使用市场拍卖可以提高玩家参与度,直接使用以太币交易能够保证玩家的价值。系统界面如下图:

bird_market

吃水果

水果能够永久提高鸟的属性。为了保证游戏的公平性,限制每只鸟每天最多吃一个水果。

ForeverBird 中有三类水果:力量水果、速度水果、经验水果,鸟吃水果会提高相应的属性值,力量水果能够提高 5% 的力量,速度水果能够提高 5% 的速度,经验水果给与相应鸟 50 的经验值。经验值是鸟升级的唯一标准,每升一级,力量和速度都会增加 3%。

经验值与等级的对应关系如下:
经验增加到一定数值能够提高鸟的等级,等级的提高会增加鸟的力量、速度和体重。
每升一级,力量增加 3%,速度增加 3%,增加 100 体重。

  • 0~10 级:经验值增加 50 升一级。
  • 11~30 级:经验值增加 100 升一级。
  • 31~80 级:经验值增加 200 升一级。
  • 80 级以上:经验值增加 300 升一级。

吃水果界面展示如下图:

bird_fruit

鸟 PK

玩家可以选择其他玩家的鸟进行 PK,PK 会按照鸟的力量、速度、体重和随机因子进行计算,胜者可以获取失败者的体重(如果两者级别相差很大,胜者可能不会获取体重),但是胜者和失败者都会增加相应经验值。

以鸟 A 挑战鸟 B 为例,PK 的奖励如下表所示。

A 与 B 的等级差 PK 结果 体重 经验值
>10 A: +0
B: +0
A: +10
B: +10
>10 A: -5%
B: +5%
A: +10
B: +30
[0, 10] A: +3%
B: -3%
A: +20
B: +10
[0, 10] A: -3%
B: +3%
A: +10
B: +20
[-10, 0] A: +5%
B: -5%
A: +30
B: +10
[-10, 0] A: =3%
B: +3%
A: +10
B: +30
<-10 A: +5%
B: -5%
A: +50
B: +10
<-10 A: +0%
B: -0%
A: +10
B: +10

鸟 PK 的界面展示如下图:

bird_pk

排行榜

排行榜是一个全局的排名列表,按照鸟的重量进行排序,如果重量相同则按照 id 排序。排行榜界面如下图:

bird_rank

分红榜

为了提高用户积极性、参与度,系统添加激励机制。激励目前采用用户参与分红形式。分红的详细规则如下:

  • 分红的比重:平台周盈利的30%
  • 分红的周期:每周分红(北京时间:周一凌晨 00:00~周末 24:00)
  • 统计结算时间:每周末 24:00
  • 排名方式:按照鸟的体重,如果体重相同,按照 id 升序排序(创建时间越早优先级越高)。
  • 奖励总数:排名前 20 名。
  • 奖励比例:
    • 第一名:奖励金 * 20%
    • 第二名:奖励金 * 15%
    • 第三名:奖励金 * 10%
    • 第4~10名:奖励金 * 5%
    • 第11~20名:奖励金 * 2%

吃水果界面展示如下图:

bird_profit

ForeverBird 系统设计

系统架构设计

基于以太坊的区块链游戏有以下几点不同于传统的服务器:

  • 业务逻辑:以太坊类似一个服务器,智能合约处理关键逻辑
  • 数据存储:玩家的数据都存于以太坊区块链的 storage 或者 log 中
  • 用户管理:以太坊钱包管理用户私钥和用户登录状态
  • 网络传输:需要使用 RPC 连接一个接入以太坊公网的节点
  • 数据同步:以太坊智能合约执行是一个异步过程,为了加速用户访问,业务服务器用于缓存智能合约执行后数据,因此需要区块链数据与本地数据同步

根据以上问题,我们设计 ForeverBird 架构的时候,采用以下策略:

  • 以太坊作为 ForeverBird 的业务后台,智能合约处理所有玩家与鸟的写与更新操作,提供便于查询的读接口
  • 使用单一账户体系,即 MetaMask 钱包作为用户管理子模块,维护以太坊地址和登录账户信息;业务后台服务器维护账户 session
  • Web 端使用 web3.js 库访问以太坊
  • 业务服务器用于缓存用户数据,加快访问速度
  • 创建服务端 task 任务,用于同步以太坊数据

ForeverBird 系统架构如下图:

architecture_diagram

以太坊智能合约

智能合约:实现语言 Solidity,智能合约主要包含存储和逻辑两部分。
ForeverBird 的智能合约提供了鸟的生成、交易、吃水果、PK 等更改合约存储的接口,同时提供了鸟和用户查询接口。

ForeverBird 的智能合约存储各只鸟的 token id、基因、生日、体重、力量、经验、等级详细信息,以及用户和鸟的对应关系;智能合约中的 event 会存储为 log,利用 event 判断逻辑是否执行成功。

逻辑包括鸟基因生成、鸟转移、PK、吃水果等改变状态的接口,获取鸟的基本信息、获取用户的鸟信息的查询接口。

业务后台

ForeverBird 的业务后台使用 Go 语言实现,主要提供查询接口。通过数据库缓存以太链智能合约执行的结果,业务后台根据用户的请求,查询数据库然后返回结果给前端。Web 直接访问以太坊获取交易数据具有耗时、复杂数据处理困难的问题,利用业务后台能够后台处理复杂的业务逻辑,快速响应用户需求。

后台task

以太链所有的交易都必须等待矿工打包确认,此过程是一个耗时的异步操作。task 任务用于查询智能合约执行结果,处理之后存储于数据库中。task 会创建和更新数据库数据,保证以太坊区块链与业务后台的数据一致。ForeverBird 的后台task定时任务采用 Node.js 实现,后面所有章节描述业务 task 定时任务都简称为task任务。

其他考虑

  • 用户登录认证。首先需要保证 Web 实时获取 MetaMask 地址,其次用户登录时要保证登录用户真实性、传输安全性、数据完整性等。
  • 数据传输安全性。为了保证数据传输的安全性,用户访问业务系统应首先获取一个签名,然后智能合约对签名进行校验,只有校验通过才能够继续访问。
  • 鸟的状态。鸟对应的操作具有异步性和限制性,为了保证智能合约与玩家行为一致性(即玩家的操作依赖于当前最新的鸟执行结果),ForeverBird 使用鸟的状态限制鸟的操作,保证操作的正确执行。鸟的 状态变化如下图:

bird_state
智能合约执行之后需要进行打包、确认,使用状态可以保证鸟操作调用正确性,比如玩家捕获鸟,玩家在调用智能合约成功之后,把合约返回的 hash 通知业务服务器,业务服务器创建一个状态为 init 的鸟,处于init状态的鸟不能执行任何其他操作;当交易打包确认之后,鸟的状态改为 normal 状态,此时表明鸟已经确认归玩家所有,玩家可以执行交易、吃水果或者 PK 操作。

预备知识

ForeverBird 是一个基于区块链的 Web 游戏,会涉及前后端编程,虽然涉及范围广,但是各个知识点要求不是很高,适合有一些基础的初学者或爱好者。开发学习之前需要大家具备以下基础:

  • 有一定编程基础
  • 了解 JavaScript 语法,实例中前端使用了 React 框架。相关学习资料请参考 React
  • 基本 Node.js 服务开发,业务后台的 task 使用了 Node.js 实现
  • 基本 Go 语法,业务逻辑服务使用了 Go 实现

专栏重点及安排

专栏目的是通过讲解 ForeverBird 系统实现,希望大家掌握以下知识:

  • 什么是区块链、以太坊
  • 智能合约编写
  • 掌握区块链应用设计思想
  • 能够独自开发区块链应用
  • 了解智能合约安全和调试技术

学习建议

  • 学习时阅读专栏推荐的链接资料
  • 阅读时同步编程,实现系统才能发现一些细节问题
  • 学习时多思考,当前实现有什么限制,有没有更优的实现方案等
}
立即订阅 ¥ 49.90

你正在阅读课程试读内容,订阅后解锁课程全部内容

区块链游戏 ForeverBird 开发实战
立即订阅 ¥ 49.90

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信