> For the complete documentation index, see [llms.txt](https://docs.edgegap.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.edgegap.com/ru/docs/sample-projects/unity-netcodes/fishnet-on-edgegap-webgl.md).

# Fishnet WebGL

Это руководство поможет вам использовать [FishNet](https://github.com/FirstGearGames/FishNet)транспорт Websocket, [Bayou](https://fish-networking.gitbook.io/docs/manual/components/transports/bayou), и создать безголовый сервер на Edgegap для проекта Unity.

Вы можете найти окончательный пример проекта на нашем [GitHub](https://github.com/edgegap/netcode-sample-unity-fishnet), в разделе `Fishnet_v4.1.6R_WebGL` папки. Это руководство должно работать с любой версией Fishnet, при условии, что вы используете соответствующую версию Bayou для неё.

{% hint style="info" %}
Поскольку FishNet версии 4.1.6R поставляется с включённым плагином Edgegap, мы будем использовать его для автоматической сборки и контейнеризации нашего игрового сервера, хотя это можно сделать и вручную с помощью Dockerfile.

Для получения дополнительной информации о плагине вы можете прочитать нашу документацию [здесь](broken://pages/8f2a97be56c6cb22e241d0ea675b0c2aafba8497).

Вам необходимо, чтобы Docker был запущен, чтобы всё работало корректно.
{% endhint %}

### Требования Unity

Этот проект протестирован на версии Unity `2021.3.16f1`. С ней необходимо установить следующие модули:

* Поддержка сборки WebGL;
* Поддержка сборки выделенного сервера Linux;
* Поддержка сборки Linux (IL2CPP).

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

Скачайте пакет Unity для Bayou на [этом GitHub](https://github.com/FirstGearGames/Bayou/releases). Импортируйте пакет в игровой проект через панель инструментов в `Asset/Import Package/Custom Package...`.

Откройте `MainMenu` сцену, расположенную в `Assets/SpaceEdge/Scenes`вашей игры. `NetworkManager` gameObject, удалите компонент транспорта `Tugboat` . Замените его на `Bayou` транспорт, находящийся в `Asstes/FishNet/Plugins/Bayou`. Обратите внимание на установленное значение порта, в данном случае `7770`.

Убедитесь, что включена опция `Start On Headless` для сборки сервера.

<figure><img src="/files/616a94bbf4fb006ead693b71959e468e8c0419e3" alt=""><figcaption></figcaption></figure>

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

Откройте плагин Edgegap через меню панели инструментов `Edgegap/Edgegap Hosting` . Проверьте ваш `Edgegap API Token` и либо создайте, либо загрузите приложение для игры. Убедитесь, что `port` значение совпадает со значением транспорта Bayou. Выберите `WS` protocol, затем введите `New Version Tag`.

Когда всё будет правильно настроено, нажмите `Build and Push`, что автоматически контейнеризирует ваш игровой сервер и создаст новую версию приложения на панели Edgegap после короткого ожидания.

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

#### В редакторе

Вернувшись в проект, выберите `MatchmakingSystem` gameObject и измените следующие поля:

<figure><img src="/files/354616c78f824593723bf05a4ccdf8b23cc4d527" alt=""><figcaption></figcaption></figure>

* AppName: Установите значение «Application name», которое вы использовали с плагином Edgegap.
* AppVersion: Установите значение «Version name», которое вы использовали с плагином Edgegap.
* AuthHeaderValue: Установите значение токена Edgegap API, который вы использовали с плагином Edgegap.

{% hint style="info" %}
Удалите `токен` слово из токена API, потому что мы задаём это как схему заголовка аутентификации во время `Awake()` метода скрипта `MatchmakingSystem`.
{% endhint %}

Откройте `MatchmakingSystem` , расположенного в `Assets/SpaceEdge/Scripts/Systems`, где вы также можете обновить те же значения. Найдите `"UDP_PORT"` и замените на `"Game Port"`.

{% hint style="info" %}
В предыдущих версиях этого примера приложение создавалось вручную через панель управления Edgegap, и имя `UDP_PORT` использовалось для порта, используемого сервером.

Плагин Edgegap автоматически называет порт `Game Port` вместо этого, поэтому мы должны убедиться, что скрипт обновлён. Иначе игра не будет работать.
{% endhint %}

<figure><img src="/files/b9fca0c730b8f814b0e5f8bd6ea2a74209c51808" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/b4a87d929fa3025c1f7a08831b718a4fb6ede031" alt=""><figcaption></figcaption></figure>

Убедитесь, что вы также снимете галочку с `Start On Headless` в `NetworkManager` gameObject.

После этого нажмите `Play` в редакторе, затем введите имя в текстовое поле и нажмите `Start Game`. Игра проверит наличие доступного сервера или автоматически развернёт его, если ни одного нет, прежде чем подключиться к нему.

{% hint style="warning" %}
Если на стороне клиента возникает `ConnectionFailed` ошибка, это может быть потому, что опция `Start On Headless` не была включена в `серверной сборке`, что означает, что развёртывание не готово принимать подключения, поскольку сервер никогда корректно не запустился. Убедитесь, что опция включена, прежде чем пытаться снова, создав новый образ контейнера и версию приложения.

Это также может быть связано с тем, что `имя порта` версии приложения не совпадает с именем в `MatchmakingSystem` скрипте. Убедитесь, что оба имеют одинаковое имя, в данном случае `"Game Port"`, прежде чем пытаться снова.
{% endhint %}

#### На Itch.io

После того как вы убедились, что игровой клиент работает в редакторе, он должен работать и на Itch.io. Чтобы загрузить игру туда, вам нужно сделать клиентскую сборку в `Экран сборки` в Unity Editor, в меню `Файл -> Параметры сборки`. Выберите следующие параметры:

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

<figure><img src="/files/ae425619b72e87d42e5d10f24fb08f650e0b1fee" alt=""><figcaption></figcaption></figure>

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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.edgegap.com/ru/docs/sample-projects/unity-netcodes/fishnet-on-edgegap-webgl.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
