Mirror WebGL

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

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

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

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

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

  • Откройте 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.

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

circle-info

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

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

Когда игра будет готова, перейдите на Экран сборки в 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, чтобы создать образ вашей сборки и отправить его в приватный реестр:

circle-exclamation

Использование 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)

circle-exclamation

После создания приложения вы можете нажать кнопку 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 игры!

circle-info

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

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

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