WAX区块链NFT游戏开发教程【Phaser】

WAX是 eos 兼容区块链,由于其交易速度快、免手续费、完善的智能合约 支持等特性,特别适合区块链NFT游戏的开发。在这个教程中,我们将学习如何利用 Phaser开发一个基于WAX区块链的NFT小游戏。如果你是PHP开发者,可以利用 这个PHP开发包访问WAX区块链。

快速上手WAX/EOS区块链游戏开发: EOS DApp开发入门 | 玩转EOS钱包开发 | EOS PHP开发包 | Phaser入门

WAX区块链与 eos 兼容,尽管它被列为 WAXP,但其通证代码是 WAX 。WAX 区块链的一些最值得注意的功能是:

  • 低排放生态区块链(PoS)。
  • 智能合约编程:可以用 C++ 语言开发智能合约。
  • 可交易通证(NFT 和 FT)的创建和管理。
  • 完整的 JavaScript 支持。
  • WAX通证在主流交易所(火币、Bittrex、Kucoin 等)上架。
  • 免费交易。
  • 交易速度快。

这些功能使 WAX区块链成为基于资产集合或视频游戏开发项目的理想生态系统。 如果你还不熟悉EOS/WAX区块链,可以利用这个EOS应用开发教程 快速入门。

1、关于Phaser

Phaser 是一个用于 HTML5 游戏开发的免费开源框架。这个Phaser教程 提供了在线练习环境,可以帮助你快速入门Phser游戏开发。

Phaser的一些特点如下:

  • 支持JavaScript 和 TypeScript 语言。
  • 庞大的函数库。
  • 大量的文档和示例。
  • 庞大的用户社区。
  • 可以使用套接字开发客户端游戏以及客户端/服务器游戏。

2、关于UAL库

Universal Authenticator Library (UAL) 提供了一个通用接口,用于从任何为 UAL 开发扩展的 WAX 钱包进行帐户身份验证 和交易签名。可以访问这里查看UAL源码。

EOS/WAX一些可以使用的钱包:

  • Anchor
  • WAX 云钱包。
  • Scatter钱包

利用UAL库,用户将能够从他们最喜欢的钱包登录 JavaScrip 应用程序,并能够在 WAX 区块链上签署交易。

3、UAL-Phaser 集成

在本文中,我将尝试解释 UAL 如何与 Phaser 中的游戏代码连接。可以在这个链接下载 Phaser + UAL 模板。

UAL 有一个 HTML 按钮,负责根据加载的库加载带有可能选项的登录窗口。此按钮必须被覆盖。相反,我们将使用我们设置的外观从 Phaser 画布创建一个交互式按钮。

当 UAL 被调用以登录或签署交易时,它会在我们游戏的 HTML 模板中准备的DIV块的主体中​​创建一个窗口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
.ual-button-gen {
display: none;
}
</style>
</head>
<body>
<div id="ual-div"></div>
</body>
</html>

在 Phaser 中游戏登录场景的 create 方法中,我们将创建 UAL 对象并将其与DIV元素和将在登录过程完成时运行 的一个回调函数相关联。

我们添加用于登录的按钮将通过模拟隐藏的 UAL 对象的按钮上的单击事件来做出反应。这将出发 UAL 对象的 CALLBACK 函数执行。

回调函数将加载游戏中的下一个场景并将用户对象作为参数发送给与钱包的所有其他交互。

4、与钱包的互动

我们可以在区块链上执行读取或写入操作。对于区块链数据读取操作,不需要 UAL 或登录用户会话。eosjs库允许我们创建 与公共 API 服务的连接,该服务允许我们执行存储智能合约的表的读取操作,就好像它是一个数据库。

模板示例代码展示了如何使用用户的帐户名读取用户的信息:

1
2
3
4
5
6
async function readFunds(user)
const account ? await rpc.get_account(user);
if (account.account_name undefined)
throw Error("Reading error!");
return account.core_liquid_balance;
}

需要注意的是,区块链上的读/写操作是异步的。

实际上,不可能在区块链上执行写操作。相反,我们将做的是调用智能合约的操作,这些操作将写入或修改其表中的信息。

智能合约的所有call-to-action操作都需要用户通过钱包进行签名。

在示例中,我们支付了 1 个 WAX通证来开始游戏。这意味着一笔通证合约的交易,即用户的通证余额将减少 1 个单位, 而收到通证的账户余额将增加 1 个单位。作为数据修改操作,我们必须调用执行该操作的智能合约的操作,并且我们必须签署 操作以确保我们是要转移的通证的合法所有者。

WAX通证管理的智能合约名称为 eosio.token ,调用的动作将是transfer 。对于此操作,我们需要将源帐户的名称、目标帐户、我们 要发送的通证数量以及可选文本(例如主题或备忘录)作为参数传递。

此操作需要使用要发送的通证所有者的活动密钥进行签名。

要调用操作并使用在登录过程中选择的钱包对其进行签名,UAL 为我们提供了 signTransaction 方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
await SceneA.loggedInuser.signTransaction(
{
actions: [ .
account: "eosio.token",
name: "transfer",
authorization: [ .
actor: SceneA.nameUser,
permission: "active";
}],
data:
from: SceneA.nameUser,
to: "3dkrenderwax",
quantity: "1.00000000 WAX",
memo: "This works!";
}
}]
},
{
blocksBehind: 3,
expireSeconds: 30
}
);

如果交易成功完成,我们可以继续游戏逻辑。

由于表格读取操作和智能合约操作调用,我们可以知道玩家的通证余额并促进玩家和游戏账户之间的交易。

如果我们想从游戏向玩家进行交易,我们必须从服务器端进行,以免暴露游戏账户的私钥。

5、WAX测试链

在开始在区块链上开发游戏之前,建议在测试区块链(Testnet)上进行练习。为了让我们的应用程序与一个或另一个区块链 进行通信,我们必须指明 API 服务器的 URL,我们将通过该 URL 与该区块链进行通信。有几个公共服务器可用。 可以先使用sdkrender的测试服务器进行测试:

  • 测试网:https://testnet-wax.3dkrender.com
  • 主网:https://apiwax.3dkrender.com

要在测试网区块链上创建测试账户,可以使用 Guild Waxsweeden 提供的测试链服务


原文链接:Develop games for WAX Blockchain with Phaser

汇智网翻译整理,转载请标明出处