页眉 Etherboy 是一个基于 Unity 的多平台 2D 游戏,使用 Loom Unity SDK与一个用 Golang 写的智能合约交互并运行在 Loom DApp 链上。

游戏控制

台式机 / WebGL

  • UP:进门、爬绳
  • DOWN:从绳索下来
  • E:与 NPC 交谈、在床上睡觉、与物品交互
  • 空间 / 右键单击: 跳
  • 左键单击: 攻击 (当装备了武器时)

支持的平台

  • WebGL
  • Android (WIP)
  • iOS (WIP)
  • Windows/Mac/Linux

开发

目前你需要在 MacOS 或 Linux 上启动 Loom DApp 链,但是如果你在用 Windows 10,你可以运行在Linux 的 Windows 子系统中的 Ubuntu(其他发行版本可能也可以,但是文档是写给 Ubuntu 的)。

MacOS

  1. 按照 MacOS 环境依赖 中的步骤安装 Golang (如果你尚未完成此操作)。
  2. 下载 Loom DApp 链二进制 bash wget https://private.delegatecall.com/loom/osx/stable/loom chmod +x loom export LOOM_BIN=pwd/loom

Linux

  1. 按照 Ubuntu 环境依赖 中的步骤安装 Golang (如果你尚未完成此操作)。
  2. 下载 Loom DApp 链二进制 bash curl -OL https://private.delegatecall.com/loom/linux/stable/loom chmod +x loom export LOOM_BIN=pwd/loom

部署 Etherboy 合同 (OSX/Linux)

从 Github 获取智能合约代码

export GOPATH=`pwd`/ebgopath
mkdir -p ebgopath/src/github.com/loomnetwork
cd ebgopath/src/github.com/loomnetwork
git clone https://github.com/loomnetwork/etherboy-core.git etherboy-core

构建和部署合约

cd etherboy-core
make deps
make
cd run
$LOOM_BIN init
cp ../genesis.json genesis.json
$LOOM_BIN run

假设一切到目前为止都很顺利,那么你现在有一个本地 Loom DApp 链在运行着 Etherboy 智能合约啦!

动画

构建 Unity 项目

从 Github 克隆 Etherboy 游戏 的 Unity 项目并修改

  • 在 Unity 中打开项目
  • 选择 File->Build Settings
  • 从平台列表中选择 Web GLPC, Mac & Linux Standalone
  • 如果启用了Switch Platform 请点击
  • 点击 Build, 选择生成输出目录

WebGL 完整游戏的生成需要大约 30 分钟完成。

运行游戏

桌面

启动在生成输出目录中生成的二进制文件。如果你在登录时有问题, 请确保在端口 9998 上没有运行任何内容。

WebGL

运行一个 http 服务器来为在localhost:8090的生成输出目录提供服务,并在你的网络浏览器中打开localhost:8090

如果你不知道如何设置本地 http 服务器, 请按照以下步骤执行。

brew install node
npm install http-server -g
cd path/to/webgl-build-dir
http-server -a localhost -p 8090

可选配置

如果你将本地 DApp 链配置为在其他主机或端口上运行,则需要在做WebGL 生成之前,更新以下Assets/WebGLTemplates/Loom/settings.js 的部分,或者你可以在生成之后编辑在生成输出目录中的settings.js

  dappchain: {
    writeUrl: 'http://localhost:46658/rpc',
    readUrl: 'http://localhost:46658/query'
  }

对于桌面生成,你需要编辑Assets/Resources/env_config.json 来更改默认的 DApp 链托管&端口:

{
  "write_host": "http://localhost:46658/rpc",
  "read_host": "http://localhost:46658/query"
}