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

# Асинхронный мультиплеер

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

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

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

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

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

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


<!-- source: ru/_includes/script/neuroexpert-widget.md -->



<!-- endsource: ru/_includes/script/neuroexpert-widget.md -->
<!-- endsource: ru/_includes/script-common.md -->

Плагин Construct 3 поддерживает работу с асинхронным мультиплеером. Подробнее см. в разделе [HTML 5](https://yandex.ru/dev/games/doc/ru/sdk/sdk-multiplayer-sessions.md).

## Инициализация мультиплеера {#init}

Для начала работы используйте действие **Проинициализировать мультиплеер**. В нем происходят стартовая инициализация и загрузка игровых сессий оппонентов.

Параметры инициализации:

#|
|| **Параметр** | **Тип** | **Описание** ||
|| **Количество сессий** | `number` | Количество сессий для загрузки (не более 10). ||
|| **Время хода** | `number` | Максимальное время хода оппонента в миллисекундах. ||
|| **Метаданные** | `JSON` | Объект с данными для выборки сессий. ||
|#

Подробнее о параметрах см. в [основной статье](https://yandex.ru/dev/games/doc/ru/sdk/sdk-multiplayer-sessions.md#init).

После успешной инициализации мультиплеера будет активирован триггер **Мультиплеер инициализирован**. Чтобы обработать полученные сессии оппонентов, используйте внутри него цикл **Для каждого оппонента**. В цикле доступны выражения:

- **Данные игрока текущей сессии** — данные игрока в текущей сессии по ключу `avatar` или `name`.
- **Идентификатор текущей сессии в списке сессий**.

Для получения метаданных сессии используйте действие **Получить метаданные текущей сессии**.

## Запись игровой сессии {#record}

Доступные действия:

- **Записать транзакцию** — используйте для фиксации транзакций. Действие принимает объект JSON с данными.

- **Сохранить сессию** — используйте для сохранения сессии. Действие принимает объект JSON c метаданными сессии.

Подробнее см. в [основной статье](https://yandex.ru/dev/games/doc/ru/sdk/sdk-multiplayer-sessions.md#record).

## Работа с сессиями {#use}

В Construct 3 работа с сессиями осуществляется только через события. Для этого используются триггеры **Сессионные транзакции получены** и **Сессия окончена**.

В триггере **Сессионные транзакции получены** доступны:

- Выражение **Идентификатор сессии в событии сессионной транзакции**.
- Цикл **Для каждой транзакции** — для обработки списка пришедших транзакций оппонента. В цикле доступны выражения:

    - **Идентификатор текущей транзакции в списке транзакций**.
    - **Время текущей транзакции в списке транзакций**.

    Для получения данных транзакции используйте действие **Получить данные текущей транзакции**.

В триггере **Сессия окончена** доступно выражение **Идентификатор сессии в событии окончания**.

Чтобы инициировать отправку сессий в обработчики, вызовите действие **Отметить начало геймплея**. Приостановка осуществляется вызовом **Отметить конец геймплея**.

Подробнее о работе с сессиями см. в [основной статье](https://yandex.ru/dev/games/doc/ru/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», «При нажатии», «иконка настроек «Система» | Вычесть 1 из hp» \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: ru/_includes/plugin-tg-support.md -->
{% note info %}

Если при работе с плагином вы столкнулись с проблемой или у вас появился вопрос, обратитесь в [сообщество в Телеграме](https://t.me/yagamedev/1056558){.telegram}.

{% endnote %}
<!-- endsource: ru/_includes/plugin-tg-support.md -->


<!-- source: ru/_includes/button-git.md -->
<a href="https://github.com/yandex-games-plugins/construct3">
  <span class="button">Репозиторий</span>
</a>
<!-- endsource: ru/_includes/button-git.md -->
