Розробка модулів мультиплеєра для спільного VR досвіду

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

Від імерсивних застосунків до ігрових світів і 3D-сцен

Наша виділена команда для VR/AR/MR-розробки, Unity-продакшну і 3D-моделювання та анімації — з власними кейсами і презентаціями.

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Розробка модулів мультиплеєра для спільного VR досвіду
Складна
~2-4 тижні
Часті питання

Наші компетенції

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    685
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    866
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    492
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    534

tags: [vr-ar]

Розробка модулів мультиплеєра для спільного VR досвіду

Мультиплеєр у VR — це не просто синхронізація позицій та станів. Це синхронізація двох рук, голови, взгляду, захватів, фізичних об'єктів — все одночасно, з латентністю не більше 50–80 мс, інакше користувачі бачать «дергаючі» аватари та втрачають ощущення спільної присутності. При цьому все це має працювати на мобільному залізі Quest з обмеженою пропускною здатністю.

Готові мережеві рішення — Photon Fusion, Photon PUN2, Mirror, Netcode for GameObjects (NGO) — кожне має свої компромиси для VR. Вибір мережевого стеку на старті визначає архітектурні рішення на весь проект.

Photon Fusion та VR: чому Server Mode краще за Shared Mode

Photon Fusion підтримує два режими: Shared Mode (peer-to-peer з одним хостом) та Server Mode (виділений сервер Photon). Для VR бажано Server Mode, навіть якщо проект невеликий.

У Shared Mode один з гравців — хост, і через нього проходить весь трафік. У VR це означає: якщо хост рухає руки (а він робить це 72–90 разів на секунду), його власні дані обробляються локально, а інші гравці отримують їх з RTT хоста. При нестійкому з'єднанні хоста вся сесія страждає. У Server Mode немає однієї точки відмови — Photon Cloud бере на себе ретрансляцію та авторитетну обробку станів.

Конкретна настройка: NetworkRunner з GameMode.Server, FixedUpdateNetwork замість Update для детермінованої фізики. Для трансформів рук використовуємо NetworkTransform з InterpolationDataSource.Predicted — передбачення на стороні клієнта зменшує сприйнену латентність.

Синхронізація аватарів: IK та приховування власного тіла

Головна технічна проблема VR-аватарів у мультиплеєрі — у інших гравців є full body avatar з анімацією, у локального гравця його немає (він бачить тільки руки від першої особи). Синхронізувати потрібно позиції голови та двох кистей — і з цих трьох точок відновити позу тіла для інших гравців.

Рішення — Full Body IK з обмеженою кількістю контрольних точок. У Unity це пакет Animation Rigging з TwoBoneIKConstraint для рук та MultiParentConstraint для тулуба. Голова (HMD position) → тулуб через евристичне зміщення вниз (~0.3 м) → руки через IK до позицій контролерів. Не фізично точно, але переконливо виглядає при нормальних рухах.

Мережевий трафік: три трансформи (голова + 2 руки) × 7 floats (pos + rot) × 90 fps = ~7.5 KB/s на гравця без стиснення. З NetworkTransform та квантизацією у Photon Fusion — 1.5–2 KB/s. При 4–8 гравцях — керуємо.

Синхронізація фізичних об'єктів

Підбірні предмети, кидані об'єкти, двері — все це фізичні rigidbody. Фундаментальна проблема: у двох гравців фізика симулюється незалежно, і результати розходяться. Один гравець кинув кубик у стіну — у нього він відскочив вправо, у другого — вліво.

Підхід 1: авторитетна фізика на сервері. Всі Rigidbody симулюються тільки на StateAuthority (у термінах Photon Fusion — у того, хто захопив об'єкт). Інші гравці інтерполюють позицію. При захопленні об'єкт «передається» новому власнику через RequestStateAuthority. Мінус — при передачі видна невелика телепортація, якщо позиції розійшлися.

Підхід 2: клієнтська фізика з reconciliation. Кожен клієнт симулює фізику локально, сервер періодично розсилає авторитетний стан. При розходженні понад порог — м'яке зміщення до авторитетної позиції через Lerp. Краще виглядає, але складніше реалізувати без артефактів.

На практиці для VR-ігор з фізичними взаємодіями використовується підхід 1 з додаванням ghost об'єкту — тонкої напівпрозорої копії, яка показує авторитетну позицію, поки основний меш інтерполюється.

Процес розробки

Мультиплеєрний модуль — окрема задача, яку краще закладати на етапі архітектури, а не додавати до готової одиночної гри. Ретрофіт мультиплеєра до готової синглплеєрної VR-гри — звичайно +50–70% трудозатрат порівняно з розробкою з урахуванням мультиплеєра з початку.

Етапи: вибір мережевого стеку та архітектури → базова синхронізація трансформів → аватари з IK → синхронізація фізичних об'єктів → ігрова логіка (очки, стани, раунди) → тестування під навантаженням → оптимізація трафіку.

Масштаб задачі Орієнтовні строки
Базовий мультиплеєр (2–4 гравці, тільки трансформи) 2–4 тижні
Повноцінні аватари з IK + фізика об'єктів 6–10 тижнів
Масштабний мультиплеєр (8+ гравців, кастомна логіка) 3–6 місяців

Вартість розраховується після аналізу вимог: число гравців, тип взаємодій, вибір платформи (Quest standalone, PCVR, кросс-платформа).