Documentação do Steamworks
Voz no Steam
A API de voz do Steam é um conjunto de funções que permitem a gravação de áudio do microfone do usuário em um formato comprimido ou não. Pode ser usada para implementar um sistema de conversa por voz ou comandos por voz.

Integração de conversa por voz

É possível implementar conversa por voz no jogo seguindo os passos a seguir:

  • Gravação
    Primeiro chame a função ISteamUser::StartVoiceRecording para começar a gravar o microfone do usuário. Esta função deve ser chamada sempre que o usuário estiver pressionando a tecla de pressione para falar ou no início da sessão de partida se o microfone estiver sempre gravando. A melhor dependerá do jogo, mas dar aos jogadores a opção de microfone sempre ligado e pressione para falar é ideal. Raramente é uma boa ideia usar a opção de deixar sempre ligado como padrão e se o jogo tiver mais de 4 jogadores, esta opção nunca é recomendada. Quando o jogador soltar a tecla de pressionar para falar ou a sessão de partida acabar, chame a função ISteamUser::StopVoiceRecording para encerrar a gravação.

    Se o usuário estiver usando uma tecla para começar a falar, chame a função ISteamFriends::SetInGameVoiceSpeaking quando começar e encerrar a gravação para silenciar qualquer conversa que o jogador esteja tendo pela interface de usuário de amigos do Steam. Se possível, dê aos jogadores a opção de ativar/desativar esse recurso.

    Depois de começar a gravar, chame a função ISteamUser::GetAvailableVoice a cada quadro para verificar se há dados de voz comprimidos disponíveis. Em caso positivo, use a função ISteamUser::GetVoice para receber os dados de áudio mais recentes do microfone.
  • Envio
    Depois de recuperar os dados de voz, é provável que queira enviá-los aos outros jogadores. A API de voz do Steam não cuida disso diretamente, mas pode ser feito com a biblioteca de rede de sua preferência. As APIs de rede P2P do Steam são uma ótima opção.
  • Recebimento
    Quando os outros usuários receberem os dados de voz, eles devem chamar a função ISteamUser::DecompressVoice para converter os dados comprimidos em áudio.
    Opcionalmente, use a função ISteamUser::GetVoiceOptimalSampleRate para recuperar a taxa de amostra do descompressor de voz do Steam antes de chamar a função ISteamUser::DecompressVoice; isso resultará em menor uso de CPU, mas com pior qualidade de som.

Exemplo

O Aplicativo de exemplo da API do Steamworks (SpaceWar) contém uma implementação de alta qualidade da API de voz do Steam. Encontre as peças relevantes nos arquivos voicechat.cpp/h.

Precisa de ajuda?

Acesse as discussões para desenvolvedores Steamworks para buscar dúvidas tiradas por usuários e tirar as suas.