Mirror WebGL
Это руководство поможет вам использовать Mirrorего Websocket Transport и создать выделенный сервер на Edgegap для проекта Unity.
В этом руководстве будет использоваться проект с открытым исходным кодом Tanks, доступный в примере Mirror в Assets/Mirror/Examples/Tanks.
Вы можете найти финальную версию этого примера на нашем GitHub
Образец Billiards
Если вы предпочитаете следовать пошаговому видеоуроку, используя образец Billiard, смотрите здесь:
В этом видео показан обновлённый процесс сборки с использованием последних Unity инструментов сборки.
Переключите транспорт
Сначала нам нужно внести некоторые изменения в базовую сцену, прежде чем мы будем готовы собрать игровой сервер.
Откройте
Scene.unityрасположенный вAssets/Mirror/Examples/Tanks/Scenes;В
NetworkManagerигровом объекте удалите скриптKcpTransportи замените его наSimpleWebTransportрасположенный вAssets/Mirror/Transports/SimpleWeb, также обязательно обновите поле Transport вNetworkManagerкомпоненте скрипта, указав этот новый транспорт. Убедитесь, чтоAuto Start Server Buildтоже выбрана.В зависимости от вашей версии Mirror, вам может потребоваться изменить/обновить
NetworkManagerHUDчтобы он работал с транспортами, отличными от KCP, а также чтобы вы могли вводить значение порта в HUD перед подключением к серверу.
Обратите внимание на порт, используемый для сетевой связи, обозначаемый как [GAME PORT]. В данном случае используется порт 7778.
Сборка игрового сервера и контейнеризация
Когда игра будет готова, перейдите на экран сборки в Unity Editor, в File -> Build Settings в верхнем меню. Обязательно выберите правильные пресеты в зависимости от вашей версии Unity.
До версии 2021.2:
Установите
Target PlatformвLinux;Установите
Architectureвx86_64;Отметьте опцию
Server Build.
Иначе:
Установите
ПлатформавDedicated Server;Установите
Target PlatformвLinux.
Затем нажмите build и выберите новую пустую папку с именем linux_server в качестве места назначения файла. Перенесите папку linux_server во вторую пустую папку, которая в этом документе будет обозначаться как [SERVER BUILD] папка. Добавьте следующие Dockerfile и boot.sh файл в [SERVER BUILD] папку:
Dockerfile
boot.sh
Убедитесь, что вы заменили [YOUR GAME] заполнители на имя сгенерированного файла
Затем откройте командную строку в [SERVER BUILD] папке; выполните следующие команды Docker, чтобы создать образ вашей сборки и отправить его в приватный реестр:
Для пользователей ARM CPU (Mac M1, M2 и т. д.) добавьте --platform linux/amd64 в опции к вашей команде сборки.
Используя Linux
Используя cmd
Используя PowerShell
Развёртывание сервера на Edgegap
После входа в панель управления Edgegap перейдите на страницу Applications & Games . Нажмите кнопку Create New в правом верхнем углу, чтобы открыть форму приложения. Ниже перечислены поля и как правильно их заполнить:
Application name : Может быть любым заметным именем, которое вы хотите использовать, чтобы легко распознавать ваше приложение среди других.
Image : Может быть любым конкретным образом, который вы хотите использовать, чтобы легко распознавать ваше приложение среди других.
Version name : Вы можете использовать имя версии, чтобы описать область развёртываемой версии. Примеры: “demo”, “production”, “v1”, “v2”
Container :
Registry : “[URL]”, где [URL] — это значение из учётных данных, которое можно просмотреть на странице Container Repository.
Image repository : “[PROJECT]/[YOUR GAME]”, где [PROJECT] и [YOUR GAME] — это значения, которые вы использовали ранее при отправке docker-образа.
Tag : “[TAG]”, где [TAG] — это значение, которое вы использовали ранее при отправке docker-образа.
Отметьте “Using a private repository”
Private registry username : “[USERNAME]”, где [USERNAME] — это значение из ваших учётных данных.
Private registry token : “[TOKEN]”, где [TOKEN] — это значение из ваших учётных данных.
Requirements : Оставьте без изменений.
Ports : Нажмите
+ Add portссылку, чтобы добавить новый порт, и добавьте следующие записи :7778- WS - enable TLS Upgrade (Beta)
Если вы используете опцию WSS, важно включить TLS Upgrade опцию. В противном случае вы столкнётесь с ошибками, похожими на эту, в журналах контейнера на панели Edgegap.

Когда ваше приложение будет создано, вы можете нажать кнопку Deploy чтобы продолжить развёртывание игрового сервера. Когда последний статус вашего развёртывания станет Ready, вы сможете подключиться к серверу с клиентской версией игры. Обратите внимание на Host url и, на вкладке Port Mapping вашего развёртывания, на внешний порт который доступен публично.
Тестирование клиента
В редакторе
Вернувшись в Unity Editor в сцене танков, выберите NetworkManager игровой объект и измените следующие настройки:
В
Network Managerкомпонента:Установите
Network Addressна url развёртывания сервера;Hosturl;Снимите флажок с
Auto Start Server Build.
В
Simple Web Transportкомпонента:Установите
Portна значение порта развёртывания Edgegapвнешний портнапример:32821;Убедитесь, что опция
Client Use WSSвключена.


После этого нажмите Play в редакторе, затем нажмите кнопку Client ; вы подключитесь к серверу и сможете играть через короткое время.
На Itch.io
Чтобы разместить клиент игры на Itch, вам нужно будет сделать клиентскую сборку; для этого потребуется установить модуль WebGL Build Support для вашей версии Unity. После этого вернитесь к экран сборки в Unity Editor, в File -> Build Settings, и выберите следующие параметры:
Установите
ПлатформавWebGL;Откройте
Player Settings. В разделеPlayer -> Publishing Settings, установитеCompression FormatвGzipи убедитесь, чтоDecompression Fallbackопция выбрана. Сохраните эти настройки и закройте окно.

Затем нажмите build и выберите новую пустую папку с именем сборка в качестве места назначения файла. Перенесите папку сборка во вторую пустую папку, которая в этом документе будет обозначаться как [CLIENT BUILD] папка в этом документе.
После завершения сборки игры сожмите файлы этой сборка папки в zip-архив, убедившись, что они находятся в его корне. Затем вам нужно просто загрузить zip-архив в ваш проект на Itch и убедиться, что выбрана опция запуска файла в браузере. После запуска игры вам нужно лишь убедиться, что значения сетевого адреса и порта правильно заданы в HUD, затем нажать кнопку Client чтобы играть.
Размещение клиента на Edgegap
Возможно даже разместить клиент вашей игры на Edgegap! Для этого добавьте следующий Dockerfile и nginx.conf файл в [CLIENT BUILD] папку:
Dockerfile
nginx.conf
Продолжите, используя те же команды Docker, что и раньше для сборки и отправки образа вашего клиентского приложения в приватный репозиторий, но из окна команд, открытого в [CLIENT BUILD] папке. Убедитесь, что используете другое имя образа, чем для вашего сервера.
Затем создайте новое приложение для вашего клиента в панели Edgegap со следующими настройками:
Application name : Может быть любым заметным именем, которое вы хотите использовать, чтобы легко распознавать ваше приложение среди других.
Image : Может быть любым конкретным образом, который вы хотите использовать, чтобы легко распознавать ваше приложение среди других.
Version name : Вы можете использовать имя версии, чтобы описать область развёртываемой версии. Примеры: “demo”, “production”, “v1”, “v2”
Container :
Registry : “[URL]”, где [URL] — это значение из учётных данных, которое можно просмотреть на странице Container Repository.
Image repository : “[PROJECT]/[YOUR GAME]”, где [PROJECT] и [YOUR GAME] — это значения, которые вы использовали ранее при отправке docker-образа.
Tag : “[TAG]”, где [TAG] — это значение, которое вы использовали ранее при отправке docker-образа.
Отметьте “Using a private repository”
Private registry username : “[USERNAME]”, где [USERNAME] — это значение из ваших учётных данных.
Private registry token : “[TOKEN]”, где [TOKEN] — это значение из ваших учётных данных.
Requirements : Оставьте без изменений.
Ports : Нажмите
+ Add portссылку, чтобы добавить новый порт, и добавьте следующие записи :80- HTTPS

Когда ваше приложение будет создано, вы можете нажать кнопку Deploy кнопку, чтобы продолжить развёртывание вашего клиентского приложения. Когда и сервер, и клиент будут развёрнуты и иметь статус Ready, откройте Host url клиентского приложения по указанному внешний порт в вашем браузере, и вы сможете играть в игру после того, как зададите правильные значения в HUD игры!

Последнее обновление
Это было полезно?

