Steamworks ドキュメンテーション
Steam音声通信
Steam Voice APIは、ユーザーのマイクからオーディオを録音できる一連の機能です。 これは、ボイスチャットまたは音声コマンドシステムの実装に使用できます。

ボイスチャットの実装

ボイスチャットは、以下の手順でゲームに実装できます:

  • 録音
    まず、ISteamUser::StartVoiceRecordingを呼び出して、ユーザーのマイクからの録音を開始します。ユーザーがプッシュツートークのホットキーを押す度に、また、マイクで常に録音する必要がある場合はゲームのプレイセッション開始時に、このAPIを呼び出してください。 ゲームによって推奨される方法は異なりますが、プレイヤーに常時録音とプッシュツートークの両方のオプションを与えることが理想的です。 ただし、常時録音をデフォルトにすることは推奨していません。また、ゲームが4人以上のプレイヤーをサポートしている場合は、常に録音することは決してお勧めできません。 プレイヤーがプッシュツートークのホットキーを放したとき、またはゲームのプレイセッションが終了したら、ISteamUser::StopVoiceRecordingを呼び出して録音を停止します。

    ユーザーによるプッシュツートークボイスチャットの録音を開始および停止する場合、ISteamFriends::SetInGameVoiceSpeakingを呼び出すと、SteamフレンドUIを通じて実行しているその他のユーザーのボイスチャットをミュートすることができます。 プレイヤーにこの機能を有効/無効にするオプションを与えることができれば理想的です。

    録音開始後、各フレームに ISteamUser::GetAvailableVoiceを呼び出して、利用可能な圧縮音声データがあるかどうかを確認します。 もし音声データがある場合は、ISteamUser::GetVoiceを呼び出して、マイクから最新の音声データを取得してください。
  • 送信
    取得した音声データを、他のプレイヤーへ送信したい場合、 Steam Voice APIでは直接データを送信する手段を提供しませんが、ご利用のネットワークライブラリによってデータの送信が可能です。 SteamピアツーピアネットワーキングAPIは音声データの送信には、非常に便利なオプションです。
  • 受信
    ターゲットユーザーが音声データを受信すると、ISteamUser::DecompressVoiceを呼び出して圧縮データを展開し再生可能なオーディオに戻します。
    必要に応じて、ISteamUser::DecompressVoiceを呼び出す前にISteamUser::GetVoiceOptimalSampleRateを呼び出して、Steam Voiceによる圧縮のサンプルレートを取得できますが、これによりCPUの使用率は低くなるものの、音質は低下する可能性があります。

Steamworks APIのサンプルアプリケーション(SpaceWar)では高音質のSteam Voice APIの実装例を紹介しています。 関連するコードはvoicechat.cpp/hファイルを参照してください。

お困りですか?

誰かが質問済みの内容の検索や、質問の投稿にはSteamworks開発者掲示板をご利用ください。