事件

Construct 拥有一个出色的 GUI,使开发者能够以最少或无需编码的方式创建游戏。以下文档将回顾如何使用 Construct 的事件表将您的游戏连接到 Basement.fun。

关键组件

您需要向项目中添加一些对象,以使您的 Construct 游戏能够与 Basement.fun 平台互动。
要向项目中添加对象,请转到 布局视图,在布局中右键单击,选择 插入新对象,然后选择要插入项目的对象。添加对象后,它将在您的事件表中可用。

浏览器对象

浏览器对象使您能够写入控制台。它不是必需的,但在验证数据和调试代码时会很方便。

AJAX 对象

AJAX 对象使您的游戏能够与 B3 API 互动。
  • POST 请求 需要您为每个头参数创建单独的操作,并为所有正文参数创建一个 post 到 URL 的操作
  • GET 请求 需要您将所有需要的参数和值组合成单个 URL,以发送请求到 API
  • API 响应 可以使用 AJAX.LastData 引用

JSON 对象

JSON 对象使您的游戏能够处理 JSON 响应。您需要解析 JSON 字符串以使用响应数据。

示例事件

此示例事件将涵盖 BSMNT API 规范中详细描述的 POST 设置分数请求。

示例请求

1

创建函数

在事件表的任何地方右键单击,创建一个函数,并命名为 SetScore
2

设置服务方法头

点击添加操作,选择 AJAX,选择 设置请求头
  • 头字段X-Service-Method
  • 值字段setUserScore
3

设置授权头

再添加一个 AJAX 操作并再次选择 设置请求头
  • 头字段Authorization
  • 值字段Bearer <game secret>
<game secret> 替换为您实际的游戏密钥令牌。
4

配置 POST 请求

再添加一个 AJAX 操作,但这次选择 Post 到 URL。输入以下内容:
  • 标签setUserScore
  • URLhttps://api.basement.fun/launcher
  • 数据{"launcherJwt": "string", "nonce": "string", "score": 0}
  • 方法POST
这是一个示例请求 - 请确保将您的值替换为游戏中的事件设置的变量。

示例响应

示例响应将如下所示:
API 响应
{
    "success": true | false,
    "error"?: "error string",
    "newScore"?: {
        "_id": "unique id",
        "nonce": "nonce",
        "updatedAt": 23151264, // unix 时间戳
        "score": 100.235,
        "gameId": "game uuid",
        "normalizedAddress": "user lowercase address"
    }
}

检索数据

在 Construct 中,让我们从响应中检索 nonce,以便我们可以在稍后使用它来检索分数。
1

创建全局变量

在事件表的任何地方右键单击并添加一个名为 Nonce 的全局变量。
2

添加触发事件

添加一个由您的游戏触发的事件。示例:要在您的自行车与另一辆自行车相撞时捕获用户的分数,请向骑手添加一个 与另一个对象碰撞 条件,并将对象设置为骑手。
3

调用 SetScore 函数

添加操作,选择 函数,并选择 SetScore
4

解析 JSON 响应

添加一个 JSON 操作,选择 解析,并在 JSON 字符串字段中输入 AJAX.LastData
这将从我们的 SetScore 请求中获取响应。
5

提取 Nonce 值

添加一个 系统 操作,选择 设置值,选择 Nonce 变量,并输入 JSON.Get("newScore.nonce")
现在您的 Nonce 变量设置为 API 响应返回的 nonce 了!

完成集成

按照相同的步骤,您可以通过审查所有参数和响应为每个 API 端点创建事件。

可用的 API 端点

更新或设置用户的排行榜分数。端点POST /launcher
X-Service-Method: setUserScore
{
  "launcherJwt": "string",
  "nonce": "string", 
  "score": 0
}
检索用户当前的分数。端点GET /launcher
X-Service-Method: getUserScore
根据游戏事件触发链上动作。端点POST /launcher
X-Service-Method: triggerRulesEngine
{
  "launcherJwt": "string",
  "trigger": "string",
  "nonce": "string"
}

最佳实践

错误处理

始终检查 API 响应中的 success 字段,并优雅地处理错误。

变量管理

使用 Construct 的全局变量来存储重要数据,如 JWT 令牌和用户分数。

调试控制台

在开发过程中使用浏览器对象将重要信息记录到控制台。

API 速率限制

注意 API 速率限制,避免在短时间内发出过多请求。

下一步

故障排除

  • 确保您已将 AJAX 对象添加到项目中
  • 检查所有必需的头是否正确设置
  • 验证您的游戏密钥是否有效
  • 确保 API 端点 URL 正确
  • 确认 JSON 对象已添加到项目中
  • 检查 AJAX.LastData 是否包含有效的 JSON
  • 使用浏览器对象记录原始响应以进行调试
  • 验证您的启动器 JWT 令牌是否有效
  • 检查授权头是否正确格式化
  • 确保您的游戏密钥未过期