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

ボイスチャットの実装

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

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

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

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

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

ヘルプが必要ですか?

Steamworks 開発者掲示板で他の人からの質問を検索したり、あなたの質問を投稿してください。