Wie soll ich den Ton in einem 2D-Spiel dämpfen, in dem Sie hinein- und herauszoomen können?


8

In meinem 2D-Spiel habe ich einige Umgebungsgeräusche wie das Geräusch eines Wasserfalls oder das Summen eines Generators. Es ist jedoch nicht praktikabel, diesen Klang die ganze Zeit mit voller Lautstärke abzuspielen, da in einem großen Pegel die Überlappung vieler solcher Geräusche für das Ohr ziemlich unangenehm wäre.

Ich denke derzeit an ein System, das die Lautstärke bestimmter Sounds in Abhängigkeit von ihrer Entfernung zum Player moduliert. Dies ist jedoch teilweise keine großartige Lösung, da der Player (zum Beispiel) in einem gezoomten Zustand möglicherweise ziemlich weit von der Schallquelle entfernt ist (wie ein Wasserfall), ihn aber dennoch auf dem Bildschirm sehen, aber nicht hören kann (aufgrund) in die Ferne), was ziemlich umständlich ist.

Gibt es eine Lösung für ein solches Problem?


3
"Best Practices" sind zu weit gefasst, aber es sieht so aus, als ob der Kern Ihrer Frage das Zoomen betrifft, das verantwortungsbewusster und interessanter ist. Also habe ich das "Best Practices" -Bit entfernt.

Antworten:


8

Ich denke, Sie sind auf dem richtigen Weg. Ihr vorgeschlagenes System zur entfernungsbasierten Dämpfung sollte funktionieren, wenn Sie

  • Verwenden Sie immer die Entfernung im Spiel zum Objekt vom Spieler, die unabhängig von der Zoomstufe fest bleibt (verwenden Sie nicht die Entfernung "auf dem Bildschirm", die sich beim Zoomen ändert) und

  • Richten Sie Ihr Dämpfungssystem so ein, dass die Geräusche eines Objekts abgespielt werden, sobald die Entfernung zum Player in der Welt so groß ist, dass das Objekt bei maximaler Zoomstufe für den Player fast sichtbar ist.

Auf diese Weise können Spieler Dinge hören, bevor sie sie sehen, was ein Gefühl von Realismus und Entdeckung vermittelt. Es verhindert auch die meisten Szenarien, in denen zu viele Umgebungsgeräusche abgespielt werden.

Natürlich haben Sie immer noch das Potenzial, den Umgebungsschallkanal zu überlasten, wenn Sie zufällig viele schallemittierende Objekte an derselben Stelle auf der Welt haben. Dies kann durch gelöst werden

  • Entwerfe deine Levels, um das nicht zu tun, oder, wenn das nicht machbar ist,

  • Objekte mit einer soliden Priorität versehen und nur nObjekte mit der höchsten Priorität nehmen, oder

  • Modulieren Sie die Lautstärke aller Umgebungsgeräusche durch (mehr oder weniger) "Teilen durch die Anzahl der Geräusche in der Szene", und stellen Sie sicher, dass Sie die Geräusche immer noch gleichmäßig ausblenden, wenn ihre Objekte weiter entfernt sind, um ein "Knallen" zu vermeiden Springe zum Beispiel diskret von fünf auf vier Objekte.

  • Berechnen Sie für ein bestimmtes Level oder das gesamte Spiel vorab die maximale Anzahl von Objekten, die sich in Reichweite befinden und gleichzeitig Sounds spielen können (tun Sie dies als Teil des Level- oder Spieldatenerstellungsprozesses). Darauf basierend können Sie bestimmen, wie laut ein Objekt so abgespielt werden soll, dass der Worst-Case eine bestimmte Lautstärke nie überschreitet.

Die beiden letztgenannten Optionen behandeln das Problem jedoch nur aus der Lautstärkeperspektive - sie berücksichtigen nicht die Tatsache, dass Sie selbst dann 500 Sounds spielen, wenn Sie 500 Hintergrundgeräusche leise genug spielen, um das Trommelfell eines Spielers nicht zu überfordern sein laut nicht im Volumen Sinne , sondern im Sinne verwirrend.

Um dieses Problem zu lösen, sollten Sie versuchen, die Gesamtzahl der Umgebungsstrahler zu reduzieren oder nur die nSounds mit der höchsten Priorität zu verwenden (als Referenz nist es mehr oder weniger das, worauf wir uns für Guild Wars 2 festgelegt haben).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.