Mirror WebGL

Это руководство поможет вам использовать MirrorWebsocket Transport и создать безголовый сервер на Edgegap для проекта Unity.

В этом руководстве будет использован открытый пример проекта Tanks, доступный в примере Mirror в папке Assets/Mirror/Examples/Tanks.

Вы можете найти финальную версию этого примера на нашей GitHub

Переключить транспорт

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

  • Откройте Scene.unity расположенный в Assets/Mirror/Examples/Tanks/Scenes;

  • В NetworkManager gameObject, удалите компонент транспорта KcpTransport скрипт и замените его на SimpleWebTransport расположенный в Assets/Mirror/Transports/SimpleWeb, также убедитесь, что обновили поле Transport компонента NetworkManager скрипта этим новым транспортом. Убедитесь также, что опция Auto Start Server Build тоже выбрана.

  • В зависимости от вашей версии Mirror, возможно, потребуется изменить/обновить NetworkManagerHUD чтобы он работал с транспортами, отличными от KCP, а также чтобы можно было вводить значение порта в HUD перед подключением к серверу.

Запомните порт, используемый для сетевых коммуникаций, обозначаемый как [GAME PORT]. В данном случае используется порт 7778.

Сборка игрового сервера и контейнеризация

Чтобы облегчить процесс контейнеризации и развертывания, можно использовать последнюю версию плагина Edgegap для Unity на нашем GitHub для автоматизации процесса. Для получения дополнительной информации о том, как использовать этот плагин, вы можете ознакомиться с нашим документацией.

Если вы предпочитаете, вы также можете следовать этим пошаговым инструкциям.

Когда игра будет готова, перейдите на Экран сборки в Unity Editor, в меню Файл -> Параметры сборки в верхних меню. Убедитесь, что выбрали правильные пресеты в зависимости от вашей версии Unity.

  • До версии 2021.2:

    • Установите Целевую платформу к Linux;

    • Установите Архитектуру к x86_64;

    • Отметьте Server Build опции.

  • В противном случае:

    • Установите Платформа к Выделенный сервер;

    • Установите Целевую платформу к Linux.

Затем нажмите собрать и выберите новую пустую папку с именем linux_server в качестве места назначения файла. Перенесите linux_server папку во вторую пустую папку, которая в этом документе будет называться [SERVER BUILD] папку, указанную в этом документе. Добавьте следующий Dockerfile и boot.sh файл в папку [SERVER BUILD] папку:

Dockerfile

boot.sh

Обязательно замените [YOUR GAME] заменители на имя сгенерированного файла

Затем откройте командную строку в папке [SERVER BUILD] ; Выполните следующие команды Docker, чтобы создать образ вашей сборки и отправить его в приватный реестр:

Использование Linux

Использование cmd

Использование Powershell

Развертывание сервера на Edgegap

После входа в панель управления Edgegap перейдите на страницу Приложения и игры . Нажмите на Создать новое в правом верхнем углу, чтобы получить доступ к форме создания приложения. Ниже поля и как их правильно заполнить:

  • Название приложения: Может быть любым заметным именем, которое вы хотите использовать, чтобы легко распознать приложение среди других.

  • Изображение: Может быть любым конкретным изображением, которое вы хотите использовать, чтобы легко распознать приложение среди других.

  • Имя версии: Вы можете указать имя версии, чтобы описать назначение версии, которую вы разворачиваете. Примеры: «demo», «production», «v1», «v2»

  • Контейнер:

    • Реестр: «[URL]», где [URL] — значение из учётных данных, которые можно отобразить на странице репозитория контейнеров.

    • Репозиторий образа: «[PROJECT]/[YOUR GAME]», где [PROJECT] и [YOUR GAME] — значения, которые вы использовали ранее при отправке образа Docker.

    • Тег: «[TAG]», где [TAG] — значение, которое вы использовали ранее при отправке образа Docker.

    • Отметьте «Используется приватный репозиторий»

    • Имя пользователя приватного реестра: «[USERNAME]», где [USERNAME] — значение из ваших учётных данных.

    • Токен приватного реестра: «[TOKEN]», где [TOKEN] — значение из ваших учётных данных.

    • Требования: Оставьте как есть.

    • Порты : Нажмите + Добавить порт чтобы добавить новый порт, и добавьте следующие записи:

      • 7778 - WS - включить TLS Upgrade (Beta)

После создания приложения вы можете нажать кнопку Deploy кнопку, чтобы продолжить развертывание вашего игрового сервера. Как только статус вашего развертывания будет установлен как Готов, вы сможете подключиться к серверу с клиентской версией игры. Обратите внимание на Хост URL и, на вкладке Port Mapping вашего развертывания, на внешнему порту , который доступен публично.

Тестирование клиента

В редакторе

Вернувшись в редактор Unity в сцене танка, выберите игровой объект NetworkManager gameObject и измените следующие настройки:

  • В Сетевом менеджере компонент:

    • Установите Сетевой адрес на Хост URL развертывания сервера;

    • Снимите флажок с Auto Start Server Build опции.

  • В Simple Web Transport компонент:

    • Установите Порт значение на внешнему порту развертывания Edgegap, например: 32821;

    • Убедитесь, что опция Client Use WSS включена.

После этого нажмите Play в редакторе, затем нажмите кнопку Клиент ; Вы подключитесь к серверу и сможете поиграть через короткое время.

На Itch.io

Чтобы разместить клиент игры на Itch, вам нужно будет сделать клиентскую сборку; Для этого вам потребуется установить модуль WebGL Build Support для вашей версии Unity. После этого вернитесь в Экран сборки в Unity Editor, в меню Файл -> Параметры сборкии выберите следующие параметры:

  • Установите Платформа к WebGL;

  • Откройте Player Settings. В разделе Player -> Publishing Settingsустановите Compression Format к Gzip и убедитесь, что опция Decompression Fallback выбрана. Сохраните эти настройки и закройте окно.

Затем нажмите собрать и выберите новую пустую папку с именем build в качестве места назначения файла. Перенесите build папку во вторую пустую папку, которая в этом документе будет называться [CLIENT BUILD] папкой.

После завершения сборки игры сожмите файлы этой папки build в ZIP-архив, убедившись, что они находятся в корне архива. Затем просто загрузите ZIP-файл в ваш проект на Itch и убедитесь, что выбрали опцию воспроизведения в браузере. После запуска игры убедитесь, что сетевой адрес и значения порта установлены правильно в HUD, затем нажмите кнопку Клиент чтобы играть.

Хостинг клиента на Edgegap

Даже можно разместить клиент вашей игры на Edgegap! Для этого добавьте следующий Dockerfile и nginx.conf файл в папку [CLIENT BUILD] папку:

Dockerfile

nginx.conf

Продолжите с теми же командами Docker, что и ранее чтобы собрать и отправить образ вашего клиентского приложения в приватный репозиторий, но из окна командной строки, открытого в папке [CLIENT BUILD] . Убедитесь, что используете имя образа, отличное от имени для вашего сервера.

Затем создайте новое приложение для вашего клиента на панели Edgegap с следующими настройками:

  • Название приложения: Может быть любым заметным именем, которое вы хотите использовать, чтобы легко распознать приложение среди других.

  • Изображение: Может быть любым конкретным изображением, которое вы хотите использовать, чтобы легко распознать приложение среди других.

  • Имя версии: Вы можете указать имя версии, чтобы описать назначение версии, которую вы разворачиваете. Примеры: «demo», «production», «v1», «v2»

  • Контейнер:

    • Реестр: «[URL]», где [URL] — значение из учётных данных, которые можно отобразить на странице репозитория контейнеров.

    • Репозиторий образа: «[PROJECT]/[YOUR GAME]», где [PROJECT] и [YOUR GAME] — значения, которые вы использовали ранее при отправке образа Docker.

    • Тег: «[TAG]», где [TAG] — значение, которое вы использовали ранее при отправке образа Docker.

    • Отметьте «Используется приватный репозиторий»

    • Имя пользователя приватного реестра: «[USERNAME]», где [USERNAME] — значение из ваших учётных данных.

    • Токен приватного реестра: «[TOKEN]», где [TOKEN] — значение из ваших учётных данных.

    • Требования: Оставьте как есть.

    • Порты : Нажмите + Добавить порт чтобы добавить новый порт, и добавьте следующие записи:

      • 80 - HTTPS

После создания приложения вы можете нажать кнопку Deploy кнопку, чтобы продолжить развертывание клиентского приложения. Когда развертывания сервера и клиента будут установлены как Готов, откройте Хост URL клиентского приложения по указанному внешнему порту в вашем браузере, и вы сможете играть после установки правильных значений в HUD игры!

Если вам нужна дополнительная информация о интеграции Mirror и websocket, вы можете обратиться к их документацией.

Последнее обновление

Это было полезно?