Documentación de Steamworks
API de Steam Voice
La API de Steam Voice es un conjunto de funciones que permiten grabar audio desde 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 a 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 rápida para hablar o al comienzo de una sesión de juego si el micrófono debería 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 suelte su tecla rápida para hablar o cuando la sesión de juego finalice, deberá hacerse una llamada a ISteamUser::StopVoiceRecording para detener la grabación.

    Si el usuario está usando el chat de voz con tecla de pulsar para hablar, puedes llamar a ISteamFriends::SetInGameVoiceSpeaking al iniciar 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. Lo ideal sería ofrecer a los jugadores la opción de habilitar o deshabilitar esta funcionalidad.

    Cuando empieces a grabar, debes llamar a ISteamUser::getAvailableVoice en cada fotograma para comprobar si hay datos de voz comprimidos disponibles. Si hay datos de voz disponibles, 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. Las API de conectividad P2P de Steam son 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, puedes usar ISteamUser::GetVoiceOptimalSampleRate para obtener la frecuencia de muestreo del descompresor de Steam Voice antes de llamar a ISteamUser::DecompressVoice. Esto reducirá el uso de la CPU, pero la calidad del sonido podría ser peor.

Ejemplo

El 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 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.