---
metadata:
  - name: generator
    content: Diplodoc Platform v5.66.0
alternate:
  - https://yandex.com/dev/games/doc/en/sdk/construct-3/multiplayer.md
  - https://yandex.com/dev/games/doc/ru/sdk/construct-3/multiplayer.md
  - https://yandex.com/dev/games/doc/tr/sdk/construct-3/multiplayer.md
  - https://yandex.com/dev/games/doc/zh/sdk/construct-3/multiplayer.md
  - href: https://yandex.com/dev/games/doc/zh/sdk/construct-3/multiplayer.md
    type: text/markdown
    title: Markdown version
  - href: https://yandex.com/dev/games/doc/zh/llms.txt?revision=r21993288
    rel: describedby
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/dev/games/doc/zh/llms.txt?revision=r21993288

# 异步多人游戏

<!-- source: zh/_includes/script-common.md -->
<!-- source: zh/_includes/script/index-js.md -->

<!-- endsource: zh/_includes/script/index-js.md -->

<!-- source: zh/_includes/script/requirements-js.md -->

<!-- endsource: zh/_includes/script/requirements-js.md -->

<!-- source: zh/_includes/script/image-modal-js.md -->

<!-- endsource: zh/_includes/script/image-modal-js.md -->
<!-- endsource: zh/_includes/script-common.md -->

Construct 3 插件支持与异步多人游戏配合使用。 详见主文章中的 [HTML5](https://yandex.com/dev/games/doc/zh/sdk/sdk-multiplayer-sessions.md) 部分。

## 多人游戏初始化 {#init}

要开始使用，请使用 **Initialize multiplayer** 操作。 该操作会执行初始化和加载对手的游戏会话。

初始化参数：

#|
|| **参数** | **类型** | **描述** ||
|| **Sessions count** | `number` | 要加载的会话数量（最多10个）。 ||
|| **Turn time** | `number` | 对手回合的最大时间（毫秒）。 ||
|| **Meta** | `JSON` | 用于会话选择的数据对象。 ||
|#

有关参数的更多详情，请参阅[主要文章](https://yandex.com/dev/games/doc/zh/sdk/sdk-multiplayer-sessions.md#init)。

多人游戏初始化成功后，将触发 **On multiplayer initialization** 触发器。 要处理收到的对手会话，请在其中使用 **For each opponent** 循环。 循环中可用的表达式：

- **Current session player data** —— 通过 `avatar` 或 `name` 键获取当前会话中的玩家数据。
- **Current session ID in sessions list**。

要获取会话元数据，请使用 **Get current session metadata** 动作。

## 记录游戏会话 {#record}

可用动作：

- **Commit transaction** —— 用于提交事务。 该操作接受包含数据的 JSON 对象。

- **Push session** —— 用于保存会话。 该操作接受包含元数据的 JSON 对象。

更多详情，请参阅[主要文章](https://yandex.com/dev/games/doc/zh/sdk/sdk-multiplayer-sessions.md#record)。

## 使用会话 {#use}

在 Construct 3 中，会话操作仅通过事件完成。为此，使用 **On multiplayer session transactions** 和 **On multiplayer session finish** 触发器。 为此，请使用 **On multiplayer session transactions** 和 **On multiplayer session finish** 触发器。

在 **On multiplayer session transactions** 触发器中，可以使用：

- **Session ID in event** 表达式。
- **For each transaction** 循环 —— 用于处理对手发来的事务列表。 循环中可用的表达式：
    - **Current transaction ID in transactions list**。
    - **Current transaction time in transactions list**。

    要获取事务数据，请使用 **Get current transaction data** 动作。

在 **On multiplayer session finish** 触发器中，可以使用 **Session ID in finish event** 表达式。

要触发向处理程序发送会话，请使用 **Mark gameplay start** 操作。 暂停通过调用 **Mark gameplay stop** 实现。

有关使用会话的更多详情，请参阅[主要文章](https://yandex.com/dev/games/doc/zh/sdk/sdk-multiplayer-sessions.md#use)。

## 使用示例 {#example}

![Construct 3 截图：使用 YandexGamesSDK 插件配置异步多人游戏的界面。 一个三列表格（第三列的每个单元格中都有"+ 添加操作"和"+ 添加..."按钮）和 8 行。 第 1 行 —— "OK"图标和文本"start"、"按下时"、"{:} InitMeta | 解析 JSON 字符串 "{""meta1"":{""min"":7,""max"":9}}"" \n "YandexG... | 初始化多人游戏。 会话数：1，回合时间：20000 毫秒，元数据：{:} InitMeta" \n 设置图标"系统 | 等待之前的操作完成" \n "YandexG... | 标记游戏开始"。 第 2 行 —— "YandexGames…"、"多人游戏已初始化"、空单元格。 第 3 行 —— "YandexGames…"、"对于每个对手"、虚线方块中的字母"T"图标和文本"文本2 | 将文本设置为 YandexGamesSDK.会话列表中的当前会话标识符"。 第 4 行 —— "YandexGames…"、"已收到会话事务"、空单元格。 第 5 行 —— "YandexGames…"、"对于每个事务"、"YandexG… | 获取当前事务的数据并保存到 {:} payload" \n 虚线方块中的字母"T"图标和文本"文本2 | 将文本设置为 payload.获取("data")"。 第 6 行 —— "YandexGames…"、"会话已结束"、虚线方块中的字母"T"图标和文本"文本2 | 将文本设置为 "结束""。 第 7 行 —— "OK"图标和文本"commit"、"按下时"、"设置图标"系统" | 从 hp 中减去 1" \n "{:} transacti... | 解析 JSON 字符串 "{""data"":"&hp&"}"" \n "YandexG... | 使用数据 {:} transaction 写入事务"。 第 8 行 —— "OK"图标和文本"end"、"按下时"、"{:} pushMeta | 解析 JSON 字符串 "{""meta1"":8}"" \n "YandexG... | 使用元数据 {:} pushMeta 保存会话"。](../../_images/construct-3/multiplayer/example.webp)

---


<!-- source: zh/_includes/sdk/button-git.md -->
<a href="https://github.com/yandex-games-plugins/construct3">
  <span class="button">存储库</span>
</a>
<!-- endsource: zh/_includes/sdk/button-git.md -->
