Steamworks-dokumentation
Steam-stemme
Steams stemme-API indeholder en række funktioner, som gør det muligt at optage lyd fra brugerens mikrofon. Det kan bruges til implementering af stemmechat eller et stemmekommandosystem.

Integration af stemmechat

Du kan implementere stemmechat i dit spil med følgende trin:

  • Optage
    Kald først ISteamUser::StartVoiceRecording for at begynde at optage brugerens mikrofon. Dette kan kaldes, når som helst brugeren trykker på en tryk for at tale-genvejstast, eller i starten af gameplay-sessionen, hvis mikrofonen altid skal optage. Afhængigt af dit spil kan begge dele være fordelagtige, men det er bedst at give spillere mulighed for både "altid tændt" og "tryk for at tale". Det er dog sjældent en god idé med "altid tændt", og hvis dit spil understøtter flere end fire spillere, anbefales det aldrig at bruge "altid tændt". Når spilleren slår tryk for at tale-genvejen fra, eller gameplay-sessionen stopper, skal du kalde ISteamUser::StopVoiceRecording for at stoppe optagelsen.

    Hvis brugeren bruger tryk for at tale-stemmechat, kan du kalde ISteamFriends::SetInGameVoiceSpeaking, når du starter og stopper optagelsen for at slå lyden fra for stemmechats, som brugeren har gennem Steams vennebrugergrænseflade. Det ideelle ville være at give spillere mulighed for at slå denne funktionalitet til/fra.

    Når du er begyndt at optage, skal du kalde ISteamUser::GetAvailableVoice i hver frame for at kontrollere, om der er nogen komprimerede stemmedata tilgængelige. Hvis der er tilgængelige stemmedata, skal du bruge ISteamUser::GetVoice for at få de seneste lyddata fra mikrofonen.
  • Afsendelse
    Når du har stemmedataene, vil du sandsynligvis gerne sende dem til de andre spillere. Steam-stemme-API'et giver ikke mulighed for at gøre dette direkte, men du kan bruge et netværksbibliotek efter eget valg. Steams peer-to-peer-netværks-API'er er gode til dette.
  • Modtagelse
    Når målbrugerne modtager stemmedataene, kalder de ISteamUser::DecompressVoice for at forvandle de komprimerede data til lyd igen.
    Du kan eventuelt bruge ISteamUser::GetVoiceOptimalSampleRate for at få samplefrekvansen på Steams stemmeudpakningsprogram, inden ISteamUser::DecompressVoice kaldes. Dette vil resultere i lavere CPU-brug, men kan lide dårligere.

Eksempel

Steamworks-API-eksempel på applikation (SpaceWar) har en højkvalitetsimplementering af Steams stemme-API. Du kan finde de relevante stykker i filerne voicechat.cpp/h.

Brug for hjælp?

Gå til Steamworks-udviklerdiskussionerne for at søge efter spørgsmål, som andre har stillet. Du kan også selv svare på spørgsmål.