En mi juego 2D, tengo algunos sonidos ambientales como el ruido de una cascada o el zumbido de un generador. Sin embargo, no es práctico reproducir estos sonidos todo el tiempo a todo volumen, ya que en un gran nivel la superposición de muchos de estos ruidos sería bastante desagradable para el oído.
Actualmente estoy pensando en un sistema que modula el volumen de ciertos sonidos dependiendo de su distancia al reproductor. Sin embargo, esto en parte no es una gran solución ya que (por ejemplo) en un estado ampliado, el reproductor podría estar bastante lejos de la fuente de sonido (como una caída de agua) pero aún así poder verlo en la pantalla pero no escucharlo (debido a la distancia) que es bastante incómodo.
¿Hay una solución para tal problema?
Respuestas:
Creo que estás en el camino correcto. Su sistema propuesto de atenuación basada en la distancia debería funcionar si usted
siempre use la distancia en el juego al objeto desde el jugador, que permanece fija independientemente del nivel de zoom (no use la distancia "en pantalla", que cambia a medida que hace zoom) y
configure su sistema de atenuación para comenzar a reproducir los sonidos de un objeto tan pronto como su distancia al jugador en el mundo sea tal que el objeto sea casi visible para el jugador al máximo nivel de zoom.
De esta manera, los jugadores pueden escuchar las cosas antes de verlas, lo que imparte una sensación de realismo y descubrimiento. También evita la mayoría de los escenarios de reproducir demasiados sonidos ambientales.
Por supuesto, todavía tiene el potencial de sobrecargar el canal de sonido ambiental si tiene muchos objetos emisores de sonido en el mismo lugar del mundo. Esto puede ser resuelto por
diseñando tus niveles para no hacer eso o, si eso no es viable,
dando a los objetos una prioridad de sonido y tomando solo los
n
objetos de mayor prioridad, omodulando el volumen de todos los sonidos ambientales mediante (más o menos) "dividiendo por el número de sonidos en la escena", asegurándose de que aún se desvanecen suavemente a medida que sus objetos se alejan para evitar "estallar" a medida que salte discretamente de cinco objetos a cuatro, por ejemplo.
precomputar, para un nivel dado o para todo el juego, el número máximo de objetos que pueden estar dentro del rango y reproducir sonidos a la vez (haga esto como parte del proceso de creación de datos de nivel o juego). En base a eso, puede determinar qué tan alto reproducir cualquier objeto de manera que el peor de los casos nunca exceda un cierto volumen.
Sin embargo, las dos últimas opciones abordan el problema únicamente desde una perspectiva de volumen: no tienen en cuenta el hecho de que incluso si reproduce 500 sonidos de fondo lo suficientemente silenciosos como para no abrumar los tímpanos de un jugador, todavía está reproduciendo 500 sonidos, que pueden No sea ruidoso en el sentido del volumen sino en el sentido confuso.
Para manejar ese problema, creo que es mejor tratar de reducir la cantidad total de emisores ambientales o tomar solo los
n
sonidos con mayor prioridad (para referencia, tomar la parte superiorn
es más o menos lo que decidimos para Guild Wars 2).fuente