# 游戏

游戏合约使您能够在您或其他人部署的游戏周围实施玩游戏赚取的机制。

以下是创建您自己的游戏的逐步指南：

## 创建您的游戏

* 前往[游戏页面](https://payswap.org/games)，然后点击 **Create Game** 按钮

<figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-2a3fc485d4b36c7a6e6d34375dda04c65f247cb2%2Fgame.png?alt=media" alt=""><figcaption></figcaption></figure>

* 填写弹出的表单并验证交易。这将创建您的游戏。如果您计划使用 API 处理您的用户分数，则应将游戏合约地址变量设置为 PaySwap 的主地址（拥有 [CanCan 频道 1](https://payswap.org/cancan/collections/1) 的地址）。

<figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-e5112fa7ebc370dcff133457c9fca93e2e3caebd%2Fgame2.png?alt=media" alt=""><figcaption></figcaption></figure>

* 勾选 **Mine Only** 按钮，只列出您的游戏，以便更快地找到您刚刚创建的游戏。如果找不到您的游戏，请重新加载页面并重试。

<figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-223078f700945a55776947d2e793d2bc7bd61c1f%2Fgame3.png?alt=media" alt=""><figcaption></figcaption></figure>

## 设置您的游戏

* 下一步是更新您的游戏合约。在您的投注合约面板中点击 **Control Panel** 按钮，然后点击 **Update Game** 按钮。使用适当的值填写表单，并验证交易

<div><figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-2f260a43732a3e1735a0b505a16413f8840afa81%2Fgame4.png?alt=media" alt=""><figcaption></figcaption></figure> <figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-c6e30048f4b446ae57fb22c15b2f18da9c69b63a%2Fgame5.png?alt=media" alt=""><figcaption></figcaption></figure></div>

* 在接下来的步骤中，您需要更新游戏链接，以便用户可以玩游戏。在您的控制面板菜单中，点击 **Update Info** 按钮，并使用适当的值填写表单中的每个字段。将鼠标悬停在每个参数旁边的帮助图标上，以阅读参数的描述。验证表单并确认交易。

<div><figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-2f260a43732a3e1735a0b505a16413f8840afa81%2Fgame4.png?alt=media" alt=""><figcaption></figcaption></figure> <figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-663cb4d407e8614dda788aec0edcc285ee7130c8%2FScreenshot%20from%202024-01-24%2023-05-46.png?alt=media" alt=""><figcaption></figcaption></figure></div>

PaySwap 使用游戏 API 链接从令牌 ID 获取分数，因此用户可以在区块链上更新他们的分数。

## 如何玩

以下是玩游戏的逐步指南：

* 首先，您需要购买足够的分钟数才能玩游戏。例如，如果您购买了 30 分钟，则有 30 分钟的时间在游戏网站上获得并提交分数。在此之后提交的任何分数都不符合游戏奖励的条件。
* 要购买分钟数，请转到您游戏的面板，并点击 **View Game** 按钮以进入游戏页面。点击 **Mint new ticket** 按钮，并验证交易以铸造游戏 NFT，这是玩游戏并索取奖励所必需的

<figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-99d4a1b49f2448d49e60cf8f0ce86c87077e086c%2Fgame7.png?alt=media" alt=""><figcaption></figcaption></figure>

* 铸造您的游戏 NFT 后，您游戏页面上的最后一行应该从 You have 0 tickets 变为 You have 1 ticket(s)，后跟您的票证 ID 列表。请记住您的票证 ID，因为您在与游戏交互的大多数情况下都会需要它。在下面的图像中，我们的票证 ID 是 2

<figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-d8431e38bd3a9dfb727237f4178837ca74802684%2Fgame9.png?alt=media" alt=""><figcaption></figcaption></figure>

* 我们现在可以在游戏中购买分钟数，让我们购买 30 分钟。为此，点击 **Play to Win** 按钮，进入下图所示的表单。使用足够的代币填写表单以购买您愿意购买的分钟数，并验证交易。

<figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-d7eba8340822b19b738506e759b74392dc822d29%2Fgame10.png?alt=media" alt=""><figcaption></figcaption></figure>

* 我们输入了我们的游戏 NFT ID，即 2，以及足以购买 30 分钟游戏时间的代币。随着您更改要发送的代币数量，“Buy XX Minutes” 文本也会更改
* 我们现在可以玩游戏了，在游戏页面的顶部，您可以看到一个 **Play Game** 按钮。点击它以在窗口中启动游戏

<figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-d8431e38bd3a9dfb727237f4178837ca74802684%2Fgame9.png?alt=media" alt=""><figcaption></figcaption></figure>

* 您可以在弹出窗口中玩游戏，或者点击弹出窗口顶部的链接以在新窗口中打开游戏

<figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-276386e6db609ef9930fd9416fa76bfb84fdf1d3%2Fgame11.png?alt=media" alt=""><figcaption></figcaption></figure>

* 一旦您获得满意的分数，如下图所示，输入您的游戏 NFT ID，并在游戏页面上点击提交按钮

<figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-b62faae94c92c543a253698a98b46a0497c0112e%2Fgame12%20(1).png?alt=media" alt=""><figcaption></figcaption></figure>

* 如上图所示，一旦我们在购买的 30 分钟内获得了我们可以获得的最佳分数，我们将我们的游戏 NFT ID 2输入到游戏页面上的相应字段中并提交它。我们可以一直玩到 30 分钟到期，如果我们能够获得更高的分数，我们也会提交它以替换之前的分数。
* 您可以通过在游戏页面上输入您的游戏 NFT ID 来找出您的分钟何时到期。在下面的示例中，我们在 19:12（下午 7:12）购买了我们的分钟数，因此我们的分钟数将在 19:42（下午 7:42）到期；这意味着我们可以尝试直到那个时候来获得更好的分数，每次都提交得分以确保安全。

<figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-783eb100cef6315f7290705e2f3a29ebf7078dbe%2Fgame13.png?alt=media" alt=""><figcaption></figcaption></figure>

* 在我们的分钟数到期后，我们可以等待正确的时机来处理我们的分数，或者我们可以立即处理它。游戏合约会将从购买分钟数中收集的代币累积起来，并根据用户的分数计算用户的赢利。\
  对于我们当前的情况，我们游戏的奖池是 3 美元，您可以从游戏页面上查看到

<figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-485052497b691598685ad0c9a4354e0917d43ca4%2Fgame14.png?alt=media" alt=""><figcaption></figcaption></figure>

假设我们的奖池是 1000 美元，并且游戏中用户获得的分数总和为 8000。我们从玩游戏中获得了 800 分数，那么我们的赢利将如下计算：1000 \* 800 / 8000 = 100 美元

如果我们在游戏中获得的总分数为 5000，奖池为 800 美元，我们将获得：800 \* 800 / 5000 = 128

因此，决定何时索取您的奖励是一个战略决定，您想要在奖池不太高但奖池高的时候索取更大的份额，还是在奖池更大但新玩家能够提高游戏平均分数的时候索取较小的份额。

## 如何索取您的奖励

* 前往[游戏页面](https://payswap.org/games)，找到您的游戏
* 转到您游戏的控制面板菜单，然后点击 **Process Score** 按钮。您无法填写表单；您只需要验证交易，以便将先前在游戏中获得的分数写入游戏合约。PaySwap 将从游戏的 API 查询您的分数，并填写表单，以便您验证它。

<div><figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-73b7dca0586d6f31de45c39e23578c17daf794ca%2Fgame15.png?alt=media" alt=""><figcaption></figcaption></figure> <figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-17e66b56d09b95fa3281781c2c997c0f33c3d07b%2FScreenshot%20from%202024-01-24%2023-34-04.png?alt=media" alt=""><figcaption></figcaption></figure></div>

* 您应该能够看到游戏的总分数已更新为您的分数。接下来的步骤是点击控制面板菜单中的 **Claim Rewards** 按钮。验证交易以领取您的奖励并将您的收益转入您的钱包。\
  您可以立即索取您的奖励，也可以稍等一会，等待奖池随着更多玩家加入游戏并购买分钟而变得更大。奖池越大，您可以赢得的金额越多，但这有点棘手，因为如果新玩家能够提高游戏的平均分数，可能会减少您的总收益份额。\
  您基本上需要选择合适的时间来索取您的奖励，您会在一个较小的奖池中索取更大的份额，还是在一个较大的奖池中索取较小的份额？

## 如何将每个游戏变成玩赚游戏

* 在游戏网站上添加一个表单，使用户能够更新他们的分数。在下面的示例图像中，用户可以输入他们的游戏令牌 ID，并在他们满意时点击保存分数按钮，游戏将把他们的分数（保存为 **score**）以及分数注册的时间（保存为 **deadline**）和用户开始玩游戏的时间（保存为 **startime**）保存在 Firebase 数据库中（您可以使用任何您想要的数据库）。

\
确保您的游戏跟踪用户开始玩游戏的时间（**startime**）这个参数非常重要，以确保用户只能为他们已购买的游戏分钟注册分数。没有它，用户可以花费几个小时最大化某个游戏的分数，然后在 PaySwap 的游戏页面上购买 1 分钟，并将其用于注册分数。有了 **startime** 参数，我们将能够检测到购买的分钟数和实际游戏时间之间的差异。

<figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-82ec47f39662a339a150a951e526904a60642271%2FScreenshot%20from%202024-01-24%2023-10-20.png?alt=media" alt=""><figcaption></figcaption></figure>

* 部署游戏合约，按照上述步骤进行操作，并确保您使用返回您用户分数和截止时间的 API 链接更新游戏信息
* 对于我们的马里奥游戏，我们的 API 链接是：\
  [https://firestore.googleapis.com/v1/projects/tiktok-a2bdb/databases/(default)/documents/c4/](https://firestore.googleapis.com/v1/projects/tiktok-a2bdb/databases/\(default\)/documents/c4/1)
* 这就是我们将要更新我们的游戏的内容。为了获取令牌 ID ＃1 的分数和截止时间，PaySwap 只需将令牌 ID ＃1 填充到我们注册的 API 链接中，如下所示\
  <https://firestore.googleapis.com/v1/projects/tiktok-a2bdb/databases/(default)/documents/c4/1>\
  PaySwap 只是将用户的令牌 ID 填充到您的 API 链接，因此请确保您保存的 API 链接具有尾随斜杠（/）\
  查询此端点将返回注册给其所有者的令牌 ID 1 的分数和截止时间，格式如上所示。确保 **startime** 和 **deadline** 参数以秒为单位保存，而不是毫秒

<figure><img src="https://1537385970-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MmAKM1uBRsaHufNf3DD%2Fuploads%2Fgit-blob-9cad9c9dbc065f4bf4a16f759a84bf1255b953f6%2F1.png?alt=media" alt=""><figcaption></figcaption></figure>

只要您的 API 遵循上述格式并返回格式的对象，系统应该可以毫无问题地在区块链上更新您用户的分数信息，这是他们赚取奖励所必需的步骤。

祝贺您，您的游戏现在具有了玩赚组件！您的用户现在可以：

* 从[游戏页面](https://payswap.org/games)查看您的游戏
* 在其中购买足够的分钟数以便他们做出最佳分数
* 更新他们的分数到您的中心化数据库
* 使用您提供的 API 通过 PaySwap 平台将其分数报告到区块链
* 如果他们的分数足够高，那么索取他们的收入

[在此处获取社区的进一步支持。](https://paychat.payswap.org/#/room/%23paycom%3Amatrix.org?via=matrix.org)
