Інтеграція 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.