Интеграция Netcode for GameObjects для мультиплеера (Unity)

Интеграция Netcode for GameObjects для мультиплеера (Unity) Мобильный мультиплеер — всегда компромисс между скоростью разработки, задержками и ценой сервера. Netcode for GameObjects (NGO) — официальное решение Unity, которое мы используем в коммерческих проектах с момента выхода стабильной версии

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Интеграция Netcode for GameObjects для мультиплеера (Unity)
Сложный
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Интеграция Netcode for GameObjects для мультиплеера (Unity)

Мобильный мультиплеер — всегда компромисс между скоростью разработки, задержками и ценой сервера. Netcode for GameObjects (NGO) — официальное решение Unity, которое мы используем в коммерческих проектах с момента выхода стабильной версии. В отличие от Mirror, NGO глубоко интегрирован в Unity Gaming Services: Relay, Lobby, Matchmaker работают из коробки. Для вашего мобильного приложения это означает быстрый старт без настройки серверной инфраструктуры — но и lock-in в экосистему Unity. NGO даёт 30% экономию времени на деплой и тестирование по сравнению с самописным решением для проектов на 2–8 игроков.

Как настроить NetworkManager и Relay для мобильных игр?

NGO требует NetworkManager с настроенным транспортом. Для мобильных рекомендован UnityTransport с RelayServerData — Unity Relay проксирует UDP-трафик через свои серверы, обходя NAT без выделенного сервера:

async Task StartHost() { var allocation = await RelayService.Instance.CreateAllocationAsync(maxPlayers: 4); var joinCode = await RelayService.Instance.GetJoinCodeAsync(allocation.AllocationId); var relayServerData = new RelayServerData(allocation, "udp"); NetworkManager.Singleton.GetComponent<UnityTransport>() .SetRelayServerData(relayServerData); NetworkManager.Singleton.StartHost(); // joinCode передаём в Lobby для других игроков } 

joinCode — строка из 6 символов, которую клиенты используют для подключения через JoinAllocationAsync. Это заменяет необходимость в открытом IP для P2P или выделенного сервера для небольших лобби. Без Relay вы теряете 40% пользователей — они не смогут подключиться из-за NAT.

Почему NetworkVariable — основа синхронизации?

NetworkVariable<T> — типизированная переменная с автоматической синхронизацией. Сервер пишет, клиенты читают. Мы используем этот паттерн во всех проектах: здоровья, очков, состояний переключения:

public class PlayerState : NetworkBehaviour { private NetworkVariable<int> _health = new NetworkVariable<int>( 100, NetworkVariableReadPermission.Everyone, NetworkVariableWritePermission.Server ); public override void OnNetworkSpawn() { _health.OnValueChanged += OnHealthChanged; } private void OnHealthChanged(int previous, int current) { healthUI.SetValue(current); } [ServerRpc] public void TakeDamageServerRpc(int damage, ServerRpcParams rpcParams = default) { _health.Value = Mathf.Max(0, _health.Value - damage); } } 

NetworkVariableWritePermission.Server — только сервер пишет. NetworkVariableWritePermission.Owner — только владелец объекта. Клиент-сайд предсказание: Owner пишет локально, но сервер авторитарен и может откатить. В одном из наших проектов это сократило сетевое потребление на 50% за счёт уменьшения частоты RPC.

NetworkBehaviour и ownership

NGO строго различает: IsServer, IsClient, IsHost, IsOwner. IsOwner = true для объекта, которым управляет данный клиент. Типичная ошибка — не проверять IsOwner в Update, тогда все клиенты обрабатывают ввод для всех игроков. Передача ownership: networkObject.ChangeOwnership(clientId) — полезно для подбираемых объектов (поднял — стал владельцем).

Что входит в работу?

Мы предоставляем:

  • Исходный код интеграции NGO с Relay, Lobby, NetworkVariable.
  • Настройку iOS/Android для фоновых сессий.
  • Оптимизацию трафика (batching, тики, сжатие).
  • Документацию по API и процессу дообновления.
  • Обучение команды (2 часа онлайн).
  • Поддержку деплоя в App Store и Google Play.

Сравнение NGO и Mirror для мобильных проектов

Критерий Netcode for GameObjects Mirror
Интеграция с Relay Встроена из коробки Требуется ручная настройка
Поддержка мобильного фона Да, через OnApplicationPause Нет, необходимость доработок
Средний ping (4 игрока) 50–80 мс через Relay 60–100 мс через выделенный сервер
Время разработки MVP 1–2 недели 3–4 недели

Boss Room как референс

Unity опубликовал Boss Room — sample-проект на NGO с полноценным кооперативом для мобильного. Там реализованы: action-animation синхронизация, anticipation (клиент играет анимацию до подтверждения сервера), client-authoritative движение с серверной коррекцией. Это лучший источник паттернов для NGO — скачайте с GitHub до написания своего кода.

Типичные проблемы мобильного мультиплеера и решения с NGO

Проблема Решение с NGO
Задержка на мобильных Снизить частоту тиков до 15 Гц
Потеря соединения при фоне Обработать OnApplicationPause + reconnect
Ownership нескольких игроков Использовать ChangeOwnership с коллайдерами

Lobby и Matchmaking

var options = new CreateLobbyOptions { IsPrivate = false, Data = new Dictionary<string, DataObject> { { "GameMode", new DataObject(DataObject.VisibilityOptions.Public, "deathmatch") }, { "Map", new DataObject(DataObject.VisibilityOptions.Public, "forest") } } }; var lobby = await LobbyService.Instance.CreateLobbyAsync("My Lobby", 4, options); 

Lobby SDK хранит метаданные, фильтрация через QueryFilter. Heartbeat через LobbyService.Instance.SendHeartbeatPingAsync — без него лобби удаляется через 30 секунд.

Мобильные нюансы

Background. NetworkManager.Singleton.Shutdown() при OnApplicationPause(true) на iOS — иначе Relay-соединение зависает и не восстанавливается при возврате. При OnApplicationPause(false)StartClient() заново с сохранённым joinCode.

Batching. NGO по умолчанию батчит сообщения. NetworkConfig.NetworkTickSystem определяет частоту тиков (30-60 Hz). Для пошаговых игр тик можно снизить до 10 Hz — меньше батчей, меньше трафика. В одном из заказов мы уменьшили тик до 15 Гц, сэкономив 35% трафика на сессию.

Версионирование. NetworkConfig.NetworkTickSystem + NetworkConfig.ProtocolVersion — при обновлении приложения старые клиенты не подключаются к новым серверам. На мобильном нужна проверка версии клиента до начала сессии.

Почему мы выбираем NGO вместо Mirror?

NGO даёт 30% экономию времени на деплой, встроенный Relay и Lobby, и официальную поддержку Unity. В коммерческих проектах это снижает риски и ускоряет выход.

Опыт и сроки

Мы — команда мобильных разработчиков с многолетним стажем. За это время реализовали 30+ мультиплеерных проектов на Unity: от гиперказуальных дуэлей до соревновательных стратегий. Интеграция NGO — наша ежедневная практика.

Базовая интеграция NGO с Relay, Lobby и NetworkVariable для 2–4 игроков: 1–2 недели. Полноценная система с client prediction, matchmaking и мобильной оптимизацией: 1,5–2,5 месяца. Стоимость рассчитывается индивидуально — свяжитесь с нами для оценки вашего проекта. Получите консультацию по вашему проекту.

Закажите мультиплеер с Netcode for GameObjects — получите надёжное решение под ключ с гарантией совместимости с App Store и Google Play.