Documentação do Steamworks
API de voz do Steam
A API de voz do Steam é um conjunto de funções que permitem a gravação de áudio do microfone do utilizador. Pode ser usada para implementar um sistema de ações por voz ou chat de voz.

Integração de chat de voz

Siga os passos abaixo para implementar chat de voz no seu jogo:

  • Gravação
    Primeiro, chame a função ISteamUser::StartVoiceRecording para começar a gravar o microfone do utilizador. Esta função deve ser chamada sempre que o utilizador estiver a pressionar uma tecla "pressionar para falar" ou no início da sessão de uma partida (se pretender que o microfone esteja sempre a gravar). A melhor destas duas opções irá depender do seu jogo, mas o ideal seria que os jogadores tivessem acesso a ambas (microfone sempre ligado e "pressionar para falar"). Raramente é uma boa ideia ter a opção de microfone sempre ligado como a predefinida; se as sessões do seu jogo forem jogadas por mais de 4 jogadores, essa opção nunca é a recomendada. Depois, quando o jogador deixar de pressionar a tecla para falar ou a sessão do jogo terminar, deve chamar a função ISteamUser::StopVoiceRecording para terminar a gravação.

    Se o utilizador pressionar uma tecla para falar, chame a função ISteamFriends::SetInGameVoiceSpeaking quando começar e terminar a gravação para silenciar qualquer chat de voz em que o utilizador esteja a participar pela interface de amigos do Steam. De preferência, dê aos jogadores a opção de ativar/desativar esta funcionalidade.

    Depois de começar a gravar, chame a função ISteamUser::GetAvailableVoice a cada frame para verificar se há dados de voz com compressão disponíveis. Se sim, use a função ISteamUser::GetVoice para receber os dados de áudio mais recentes do microfone.
  • Envio
    Assim que tiver os dados de voz, é provável que os queira enviar para os outros jogadores. A API de voz do Steam não tem os meios para gerir o envio diretamente, mas pode fazê-lo com uma biblioteca de rede à sua escolha. As APIs de rede P2P do Steam são uma boa opção.
  • Receção
    Quando os outros utilizadores receberem os dados de voz, devem chamar a função ISteamUser::DecompressVoice para converter em áudio os dados com compressão.
    Opcionalmente, pode querer usar a função ISteamUser::GetVoiceOptimalSampleRate para obter a taxa de amostragem do descompressor de voz do Steam antes de chamar a função ISteamUser::DecompressVoice. Isto resultará numa utilização mais baixa do processador, mas numa qualidade pior do som.

Exemplo

A Aplicação de exemplo da API do Steamworks (Spacewar) contém uma implementação de alta qualidade da API de voz do Steam. Pode encontrar as partes relevantes nos ficheiros voicechat.cpp/h.

Precisa de ajuda?

Visite os fóruns de discussão de developers Steamworks para procurar dúvidas que outros utilizadores tenham tido e para esclarecer as suas.