AudioContext suspendido tras volver a un juego en navegador

MusheghARMCP Mensajes publicados 1 Fecha de registro   Estado Miembro Última intervención   -  

Hola,

Busco una estrategia fiable para reanudar el sonido tras un cambio de visibilidad en un juego de navegador. El caso reproducible es esta página: https://armcp.net/angel-arena

Escenario :
1. el usuario inicia una sesión y el AudioContext pasa correctamente a « running »;
2. cambia de pestaña durante unos segundos ;
3. al volver, el contexto a veces permanece en « suspended » ;
4. llamar a resume() desde visibilitychange o focus no siempre funciona, ya que estos eventos no constituyen un gesto del usuario.

Por eso intenté memorizar una solicitud de reanudación, y luego llamar a audioContext.resume() en el próximo pointerdown o keydown. Eso funciona mejor, pero genera dos dificultades: los sonidos solicitados entre-tiempos deben ser ignorados o encolados, y puede ocurrir un doble disparo cuando pointerdown y click se siguen.

¿Qué arquitectura recomienda para centralizar este estado? ¿Conviene escuchar visibilitychange, pageshow y focus únicamente para marcar « reanudación necesaria », y luego realizar una sola reanudación en el próximo gesto del usuario? ¿Cómo evitar correctamente la cola de sonidos obsoletos y el doble disparo sin volver a crear el AudioContext?

Gracias por sus experiencias en Chrome, Firefox y Safari.