Разработка мультиплеера мобильной игры (реального времени)

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Разработка мультиплеера мобильной игры (реального времени)
Сложная
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Разработка мультиплеера мобильной игры (реального времени)

Real-time мультиплеер в мобильной игре — это не просто WebSocket и отправка координат. Это управление задержкой в 50-200 мс, компенсация пакетных потерь, синхронизация физики и работа с прерывистым 4G-соединением. Мобильный клиент теряет пакеты чаще десктопа: смена WiFi на LTE, тоннели, фоновый режим ОС — всё это ломает наивную реализацию уже на первых тестах.

Архитектура: авторитарный сервер и предсказание на клиенте

Первая ошибка — доверять клиенту. Клиент отправляет «я переместился сюда», сервер применяет без проверки. Через неделю читеры телепортируются по карте.

Правильная архитектура: authoritative server. Клиент отправляет ввод (нажатые кнопки, вектор движения), сервер симулирует физику, рассылает результирующие состояния. Клиент применяет те же вычисления локально — это client-side prediction. Когда приходит ответ сервера, клиент сравнивает: если расхождение выше порога, применяет reconciliation — откат к последнему подтверждённому состоянию и воспроизведение буфера неподтверждённых вводов.

В Unity это реализуется через Netcode for GameObjects или Mirror, но архитектурный паттерн одинаков. Каждый тик игры (обычно 20-60 Hz для мобильных):

  1. Клиент отправляет InputPayload { tick, moveDirection, shootPressed }
  2. Сервер применяет ввод, вычисляет StatePayload { tick, position, health, ... }
  3. Сервер рассылает снэпшот всем клиентам (обычно не каждый тик — delta compression)
  4. Клиент получает снэпшот, сравнивает с предсказанным состоянием, корректирует

Delta compression критична для мобильного: вместо полного состояния мира (300 байт) рассылать только изменения (10-30 байт). При 20 Hz на 10 игроков разница между полным состоянием и delta — трафик 60 КБ/с vs 6 КБ/с.

Транспортный уровень: UDP vs TCP

TCP гарантирует доставку и порядок пакетов за счёт retransmit при потере. В real-time игре потерянный пакет с позицией игрока за 200 мс назад не нужен — нужна актуальная позиция. TCP будет ждать и переотправлять устаревшие данные, пока новые ждут в очереди. Это добавляет 100-400 мс к видимой задержке на плохих каналах.

UDP — отправил и забыл. Потери обрабатываются на прикладном уровне: позиционные обновления не требуют надёжности (новый пакет перетрёт старый), а важные события (урон, смерть) требуют подтверждения — реализуется простой ACK-схемой поверх UDP.

На мобильных платформах raw UDP доступен через System.Net.Sockets.UdpClient в Unity или NWConnection с .udp параметром на iOS. Android использует DatagramSocket через Java/Kotlin.

Практика: Photon Realtime использует собственный протокол поверх UDP с встроенной надёжной доставкой для критичных сообщений. LiteNetLib — open-source альтернатива с аналогичными возможностями.

Lag compensation и интерполяция

На клиенте объекты других игроков двигаются не напрямую по снэпшотам — это даёт рывки при нестабильном соединении. Interpolation: клиент хранит буфер последних 2-3 снэпшотов и рендерит состояние с задержкой 50-100 мс, интерполируя между ними. Движение становится плавным, цена — искусственная задержка.

Lag compensation на сервере: когда игрок A стреляет в игрока B, сервер "отматывает" состояние мира на RTT/2 назад и проверяет коллизию в том месте, где B был с точки зрения A. Без этого попасть в быстрого противника при высоком пинге физически невозможно.

Особенности мобильной платформы

Фоновый режим iOS (через 5-10 секунд UIApplicationWillResignActiveNotification) разрывает сокет. Нужен BGTaskScheduler для фонового reconnect или graceful disconnect с сохранением сессии на сервере.

Android: WakeLock и WifiLock для удержания соединения во время матча. Без WifiLock.WIFI_MODE_FULL_HIGH_PERF WiFi-модуль переходит в power-saving режим и добавляет 30-80 мс к latency.

Переход с WiFi на мобильный интернет — ConnectivityManager.NetworkCallback на Android, NWPathMonitor на iOS. При смене сети — быстрый reconnect без потери игровой сессии.

Стек и инструменты

Компонент Варианты
Сетевой фреймворк Photon Realtime, Mirror, NGO, LiteNetLib
Транспорт UDP, Photon Cloud, WebSocket (fallback)
Серверная часть Photon Server, Nakama, custom Node.js/Go
Синхронизация Snapshot interpolation + client prediction
Профилирование Unity Profiler, Photon Dashboard, Wireshark

Этапы работы

Аудит требований (жанр, количество игроков, платформы) → выбор фреймворка → прототип с базовой синхронизацией позиций → реализация client prediction и reconciliation → lag compensation на сервере → нагрузочное тестирование → полировка под мобильные ограничения.

Прототип с базовым мультиплеером для 2-4 игроков: 3-4 недели. Полноценная real-time система на 10-20 игроков с lag compensation и мобильной оптимизацией: 2-4 месяца. Стоимость зависит от жанра, количества игроков и требований к серверной инфраструктуре.