Faça do som parte de uma primeira ação clara
Um jogo que presume que o som começou pode exibir um ícone de som silenciado e continuar sem emitir áudio. Os navegadores geralmente restringem o áudio iniciado por script até que a pessoa faça uma ação, e uma solicitação de reprodução pode ser rejeitada ou resolvida com atraso. Projete a primeira interação para registrar a preferência de áudio do jogador e atualize a interface com base no resultado real da reprodução. Isso torna o comportamento previsível e evita surpreender alguém com um som inesperado.
Ofereça um botão visível para iniciar o jogo ou controlar o som. Em resposta à ação, inicie ou retome o contexto de áudio e mostre imediatamente o estado escolhido, tratando também qualquer rejeição da promessa de reprodução. Se o som for opcional, permita que o jogo continue em silêncio e ofereça um controle explícito para ativá-lo depois.
Mantenha o feedback e o estado do áudio alinhados
Não compare uma chamada bem-sucedida para play() com saída audível instantânea. A promessa pode ser liquidada de forma assíncrona e um navegador pode pedir permissão. Lide com a rejeição, exponha uma ação de nova tentativa quando for útil e não relate um erro que implique que todo o jogo falhou quando apenas o som estiver indisponível.
Separe a preferência do usuário da permissão de tempo de execução: uma escolha de mudo salva é a intenção do player, enquanto a permissão da reprodução no momento é uma condição do navegador. Teste as transições de silenciar, ativar o som, pausar, retomar e de cena de forma independente para que os efeitos não sejam reiniciados acidentalmente no volume máximo após uma mudança de estado.
Perguntas sobre inicialização do áudio do jogo do navegador
Posso reproduzir automaticamente a música do jogo após o carregamento da página?
Não presuma que vai funcionar. As regras de reprodução automática podem bloquear mídias audíveis e o Web Audio iniciado sem uma interação do usuário. Ofereça uma ação intencional e trate as falhas de reprodução.
O que o botão de som deve mostrar se a reprodução estiver bloqueada?
Mostre um estado honesto, como “som desligado” ou uma ação para ativar o som, de acordo com o resultado observado. O MDN recomenda responder à promessa de play() em vez de presumir que a reprodução começou.
Leitura complementar
Viu alguma informação desatualizada? Informar uma correção