Dokumentacja Steamworks
Steam Voice
API Steam Voice jest zestawem funkcji pozwalających na nagrywanie dźwięku za pomocą mikrofonu użytkownika. Można to wykorzystać do implementacji czatu głosowego lub systemu komend głosowych.

Integracja czatu głosowego

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

  • Nagrywanie
    Najpierw wywołaj SteamUser::StartVoiceRecording, aby rozpocząć nagrywanie za pomocą mikrofonu użytkownika. Można to wywołać za każdym razem, gdy użytkownik wciśnie skrót klawiszowy służący do komunikacji głosowej (tzw. naciśnij i mów, NIM) lub na początku sesji gry, jeśli mikrofon powinien ciągle nagrywać. W zależności od gry, jedno z tych rozwiązań może być preferowane, ale pozostawienie graczowi wyboru między nimi jest najlepszym wyjściem. Domyślne ustawienie zawsze włączonego mikrofonu rzadko kiedy się sprawdza, a jeżeli twoja gra posiada obsługę więcej niż 4 graczy, to taki system nigdy nie jest zalecany. Następnie gdy gracz zwolni swój klawisz NIM lub sesja gry się zakończy, należy wywołać ISteamUser::StopVoiceRecording, by zatrzymać nagrywanie.

    Jeżeli użytkownik korzysta z czatu głosowego z użyciem NIM, możesz wywołać ISteamFriends::SetInGameVoiceSpeaking, gdy rozpoczynasz i zatrzymujesz nagrywanie, by wyciszyć wszelki czat głosowy, z jakiego użytkownik może korzystać za pomocą interfejsu znajomych Steam. Najlepszym rozwiązaniem byłoby umożliwienie użytkownikom na włączenie/wyłączenie tej funkcji.

    Po rozpoczęciu nagrywania wywołaj SteamUser::GetAvailableVoice w każdej klatce, aby sprawdzić, czy dostępne są jakiekolwiek skompresowane dane głosowe. Jeśli dane głosowe są dostępne, następnie musisz 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. API Steam Voice nie zapewnia środków umożliwiających wykonanie tego bezpośrednio, ale można to zrobić za pomocą dowolnej wybranej przez ciebie biblioteki zapewniającej funkcjonalności sieciowe. API Steam dla sieci peer-to-peer są w tym przypadku świetną opcją.
  • Otrzymywanie
    Gdy docelowi użytkownicy otrzymają dane głosowe, wywołują ISteamUser::DecompressVoice, aby zamienić skompresowane dane z powrotem w dźwięk.
    Opcjonalnie możesz chcieć użyć ISteamUser::GetVoiceOptimalSampleRate, aby otrzymać częstotliwość próbkowania dekompresora Steam Voice przed wywołaniem ISteamUser::DecompressVoice. Spowoduje to zmniejszenie użycia procesora, ale może skutkować pogorszeniem jakości głosu.

Przykład

Tutaj znajdziesz wysokiej jakości implementację API Steam Voice. Niezbędne elementy można znaleźć w plikach voicechat.cpp/h.

Potrzebujesz pomocy?

Odwiedź forum dyskusyjne w grupie Steamworks Development, by znaleźć odpowiedzi na zadane już pytania lub zadać własne.