Steamworks-Dokumentation
Steam Voice
Die Steam-Voice-API umfasst eine Reihe von Funktionen, mit denen Sie Audiodaten über das Mikrofon des Nutzers aufzeichnen können. So können Sie Sprachchats oder ein Sprachsteuerungssystem implementieren.

Sprachchatintegration

Mit den folgenden Schritten können Sie Sprachchat in Ihrem Spiel implementieren:

  • Aufnehmen
    Rufen Sie zuerst ISteamUser::StartVoiceRecording auf, um mit der Aufnahme des Mikrofon des Nutzers zu beginnen. Dies könnte immer dann aufgerufen werden, wenn der Nutzer einen Push-to-Talk-Hotkey drückt, oder bei jedem Start der Spielsitzung, falls das Mikrofon immer aufnehmen soll. Je nach Spiel kann dies von Vorteil sein, aber es ist ideal, wenn den Spielern die Option geboten wird, selbst zwischen permanenter Aktivierung und Push-to-Talk zu wählen. Es ist selten eine gute Idee, als Voreinstellung permanente Aktivierung zu verwenden. Falls Ihr Spiel mehr als 4 Spieler unterstützt, wird ausdrücklich davon abgeraten. Wenn der Spieler seinen Push-to-Talk-Hotkey loslässt oder wenn die Spielsitzung endet, sollten Sie ISteamUser::StopVoiceRecording aufrufen, um die Aufnahme zu stoppen.

    Falls der Benutzer Push-to-Talk-Sprachchat verwendet, können Sie ISteamFriends::SetInGameVoiceSpeaking aufrufen, wenn Sie die Aufnahme starten und stoppen, um jeden Sprachchat, den der Nutzer über die Nutzeroberfläche von Steam-Freunde durchführt, stummzuschalten. Im Idealfall bieten Sie Spielern die Möglichkeit, diese Funktion zu aktivieren oder zu deaktivieren.

    Nach dem Starten der Aufnahme sollten Sie bei jedem Frame ISteamUser::GetAvailableVoice aufrufen, um zu überprüfen, ob komprimierte Sprachdaten verfügbar sind. Wenn Sprachdaten verfügbar sind, müssen Sie ISteamUser::GetVoice verwenden, um die neuesten Audiodaten vom Mikrofon abzurufen.
  • Senden
    Sobald Sie die Sprachdaten haben, werden Sie diese wahrscheinlich an die anderen Spieler senden wollen. Die Steam-Voice-API stellt keine Möglichkeiten dafür bereit, dies direkt zu tun, Sie können dazu aber eine beliebige Netzwerkbibliothek Ihrer Wahl verwenden. Die Peer-to-Peer-Netzwerk-APIs von Steam eignen sich hervorragend dazu.
  • Empfangen
    Wenn die Zielnutzer die Sprachdaten empfangen, rufen sie ISteamUser::DecompressVoice auf, um die komprimierten Daten wieder in Audiodaten umzuwandeln.
    Optional könnten Sie ISteamUser::GetVoiceOptimalSampleRate verwenden, um die Abtastrate des Steam-Voice-Dekomprimierers abzurufen, bevor Sie ISteamUser::DecompressVoice aufrufen. Dies hat eine geringere CPU-Auslastung zur Folge, unter Umständen aber auch einen schlechteren Klang.

Beispiel

Im Steamworks-API-Beispielanwendung (SpaceWar) finden Sie eine qualitativ hochwertige Implementierung der Steam-Voice-API. Die relevanten Teile finden Sie in den Dateien voicechat.cpp/h.

Benötigen Sie Hilfe?

Besuchen Sie das Steamworks-Entwicklerdiskussionsforum, um nach Antworten zu Fragen zu suchen, die andere gestellt haben, und um selbst Fragen zu stellen.