Документация Steamworks
Голосовая связь Steam
API голосовой связи Steam — набор функций, которые позволяют записывать звук с микрофона пользователя. Они позволяют внедрить в игру голосовой чат или систему голосового управления.

Интеграция голосового чата

Голосовой чат можно внедрить в игру, используя следующие инструкции:

  • Запись
    Сначала вызовите функцию ISteamUser::StartVoiceRecording для записи звука с микрофона пользователя. Вызов можно выполнять при каждом нажатии пользователем сочетания кнопок для передачи голоса (push-to-talk) или в начале игровой сессии, если микрофон должен записывать постоянно (always on). В зависимости от вашей игры один из вариантов может оказаться более предпочтительным, однако идеально было бы предоставить пользователям выбор между постоянно включённым микрофоном и нажатием кнопки для передачи голоса. Постоянно работающий микрофон по умолчанию — не очень хорошая идея, а если ваша игра поддерживает более 4 игроков, данная опция не рекомендуется ни в коем случае. Когда игрок отпускает сочетание кнопок голосовой связи или игровая сессия заканчивается, необходимо вызвать функцию ISteamUser::StopVoiceRecording, чтобы остановить запись.

    Если игрок использует кнопку для передачи голоса, вы можете вызвать ISteamFriends::SetInGameVoiceSpeaking в начале и в конце записи, чтобы заглушить любой голосовой чат, который используется игроком в интерфейсе друзей в Steam. Идеальным было бы предоставить игрокам возможность включить или выключить эту функцию.

    После того, как вы начнёте запись, необходимо вызывать функцию ISteamUser::GetAvailableVoice с каждым кадром, чтобы проверить наличие сжатых голосовых данных. Если они доступны, воспользуйтесь ISteamUser::GetVoice для получения последних звуковых данных микрофона.
  • Отправка
    Получив звуковые данные, вы, возможно, захотите отправить их другим игрокам. Голосовой API Steam не предоставляет способов отправки напрямую, однако это можно сделать с помощью выбранной вами сетевой библиотеки. В данном случае отлично подходит API пиринговой сети Steam.
  • Получение
    Получив голосовые данные, соответствующие пользователи вызовут ISteamUser::DecompressVoice, чтобы развернуть сжатые данные в несжатый звук.
    По желанию можно использовать ISteamUser::GetVoiceOptimalSampleRate, чтобы получить частоту выборки распаковщика голосовых данных перед вызовом ISteamUser::DecompressVoice. Это будет способствовать облегчённой нагрузке на центральный процессор, но может ухудшить качество звука.

Пример

В разделе документации Приложение-образец с API Steamworks (SpaceWar) показано, как внедрить голосовой API Steam. Нужные элементы можно найти в файлах voicechat.cpp/h.

Требуется помощь?

Обратитесь к разделу обсуждений разработчиков Steamworks, чтобы найти похожие вопросы или задать свои.