Steamworks 文獻庫
Steam 語音
Steam 語音 API 是一組可以從使用者的麥克風錄製音訊的函式, 可以用來實作語音聊天或語音指令系統。

語音聊天整合

遵循下列步驟即可在遊戲中實作語音聊天:

  • 錄製
    首先呼叫 ISteamUser::StartVoiceRecording 開始錄製使用者的麥克風。開始的時機可以是使用者按下隨按即說鍵,或是如果要一直錄製,則是在遊戲階段開始時。 根據您的遊戲性質兩者皆可能適宜,但理想的情況下,讓玩家能夠選擇永遠開啟或隨按即說是最好的。 幾乎沒有情況適合將預設設為永遠開啟。然而,如果您的遊戲支援四位以上玩家,則更強烈不建議使用永遠開啟。 當玩家放開了隨按即說鍵,或是當遊戲階段結束,呼叫 ISteamUser::StopVoiceRecording 即可停止錄製。

    當使用者正在使用隨按即說語音聊天,您可在開始和結束錄製時呼叫 ISteamFriends::SetInGameVoiceSpeaking 將使用者在 Steam 好友介面可能正在進行的聊天靜音。 最好能夠提供開啟或關閉此功能的選項。

    開始錄製後,每個影格呼叫 ISteamUser::GetAvailableVoice 來查看是否有壓縮的語音資料可用。 如果有,呼叫 ISteamUser::GetVoice 從麥克風取得最新的音訊資料。
  • 傳送
    有了語音資料後,您應該會想將它傳送給其他玩家。 Steam 語音 API 並沒有一個直接的傳送方法,但可以藉由任何您選擇的網路程式庫辦到。 Steam 對等網路連線 API 即是一個合適的選擇。
  • 接收
    當目標使用者收到了語音資料,呼叫 ISteamUser::DecompressVoice 來將壓縮的資料轉變回音訊。
    另外,呼叫 ISteamUser::DecompressVoice 前先呼叫 ISteamUser::GetVoiceOptimalSampleRate 可取得 Steam 語音解壓縮器的取樣率。這可以使用較少的 CPU,但有可能降低音質。

範例

Steamworks API Example Application (SpaceWar) 中有一個高品質的 Steam 語音 API 實作範例。 您可在 voicechat.cpp/h 檔案中找到相關的程式碼。

需要協助嗎?

造訪 Steamworks 開發者討論區搜尋他人提過的疑問,或發表自己的問題。