Como devo atenuar o som em um jogo 2D em que você pode aumentar e diminuir o zoom?

8

No meu jogo 2D, eu tenho alguns sons do ambiente, como o ruído de uma cachoeira ou o zumbido de um gerador. No entanto, não é prático tocar esse som o tempo todo no volume máximo, pois em um nível amplo a sobreposição de muitos desses ruídos seria bastante desagradável para o ouvido.

Atualmente, estou pensando em um sistema que modula o volume de certos sons, dependendo da distância do jogador. No entanto, isso não é, em parte, uma ótima solução, pois (por exemplo) em um estado ampliado, o player pode estar muito longe da fonte de som (como uma queda de água), mas ainda assim pode vê-lo na tela, mas não o escuta (devido à distância), o que é bastante estranho.

Existe uma solução para esse problema?

ares_games
fonte
3
As "melhores práticas" são muito amplas, mas parece que o ponto crucial da sua pergunta está relacionado ao zoom, que é mais responsável e interessante. Então eu removi o bit "melhores práticas".

Respostas:

8

Eu acho que você está no caminho certo. Seu sistema proposto de atenuação à distância deve funcionar se você

  • sempre use a distância do jogo em relação ao objeto do jogador, que permanece fixa, independentemente do nível de zoom (não use a distância "na tela", que muda conforme o zoom) e

  • configure seu sistema de atenuação para começar a tocar os sons de um objeto assim que a distância para o jogador no mundo for tal que o objeto fique quase visível ao jogador no nível máximo de zoom.

Dessa forma, os jogadores podem ouvir as coisas antes de vê-las, o que transmite uma sensação de realismo e descoberta. Também evita que a maioria dos cenários reproduza muitos sons do ambiente.

Obviamente, você ainda tem o potencial de sobrecarregar o canal de som ambiente se tiver muitos objetos emissores de som no mesmo local no mundo. Isso pode ser resolvido por

  • projetar seus níveis para não fazer isso ou, se isso não for viável,

  • dar aos objetos uma boa prioridade e receber apenas os nobjetos de maior prioridade, ou

  • modulando o volume de todos os sons do ambiente (mais ou menos) "dividindo pelo número de sons na cena", certificando-se de que você ainda desvanece suavemente os sons à medida que seus objetos se afastam, a fim de evitar "estalar" enquanto você discretamente pule de cinco objetos para quatro, por exemplo.

  • pré-computar, para um determinado nível ou o jogo inteiro, o número máximo de objetos que podem estar dentro do alcance e reproduzir sons de uma só vez (faça isso como parte do processo de criação de dados do nível ou do jogo). Com base nisso, você pode determinar a intensidade da reprodução de qualquer objeto, para que o pior caso nunca exceda um determinado volume.

Entretanto, as duas últimas opções abordam o problema puramente da perspectiva do volume - elas não explicam o fato de que, mesmo se você tocar 500 sons de fundo em silêncio o suficiente para não sobrecarregar os tímpanos de um jogador, ainda estará tocando 500 sons, o que pode seja barulhento, não no sentido do volume, mas no sentido confuso.

Para lidar com esse problema, acho melhor você tentar reduzir o número total de emissores ambientais ou usar apenas os nsons com prioridade máxima (para referência, assumir o topo né mais ou menos o que decidimos em Guild Wars 2).


fonte