Silnik gier: muzyka, która ścisza się pod dialogiem (ducking)
Silnik gier 2D Moonlight Studio dostał ducking — automatyczne przyciszenie jednej kategorii dźwięku na czas, z płynną obwiednią. To ten mało zauważalny, a wszechobecny zabieg: gdy postać zaczyna mówić, muzyka schodzi o kilka decybeli, a po kwestii wraca. Bez tego dialog ginie w podkładzie.
Jedna linijka przed dialogiem
mp.duck("music", 0.3, 0.1, 1.0, 0.5)
Czyli: przycisz „music" do 30% w 0,1 s, potrzymaj 1 s, i przez 0,5 s wróć do pełnej głośności. Efekty i głosy grają przez ten czas bez zmian — ściszasz tylko wskazaną kategorię.
Do sterowania w locie:
mp.stop_duck("music") -- natychmiast zacznij powrót
local trwa = mp.is_ducking("music")
Osobna oś od suwaka gracza
Najważniejszy szczegół jest niewidoczny: ducking nie walczy z ustawieniem głośności z opcji. Gracz może mieć muzykę na 60%, a ducking i tak przyciszy ją względem tego — dwa niezależne mnożniki. Gdyby ducking i suwak dzieliły jedno pokrętło, ruszenie suwaka w trakcie ściszania zdejmowałoby duck na jedną klatkę i słychać by było „pyknięcie". Tutaj to po prostu nie może się zdarzyć — pod maską jedna wspólna formuła liczy końcową głośność każdego dźwięku z obu osi naraz.
Zaprojektowane, by nie „pyknąć"
- Ponowny duck w trakcie startuje z bieżącego poziomu, nie od zera — kilka nakładających się wyzwoleń (np. seria szybkich kwestii) nie robi skoku głośności w górę.
- Powrót jest dokładny — obwiednia wraca do pełnej głośności co do joty, bez dryfu, który po wielu duckach zostawiłby muzykę odrobinę za cicho na zawsze.
- Liczy się w czasie gry — pauza zamraża obwiednię, spowolnienie ją rozciąga; ściszenie zachowuje się jak reszta świata.
Co dalej
Fundament jest gotowy. W kolejce: automatyczne wyzwalanie ducka, gdy zagra dźwięk na kanale dialogu (sidechain), oraz więcej kategorii do osobnej regulacji.