Unity 6.3
0 онлайн 101 гостей 3 в системе
Вход
Unity Строительные блоки Шаг 10 из 14

Строительный блок многопользовательских сеансов

Реализуйте в проекте многопользовательские сеансы Unity с помощью готовых элементов UI этого Unity Building Block. Узнайте, что такое сеансы, как их настраивать и отлаживать, а также как подключаться к пакетам Netcode от Unity.

Введение

Multiplayer Session Building Block помогает вам интегрировать многопользовательские сессии Unity в ваш проект, чтобы соединить игроков. Этот Building Block может служить отправной точкой для ваших многопользовательских проектов, или как быстрая интеграция сессий в процессе разработки.

В этом блоке создания показано, как выполнить следующие действия:

  • Создание сеанса и присоединение к нему через многопользовательские службы SDK.
  • Используйте Быстрое Присоединение API, чтобы быстро получить игроков в любой существующей сессии.
  • Используйте Просмотр Сеанса API для перечисления существующих сеансов и присоединения к конкретному.
  • Используйте JoinCode для совместного использования и присоединения к конкретному сеансу.

Модуль Multiplayer Sessions Building Block включает примерные сцены, UIToolkit UI ассетов и компонентов времени выполнения для создания, просмотра и присоединения к сеансам и отладки их с помощью SessionInfo панели. Если вам нужна синхронизация игры, вы можете добавить Netcode, используя Unity Netcode for GameObjects или Netcode for Entities.

Предварительные условия

  • Установите Unity Строительный блок — многопользовательский сеанс от Unity Asset Store:.
  • Связать ваш проект Unity Editor с облачным проектом.

Первоначальная настройка

Вы можете проверить правильность установки Building Block, открыв одну из включенных в примерных сцен.

  1. Откройте одну из многопользовательских сцен, перейдя в Активы > Блоки > MultiplayerSession > Сцены.
  2. Выберите Играть, чтобы войти в режим воспроизведения.

Теперь вы можете взаимодействовать с элементами UI в сцене для создания новой сессии.

Многопользовательские сеансы

Многопользовательский сеанс представляет группу подключённых игроков и предоставляет уровень абстракции для управления состояниями многопользовательской игры, включая первоначальное подключение игроков, выбор хоста, присоединение и выход игроков, а также установление сетевого соединения. Многопользовательские сеансы не выполняют синхронизацию игрового процесса, но совместимы с Netcode for GameObjects или Network for Entities; эти решения могут реплицировать авторитетное состояние игры после подключения игроков. Например, типичная последовательность подключения может выглядеть следующим образом:

  1. Инициализация служб Unity
  2. Аутентификация игрока
  3. Создание сеанса или присоединение к нему
  4. Подключитесь к нужному серверу или узлу сети
  5. Загрузить игровую сцену

Включенные ресурсы

Модуль создания многопользовательского сеанса содержит следующие сцены:

Scene Описание
JoinByBrowsing Позвольте игрокам просматривать доступные сессии, чтобы присоединиться к ним или создать новый сеанс. Идеально подходит для поиска лобби с определенными настройками или игроками.
JoinByCode Позвольте игрокам создать сессию и поделиться простым кодом присоединения, который другие игроки могут использовать для присоединения к сессии. Идеально подходит для присоединения и приглашения игроков на конкретную сессию путем копирования кода.
QuickJoin Позвольте игрокам присоединиться к первой доступной сессии. Идеально подходит для быстрого присоединения к любой существующей сессии, когда соответствие определенным правилам не имеет значения.
QuickJoinDebug Похоже на QuickJoin, но с дополнительным окном SessionInfo с информацией о сессии. Полезно для отладки сессии.

JoinByBrowsing

SessionBrowser UXML:

  • CreateSessionElement: Укажите имя сессии и создайте сессию.
  • SessionBrowserElement: Отображает доступные сеансы. Нажмите, чтобы выбрать сеанс.
  • RefreshListButton: Обновляет список сеансов из SessionBrowserElement.
  • JoinButton: Присоединение к выбранному сеансу из списка.

CurrentSession UXML:

  • SessionNameLabel: Отображает имя наблюдаемого сеанса.
  • PlayerCountLabel: Отображает количество игроков в наблюдаемой сессии.
  • PlayerNameLabel: Отображает имя игрока.
  • CopySessionCodeElement: Отображает код присоединения для сессии, чтобы его можно было скопировать.
  • PlayerListView: Отображает список игроков, которые присоединились к сессии.
  • LeaveSessionButton: Выберите, чтобы покинуть присоединенный сеанс.

JoinByCode

JoinSessionByCode UXML:

  • CreateSessionElement: Укажите имя сессии и создайте сессию.
  • CopySessionCodeElement: Отображает код присоединения для сессии, чтобы его можно было скопировать.
  • JoinSessionByCode: Введите код сессии для присоединения к сессии.

CurrentSession UXML:

  • SessionNameLabel: Отображает имя наблюдаемого сеанса.
  • PlayerCountLabel: Отображает количество игроков в наблюдаемой сессии.
  • PlayerNameLabel: Отображает имя игрока.
  • CopySessionCodeElement: Отображает код присоединения для сессии, чтобы его можно было скопировать.
  • PlayerListView: Отображает список игроков, которые присоединились к сессии.
  • LeaveSessionButton: Выберите, чтобы покинуть присоединенный сеанс.

QuickJoin

JoinSessionByQuickJoin UXML:

  • QuickJoinButton: Присоединиться к сессии с помощью Быстрое присоединение API.

CurrentSession UXML:

  • SessionNameLabel: Отображает имя наблюдаемого сеанса.
  • PlayerCountLabel: Отображает количество игроков в наблюдаемой сессии.
  • PlayerNameLabel: Отображает имя игрока.
  • CopySessionCodeElement: Отображает код присоединения для сессии, чтобы его можно было скопировать.
  • PlayerListView: Отображает список игроков, которые присоединились к сессии.
  • LeaveSessionButton: Выберите, чтобы покинуть присоединенный сеанс.

QuickJoinDebug

JoinSessionByQuickJoin UXML:

  • QuickJoinButton: Присоединиться к сессии с помощью Быстрое присоединение API.

SessionInfo UXML:

  • SessionInfo: Отображает информацию об отладке для активного сеанса, аналогично в Просмотрщике Сеансов.

CurrentSession UXML:

  • SessionNameLabel: Отображает имя наблюдаемого сеанса.
  • PlayerCountLabel: Отображает количество игроков в наблюдаемой сессии.
  • PlayerNameLabel: Отображает имя игрока.
  • CopySessionCodeElement: Отображает код присоединения для сессии, чтобы его можно было скопировать.
  • PlayerListView: Отображает список игроков, которые присоединились к сессии.
  • LeaveSessionButton: Выберите, чтобы покинуть присоединенный сеанс.

Присоединение к нескольким клиентам локально

Используйте Multiplayer Play Mode для тестирования настройки с несколькими игроками непосредственно из Unity Editor.

Добавление сетевого кода к сеансу

Чтобы интегрировать либо Netcode for GameObjects, либо Netcode for Entities в ваши сессии, выполните следующие действия:

  1. Установите пакет Netcode по вашему выбору, используя Package Manager (Окно > Управление пакетами > Package Manager).
    • Установите либо Unity Netcode for GameObjects или Netcode for Entities.
  2. Включить Создать сетевой сеанс в SessionSettings.
    • В вашем SessionSettings ScriptableObject найдите и включите опцию Создать сетевой сеанс, которая позволяет распознавать ваши сессии и управлять ими выбранным решением Netcode.
  3. Изменить Тип сети в SessionSettings.
    • Корректировка Тип сети внутри вашего SessionSettings чтобы соответствовать предполагаемой архитектуре сети. Можно выбрать из следующих вариантов:
      • Ретрансляция: для облачных служб ретрансляции.
      • Распределённые полномочия: для работы с распределёнными полномочиями Netcode for GameObjects.
      • Прямое: Для прямых соединений, использующих IP Адрес и Порт.

Чтобы больше узнать о различных NetworkTypes, см. Управление сетевыми подключениями.

Устранение неполадок

Многопользовательские услуги недоступны

  • Многопользовательские Сервисы должны быть инициализованы. Вы можете инициализировать свои собственные сцены с настройками по умолчанию, добавив компоненты ServicesInitialization и PlayerAuthentication.

Сбой аутентификации

  • Убедитесь, что вы вошли в редактор, и Project ID правильно.
  • Проверьте включение служб, например проверки подлинности и лобби.

Не удается перечислить или присоединиться к сеансам

  • Проверка подключения к сети и правил брандмауэра.
  • Проверьте статус и квоты службы Лобби.

Код присоединения неверный или истек срок действия

  • Убедитесь, что затронутый сеанс активен и не перегружен.
  • Регенерируйте код присоединения, повторно создав сеанс.
  • Убедитесь, что ретрансляция включена и регионы доступны.
  • Перед запуском сетевой программы проверьте, установлены ли конечные точки.

UI не показывает данные

  • Проверьте, что каждый VisualElement в вашем UXML имеет свой SessionType установлен правильно.

Дополнительные ресурсы

  • Unity Услуги: Мультиплеер SDK
  • Unity Netcode for GameObjects
  • Unity Netcode for Entities