# Ретрансляторы (P2P)

{% hint style="warning" %}
Этот раздел документации находится в процессе разработки и может изменяться.

Не стесняйтесь задавать вопросы или делать запросы через наш [Discord](https://discord.com/invite/NgCnkHbsGp) канал. Мы здесь, чтобы помочь вам!
{% endhint %}

Распределённые ретрансляторы Edgegap используют нашу распределённую облачную сеть, включающую сотни локаций. Это гарантирует, что ваши игроки всегда подключаются к лучшему доступному ретранслятору благодаря нашей запатентованной технологии принятия решений на основе телеметрии в реальном времени.

Внедрение ретрансляторов действительно может быть сложной задачей, поэтому мы разработали решение, которое берет на себя технические аспекты, чтобы вам не пришлось. Наше решение упрощает процесс настройки и управления ретрансляторами, позволяя вам сосредоточиться на бесшовной интеграции их в вашу игру или приложение без необходимости глубоких технических знаний.

***

### Зачем нужен ретранслятор в P2P-игре

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

#### **Ограничения межсетевого экрана (файрвола)**

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

#### **Жёсткий NAT**

Жёсткий NAT может значительно повлиять на способность игрока участвовать в играх типа P2P. P2P-игры полагаются на прямые соединения между устройствами игроков для обмена данными и игрового процесса, но жёсткий NAT может ограничивать или блокировать такие соединения. Это может привести к увеличенной задержке, разрывам соединения и трудностям при присоединении к играм или организации хостинга.

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

Сервер-ретранслятор может помочь преодолеть эти проблемы, выступая посредником между игроками. Когда один игрок пытается подключиться к другому, его соединение сначала проходит через ретранслятор. Это позволяет ретранслятору обрабатывать обход NAT и ограничения файрвола, облегчая подключение игроков друг к другу.

Ретрансляторы также могут способствовать повышению общей производительности P2P-игр за счёт уменьшения нагрузки на устройства игроков. Перенаправляя часть сетевого трафика между игроками, ретранслятор может снизить задержки и улучшить общий игровой опыт.

В итоге сервер-ретранслятор может быть ценным инструментом для разработчиков P2P-игр, помогая преодолевать проблемы обхода NAT и ограничения файрволов, а также улучшая общую производительность игры.

***

### Сервер против клиента в P2P

В архитектуре одноранговой (P2P) многопользовательской игры один из игроков должен выступать в роли игрового сервера, так как нет выделенного сервера для управления игрой для всех участников. Этот игрок, называемый «сервером», отвечает за управление игровым миром и синхронизацию всей информации между игроками. Остальные игроки ("Client" alt="">

подключаются к серверу напрямую.

***

### Начало работы

#### **Реализуйте лобби или матчмейкер**

Вам потребуется реализовать какую‑то форму лобби или матчмейкера для создания сессий ретрансляции для ваших игроков. Не переживайте: на начальном этапе вам не нужен полностью функциональный матчмейкер, достаточно чего‑то, что будет автоматизировать ваши API-запросы без раскрытия токена в клиенте игры. Рассмотрите возможность использования [Управляемые кластеры](/ru/learn/advanced-features/managed-clusters.md#nakama-by-heroic-labs) на кластерах Edgegap.

#### **Интеграция с API Edgegap**

После выполнения предыдущего шага вам в основном потребуется совершить два простых действия с помощью API Edgegap: создание сессий ретрансляции и удаление сессий ретрансляции. За реализацию этих действий должен отвечать ваш лобби/матчмейкер, который будет авторизовывать или деавторизовывать доступ игроков к ретранслятору. [Больше информации в этом разделе](/ru/learn/distributed-relay/relay-edgegap-api.md).

#### **Интеграция с существующим транспортным уровнем**

После авторизации ваших игроков на ретрансляторе вам всё равно нужно реализовать коммуникацию между игровым клиентом и ретранслятором, то есть транспортный уровень.

Чтобы упростить вам задачу, мы работаем над реализациями для разных сетевых стэков, языков и фреймворков. Если вы хотите интегрировать одну из наших текущих реализаций, просто следуйте руководству, соответствующему вашему стеку.

* [Unity с Mirror Netcode](/ru/docs/sample-projects/unity-netcodes/mirror-on-edgegap.md)
* Сетевой модуль Unreal — скоро
* [Unity Netcode для GameObjects](/ru/docs/sample-projects/unity-netcodes/unity-netcode-on-edgegap.md)
* [Fishnet Networking](/ru/docs/sample-projects/unity-netcodes/fishnet-on-edgegap.md)

#### **(Альтернативно) Реализация собственного транспортного уровня**

Если вы заинтересованы в реализации собственного транспортного уровня для конкретного сетевого стека, вы можете найти подробную информацию и рекомендации, следуя этому руководству:

[Руководство по реализации ретранслятора](https://github.com/edgegap/distributed-relay-examples#relay-implementation-manual)

Если у вас есть вопросы по реализации или вы хотите узнать дорожную карту наших текущих интеграций, не стесняйтесь связаться с нами!


---

# Agent Instructions: 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/learn/distributed-relay.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.
