Інтеграція Photon для мультиплеєра мобільної гри

Інтеграція Photon для мультиплеєра мобільної гри Уявіть: ваша мобільна гра на Unity, ви інтегрували Photon, але при зміні Wi-Fi на 4G з'єднання рветься, і гравці вилітають з кімнати. Знайома проблема? Ми вирішуємо її на рівні коду: налаштовуємо playerTtl, реконект та ручну синхронізацію, щоб траф

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція Photon для мультиплеєра мобільної гри
Середній
~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

Інтеграція Photon для мультиплеєра мобільної гри

Уявіть: ваша мобільна гра на Unity, ви інтегрували Photon, але при зміні Wi-Fi на 4G з'єднання рветься, і гравці вилітають з кімнати. Знайома проблема? Ми вирішуємо її на рівні коду: налаштовуємо playerTtl, реконект та ручну синхронізацію, щоб трафік не летів дарма. Багато розробників припускаються однієї й тієї ж помилки: покладаються на стандартні компоненти PhotonTransformView, що призводить до надлишкового трафіку та проблем з реконектом. Ми ж пропонуємо перевірений підхід, який скорочує трафік у 3–5 разів і забезпечує стабільне з'єднання на мобільних пристроях. За понад 10 років роботи з Photon ми виконали 40+ проєктів для мобільних ігор — від простих лобі до складних квестів з матчмейкінгом. Якщо ви хочете уникнути типових проблем і заощадити на трафіку, звертайтеся до нас для інтеграції Photon у вашу гру.

Як правильно синхронізувати об'єкти в Photon?

PhotonView — основний компонент синхронізації. Кожен мережевий об'єкт отримує ViewID. Синхронізацію позиції та ротації через PhotonTransformView використовують за замовчуванням — це працює, але розсилає оновлення на кожен FixedUpdate, навіть якщо об'єкт не рухався.

Правильний підхід: реалізувати IPunObservable.OnPhotonSerializeView з ручним контролем відправки даних:

public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { if (stream.IsWriting) { // Відправляємо тільки якщо змінилося значуще if (Vector3.Distance(_lastSentPosition, transform.position) > 0.01f) { stream.SendNext(transform.position); stream.SendNext(transform.rotation); _lastSentPosition = transform.position; } } else { _networkPosition = (Vector3)stream.ReceiveNext(); _networkRotation = (Quaternion)stream.ReceiveNext(); } } 

На клієнті прийняте _networkPosition не застосовується напряму — інтерполюємо через Vector3.MoveTowards або Lerp за часом пакета з PhotonMessageInfo.SentServerTime. Як стверджує документація Photon, такий підхід мінімізує мережевий трафік без втрати плавності.

Порівняння методів синхронізації:

Метод Трафік (пакетів/с) Затримка Простота
PhotonTransformView 20 пакетів (за замовчуванням) Низька Висока
IPunObservable (ручний) Від 1–2 пакетів (тільки при зміні) Середня Середня

Ручна синхронізація зменшує трафік у 3–5 разів. Для мобільних ігор це критично, оскільки Photon тарифікується за CCU. На практиці, у проєкті мобільної гонки з 6 гравцями, налаштування IPunObservable та зниження SerializationRate дозволило зменшити використання трафіку на 70%.

Як працює RPC і коли його використовувати?

photonView.RPC — для подій, які мають гарантовано дійти: урон, смерть, підбір предмета. RpcTarget.All розсилає всім у кімнаті, включаючи відправника. RpcTarget.Others — всім крім.

Типова помилка: використовувати RPC для позиційних оновлень. RPC надійний (TCP-like поведінка), але додає overhead на підтвердження. Для позицій — PhotonNetwork.SendRate + OnPhotonSerializeView, для важливих подій — RPC.

PhotonNetwork.SendRate за замовчуванням 20, SerializationRate — 10. Для мобільного баланс трафіку vs плавність: 15/10.

Підключення та кімнати

PhotonNetwork.ConnectUsingSettings(); // використовує PhotonServerSettings asset void OnConnectedToMaster() { PhotonNetwork.JoinRandomOrCreateRoom( expectedCustomRoomProperties: null, expectedMaxPlayers: 4, matchingType: MatchmakingMode.FillRoom, typedLobby: null, sqlLobbyFilter: null, createIfNotFound: true ); } 

RoomOptions.CustomRoomPropertiesForLobby — масив ключів, видимих у лобі для фільтрації. Передавати все в lobby-властивості не потрібно: тільки те, за чим фільтрують (регіон, режим гри, карта).

Чому гравці відключаються при зміні мережі?

Зміна мережі. Photon SDK підтримує PhotonNetwork.ReconnectAndRejoin() — але тільки якщо кімната з playerTtl > 0. За замовчуванням playerTtl = 0, гравець вважається таким, що вийшов миттєво. Для мобільного: playerTtl = 10000 (10 секунд на reconnect).

iOS Background. При переході у фон iOS агресивно глушить мережеві з'єднання. Photon розірветься через 5-10 секунд. Для ігор, де це критично — UIBackgroundModes: voip (з обережністю, Apple може відхилити) або graceful disconnect.

Трафік. Photon Realtime тарифікується за CCU (одночасні користувачі). 20 CCU безкоштовно. При інтеграції варто додати Photon Dashboard у моніторинг — видно кількість повідомлень, байти, піки. Ми включаємо в роботу налаштування Photon Dashboard та оптимізацію коду для зниження трафіку на 30–50%.

Типові помилки при інтеграції Photon на мобільних пристроях
  1. Відсутність playerTtl — гравці миттєво покидають кімнату при тимчасовому розриві.
  2. Використання PhotonTransformView для всіх об'єктів — невиправдано високий трафік.
  3. Часті RPC-виклики для позицій — збільшують затримку та навантаження.
  4. Ігнорування налаштувань SendRate та SerializationRate — можна знизити без втрати якості.

Ці помилки легко виправити на етапі розробки. Замовте аудит вашого проекту, щоб виявити їх до релізу.

Що входить в нашу роботу з інтеграції Photon?

  • Аудит поточної реалізації (якщо є)
  • Налаштування Photon SDK та конфігурації (регіони, кімнати, TTL)
  • Реалізація синхронізації через IPunObservable (ручне управління трафіком)
  • Інтеграція матчмейкінгу з кастомними властивостями
  • Налаштування RPC та надійних подій
  • Оптимізація для мобільних пристроїв (реконект, трафік, background)
  • Тестування на 10+ реальних пристроях у різних мережах
  • Надання документації та підтримка після впровадження

Строки та вартість

Базова інтеграція Photon Realtime з кімнатами, синхронізацією позицій та RPC: від 3 до 7 днів. Повноцінна система з матчмейкінгом, custom properties та мобільною оптимізацією: від 2 до 3 тижнів. Вартість розраховується індивідуально — оцінимо ваш проект за 1 день.

Готові обговорити деталі? Зв'яжіться з нами, щоб отримати консультацію та точну оцінку. Звертайтеся до нас для надійної інтеграції Photon у вашу мобільну гру.