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

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

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

  • Запись
    Сначала вызовите функцию ISteamUser::StartVoiceRecording для записи звука с микрофона пользователя. Вызов функции можно производить при каждом нажатии пользователем сочетания кнопок голосовой связи или в начале игровой сессии при условии, что микрофон включён на постоянную запись. В зависимости от вашей игры один из вариантов может оказаться более предпочтительным, однако идеально было бы предоставить пользователям выбор между постоянно записывающим микрофоном и нажатием кнопки в начале высказывания. Зачастую не следует назначать по умолчанию опцию постоянно записывающего микрофона. Если ваша игра поддерживает более 4 игроков, данная опция не рекомендуется ни в коем случае. Когда игрок отпускает сочетание кнопок голосовой связи или игровая сессия заканчивается, необходимо вызвать функцию ISteamUser::StopVoiceRecording, чтобы остановить запись.

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

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

Пример

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

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

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