Dokumentacja Steamworks
Steam Voice
Interfejs Steam Voice jest zestawem funkcji pozwalających na nagrywanie dźwięku za pomocą mikrofonu użytkownika. Może być użyteczny przy implementacji czatu głosowego lub systemu sterowania głosem.

Integracja czatu głosowego

Czat głosowy może zostać zaimplementowany w następujący sposób:

  • Zapisywanie
    Najpierw wywołaj funkcję SteamUser::StartVoiceRecording, aby rozpocząć nagrywanie za pomocą mikrofonu. Wywołanie funkcji można wykonać za każdym razem, gdy użytkownik kliknie kombinację przycisków komunikacji głosowej lub na początku sesji gry, pod warunkiem, że mikrofon zostanie włączony w celu ciągłego nagrywania. W zależności od gry jedno lub drugie rozwiązanie może być bardziej użyteczne. Wydaje się jednak, że optymalnym rozwiązaniem byłoby umożliwienie graczom na opcję ciągłego nagrywania (always-on), jak również nagrywania na żądanie (push-to-talk). Najczęściej umożliwienie funkcji ciągłego nagrywania nie sprawdza się. W przypadku gier, które pozwalają na więcej niż 4 graczy, funkcja ta nie jest zalecana. Gdy gracz zwolni kombinację przycisków głosowych lub sesja gry się zakończy, należy wywołać funkcję ISteamUser::StopVoiceRecording, aby zatrzymać nagrywanie.

    Jeśli gracz użyje opcji przycisku głosowego (push-to-talk), można wywołać ISteamFriends::SetInGameVoiceSpeaking na początku i na końcu nagrania, aby wyciszyć każdy czat głosowy używany przez odtwarzacz w interfejsie znajomych Steam. Najlepszym rozwiązaniem byłoby umożliwienie użytkownikom na włączenie/wyłączenie tej funkcji.

    Po rozpoczęciu nagrywania należy wywołać funkcję SteamUser::GetAvailableVoice dla każdej klatki, aby sprawdzić, czy dostępne są skompresowane dane głosowe. Jeśli dane głosowe są dostępne, należy użyć ISteamUser::GetVoice, aby otrzymać najnowsze dane głosowe z mikrofonu.
  • Wysyłanie
    Kiedy masz już dane głosowe, możesz chcieć przesłać je innym graczom. Interfejs Steam Voice nie zapewnia środków, które by to umożliwiały. Można tego dokonać za pomocą wybranej biblioteki sieciowej. Funkcje API sieci peer-to-peer są świetną opcją w tym przypadku.
  • Otrzymywanie
    Gdy docelowi użytkownicy otrzymają dane głosowe, wywołują ISteamUser::DecompressVoice, aby zamienić skompresowane dane z powrotem w plik dźwiękowy.
    Opcjonalnie można użyć ISteamUser::GetVoiceOptimalSampleRate, aby uzyskać przykładową częstotliwość dekompresora Steam Voice przed wywołaniem ISteamUser::DecompressVoice. Spowoduje to zmniejszenie użycia procesora, ale może skutkować pogorszeniem jakości głosu.

Przykłady

Sekcja dokumentacji Steamworks API Example Application (SpaceWar) przedstawia wysokiej jakości implementację interfejsu Steam Voice. Niezbędne elementy można znaleźć w plikach voicechat.cpp/h.

Potrzebujesz pomocy?

Odwiedź forum dyskusyjne partnerów Steamworks, żeby uzyskać odpowiedzi na temat interesujących cię kwestii i zapoznać się z pytaniami innych użytkowników.