Steamworks 문서
Steam 음성
Steam 음성 API는 사용자의 마이크에서 오디오를 녹음할 수 있게 해주는 기능들의 집합입니다. 이 기능은 음성 채팅이나 음성 명령 시스템을 실행하는 데 이용할 수 있습니다.

음성 채팅 통합

게임의 음성 채팅은 다음과 같은 방법으로 구현할 수 있습니다.

  • 녹음
    먼저 ISteamUser::StartVoiceRecording을 호출하여 마이크 녹음을 시작합니다. 이 기능은 사용자가 PTT(누르고 말하기) 단축키를 누르거나 게임 세션을 시작할 때마다(마이크로 항상 녹음을 선택한 경우) 실행할 수 있습니다. 게임 특징에 따라 둘 중 하나를 사용하는 것도 좋지만, 플레이어가 항상 켜놓기 또는 누르고 말하기를 선택할 수 있는 기회를 제공하는 것이 가장 좋습니다. 다만, 항상 켜놓기를 기본으로 설정하는 것은 권하지 않으며, 게임이 4인 이상의 플레이어를 지원할 경우에는 더욱 권하지 않습니다. 플레이어가 누르고 말하기 단축키에서 손을 떼거나 게임 세션이 종료되면, 녹음 중지를 위해ISteamUser::StopVoiceRecording을 호출해야 합니다.

    사용자가 누르고 말하기 음성 채팅을 사용 중이라면, 녹음 시작 및 중지 시 ISteamFriends::SetInGameVoiceSpeaking을 호출하여 Steam 친구 사용자 인터페이스를 통해 대화하는 음성을 소거할 수 있습니다. 사용자가 이 기능을 활성화 및 비활성화 할 수 있는 선택권을 주는 것이 이상적입니다.

    녹음을 시작한 후에는 각 프레임마다 ISteamUser::GetAvailableVoice를 호출하여 압축된 음성 데이터가 없는지 확인해야 합니다. 음성 데이터가 있을 경우, ISteamUser::GetVoice를 사용해 마이크에서 최신 오디오 데이터를 가져와야 합니다.
  • 전송
    음성 데이터를 확보했다면 다른 플레이어에게 전달해야 합니다. Steam 음성 API는 직접 전송할 수 있는 방법을 제공하지 않으나, 원하는 모든 종류의 네트워크 라이브러리를 통해 전송이 가능합니다. Steam P2P 네트워킹을 선택해도 좋습니다.
  • 수신
    목표 대상 사용자가 음성 데이터를 수신하면 ISteamUser::DecompressVoice를 호출하여 압축된 데이터를 다시 오디오로 변환합니다.
    ISteamUser::DecompressVoice를 호출하기 전에 먼저 Steam 음성 압축 해제기의 샘플 속도를 받기 위해 ISteamUser::GetVoiceOptimalSampleRate를 선택적으로 사용할 수 있습니다. 이렇게 하면 CPU 점유율이 줄어들지만 음질이 떨어질 수 있습니다.

예시

Steamworks API Example Application (SpaceWar) API는 Steam 음성 API를 매우 뛰어나게 적용한 예입니다. 관련 내용은 voicechat.cpp/h 파일에서 찾아보실 수 있습니다.

도움이 필요하신가요?

Steamworks 개발자 토론을 방문하여 게시된 질문을 검색하거나 직접 질문을 게시해 보세요.