Реалізація голосового чату (VoIP) всередині VR ігор

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

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

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

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Реалізація голосового чату (VoIP) всередині VR ігор
Складна
~1-2 тижні
Часті питання

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

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

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

  • 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 — це не просто «кнопка говорити». Це пространственний аудіо з точки, де знаходиться аватар співрозмовника. Голос має затухати з дистанцією, відбиватися від геометрії, та звучати справа, якщо аватар стоїть справа. Без цього мультиплеєрний VR-досвід втрачає половину присутності.

Два основних SDK для VR-голосу — Vivox (Unity Gaming Services, добре інтегрується з Lobby та Relay) та Dissonance Voice Chat (незалежний пакет для Unity, працює з Photon, Mirror, NGO). Кожен має свою модель роботи, і вибір залежить від решти мережевого стеку.

Dissonance: інтеграція з Photon Fusion

Dissonance працює поверх існуючого мережевого транспорту — голосові пакети йдуть через той же канал, що й ігрові дані. Для Photon Fusion є готова інтеграція DissonanceComms + PhotonFusionCommsNetwork. Встановлюється на окремий GameObject у сцені, підключається до NetworkRunner.

Критична настройка, яку часто пропускають: VoicePlaybackOrder. За умовчанням Dissonance ставить голос у чергу й відтворює з затримкою ~100 мс для згладжування джітеру. У VR це помітно: губи аватара рухаються (якщо є lipsync), голос приходить пізніше. Потрібно знижувати MinJitterBuffer до 20–30 мс — при хорошому з'єднанні джітер мінімальний, і можна дозволити собі менший буфер.

Пространственний звук у Dissonance: на кожному VoiceReceiptTrigger (компонент на аватарі) включаємо Use Positional Data — Dissonance передає позицію джерела через Unity Audio Source. Далі працює стандартний Unity 3D Audio з AudioRolloffMode.Logarithmic, MinDistance, MaxDistance. Для VR специфічно: AudioListener знаходиться на HMD, а не на Camera.main — потрібно убезпечитися, що він переміщується разом з головою користувача.

Vivox та пространственний аудіо: нюанси

Vivox — cloud-hosted SaaS. Голос йде не через ігровий сервер, а через сервери Unity (Epic Voice Service). Це зменшує навантаження на ігрову інфраструктуру, але додає залежність від зовнішнього сервісу та latency, яку не контролюємо.

Для пространственного аудіо у Vivox використовуємо VivoxUnity.IAudioSource3D — SDK передає позицію та орієнтацію в хмару, і сервер застосовує HRTF (Head-Related Transfer Function) обробку на стороні одержувача. Це дорожче обчислювально, але якість 3D-позиціонування краще, ніж у Unity Audio Source з лінійним rolloff.

Проблема Vivox на standalone Quest: SDK вимагає активного інтернет-з'єднання та додає 50–150 мс overhead порівняно з P2P або локальним транспортом Photon. Для ігор, де голосова комунікація — ключова механіка (переговори, командні команди), це помітно.

Шумозаглушення та кодеки

Користувачі Quest говорять у вбудований мікрофон шлема в домашній обстановці — шум побутової техніки, діти, телевізор. Без шумозаглушення голос у грі буде нечистим.

Dissonance підтримує WebRTC Noise Suppressor (VAD + NS) — підключається через DissonanceComms.MicrophoneCapture. WebRTC NS добре справляється зі стаціонарними шумами (гул холодильника, фоновий шум), гірше з різкими звуками.

Кодек для голосу: Opus — стандарт де-факто. Dissonance використовує Opus за умовчанням з бітрейтом 16–32 kbps — достатньо для розбірливої мови. Збільшення до 64 kbps не дає значного покращення якості для голосу. Vivox також Opus, але бітрейт та параметри не настройюються вручну.

Зонування голосу: команди та шепіт

У іграх з кількома командами або великими просторами потрібно зонування: гравець чує тільки тих, хто рядом або в його команді. Dissonance реалізує це через Rooms — кожен гравець підписується на кімнати й говорить у конкретну.

Для механіки «шепіту» (чути тільки вплотну) та «крику» (чути на всю карту) робимо три кімнати: Proximity (radius 5м, автоматично за дистанцією), Team (тільки своя команда), Broadcast (всі). Гравець підписується на всі три як слухач, але говорить тільки в одну, переключаючи активну через UI або жест.

Переключення через жест — специфіка VR. Немає клавіатури. «Шепіт» — рука у рот (proximity detection через дистанцію від HMD до правого контролера < 15 см). «Радіо» — натискання на іконку рації на предплічч аватара через лучевий інтерактор.

Строки та оцінювання

Варіант інтеграції Орієнтовні строки
Dissonance + Photon Fusion, базовий пространственний звук 3–7 днів
Vivox + Unity Gaming Services, зонування 1–2 тижні
Кастомне зонування + жестове управління + lipsync 2–4 тижні

Вартість розраховується після аналізу поточного мережевого стеку та вимог щодо функціональності голосового чату.