Документація Steamworks
Голосовий зв’язок Steam
API голосового зв’язку Steam (Steam Voice) — це набір функцій, які дозволяють вам записувати звук із користувацьких мікрофонів. Це можна використати для впровадження голосового чату чи системи голосових команд.

Упровадження голосового чату

Голосовий чат можна додати у вашу гру наступним чином:

  • Запис
    Спершу викличте ISteamUser::StartVoiceRecording для запису звуку з мікрофона користувача. Цей виклик можна робити щоразу, коли користувач натискає гарячу клавішу для голосового зв’язку, або на початку ігрового сеансу, якщо мікрофон має бути ввімкнений увесь час. Залежно від вашої гри, один із варіантів може бути кращим, але ідеальним є надання користувачам можливості самостійно обирати між ними. Не рекомендується мати стандартний завжди увімкнений запис мікрофона, а якщо ваша гра підтримує більше 4 гравців, то це категорично не рекомендується. Коли користувач відпускає гарячу клавішу голосового зв’язку або ігровий сеанс закінчується, вам слід викликати ISteamUser::StopVoiceRecording для зупинки запису.

    Якщо користувач використовує кнопку голосового зв’язку, то можете викликати ISteamFriends::SetInGameVoiceSpeaking коли починаєте й зупиняєте запис, щоби заглушити будь-який голосовий чат користувача в інтерфейсі друзів Steam. В ідеалі вам потрібно надати гравцям можливість вмикати чи вимикати цю функцію.

    Після того, як ви почнете запис, вам потрібно викликати ISteamUser::GetAvailableVoice з кожним кадром для перевірки наявності стиснених голосових даних. Якщо ці дані доступні, то потрібно використати ISteamUser::GetVoice для отримання останніх аудіоданих від мікрофона.
  • Надсилання
    Коли ви маєте голосові дані, то, імовірно, захочете надіслати їх іншим гравцям. API голосового зв’язку Steam не надає способів прямого надсилання, але це можна зробити за допомогою вибраної вами мережевої бібліотеки. API мережі «один до одного» в Steam найкраще підходить для цього.
  • Отримання
    Коли цільові користувачі отримають голосові дані, то викликають ISteamUser::DecompressVoice для розгортання стиснених даних у повноцінний звук.
    За бажання ви можете використовувати ISteamUser::GetVoiceOptimalSampleRate для отримання частоти дискретизації розпакувальника голосового зв’язку Steam до виклику ISteamUser::DecompressVoice. Це знизить навантаження на процесор, але може дати гірше звучання.

Приклад

Приклад, що додається до SDK, містить високоякісне впровадження API голосового зв’язку Steam. Необхідні елементи ви можете знайти у файлах voicechat.cpp/h.

Потрібна допомога?

Відвідайте обговорення розробників Steamworks для пошуку питань, які вже задавалися, або для власних запитань.