Documentación de Steamworks
Steam Voice
La API de Steam Voice es un conjunto de funciones que permiten grabar audio mediante el micrófono del usuario. Se puede usar para implementar chats de voz o un sistema de comandos de voz.

Integración de chats de voz

El chat de voz de tu juego puede implementarse mediante los siguientes pasos:

  • Grabación
    Primero, haz una llamada ISteamUser::StartVoiceRecording para iniciar la grabación del micrófono del usuario; puede llamarse a esta función siempre que un usuario pulse una tecla de acceso rápido para hablar o al comienzo de una sesión de juego si el micrófono está configurado para grabar en todo momento. Dependiendo del juego, cualquiera de ellas puede ser preferible, pero ofrecerles a los jugadores ambas opciones es lo ideal. Sin embargo, no suele ser una buena idea utilizar la grabación permanente como predeterminada y, si tu juego es compatible con más de cuatro jugadores, nunca se recomienda esta opción. Después, cuando el jugador suelta su tecla de acceso rápido para hablar, o cuando la sesión de juego finaliza, deberá hacerse una llamada a ISteamUser::StopVoiceRecording para detener la grabación.

    Si el usuario está usando chat de voz con tecla de pulsar para hablar, puede llamarse a ISteamFriends::SetInGameVoiceSpeaking cuando se empieza y detener la grabación para silenciar cualquier chat de voz que el usuario tenga activo a través de la interfaz de amigos de Steam. Idealmente, nunca se dará a los jugadores la opción de habilitar o deshabilitar esta funcionalidad.

    Después de empezar a grabar debe llamarse a ISteamUser::GetAvailableVoice para cada cuadro, con el fin de comprobar si hay datos de compresión de voz disponibles. Si hay datos disponibles de voz, entonces debes usar ISteamUser::GetVoice para obtener los datos de audio más recientes del micrófono.
  • Envío
    Una vez que tengas los datos de voz, probablemente quieras enviárselos a los demás jugadores. La API de Steam Voice no aporta medios para hacerlo directamente, pero puede hacerse con cualquier biblioteca de red de tu elección. La API de Steam en redes P2P es una magnífica opción para ello.
  • Recepción
    Cuando los destinatarios reciben los datos de voz, llaman a ISteamUser::DecompressVoice
    para convertir los datos comprimidos de nuevo en audio.
    Opcionalmente, podrá querer usarse para ISteamUser::GetVoiceOptimalSampleRate y obtener la frecuencia de muestreo del descompresor de Steam Voice antes de llamar a ISteamUser::DecompressVoice, esto dará como resultado un menor uso de la CPU, pero el sonido podría ser peor.

Ejemplo

El ejemplo Ejemplo de aplicación de la API de Steamworks (Spacewar!) contiene una implementación de gran calidad de la API de Steam Voice. Puedes encontrar las partes relevantes en los archivos de voicechat.cpp/h.

¿Necesitas ayuda?

Visita el foro de discusiones de los desarrolladores de Steamworks para buscar preguntas ya formuladas por otros y plantear las tuyas.