Silnik gier: dźwięk, interfejs i animacja (Faza 5)
Silnik gier Moonlight kompletuje warsztat: Faza 5 dodaje dźwięk, interfejs gry i warstwę animacji — trzy rzeczy, które zamieniają techniczne demo w coś, co wygląda, brzmi i porusza się jak gra.
Dźwięk
Mikser gry oparty na lekkiej, przenośnej bibliotece audio: efekty odpalane „w locie" (dowolnie wiele naraz, miksują się same) i strumieniowana muzyka z głośnością, panoramą i zapętleniem. Węzeł odtwarzacza dźwięku ma autostart i sprząta po sobie przy wyjściu ze sceny. Formaty WAV/OGG/MP3/FLAC działają od ręki.
Interfejs: napisy i przyciski
Prawdziwy font TTF wypiekany do atlasu tekstur — a potem tekst i tła przycisków renderują się w tym samym, wydajnym batchu GPU co sprite'y. Zero osobnych ścieżek renderowania: napis to po prostu paczka małych quadów w tej samej kolejce. Przycisk reaguje na kliknięcie sygnałem „pressed" — czyli dokładnie tym mechanizmem, na który reagują już skrypty i graf zdarzeń. W demo nad grą z monetami wisi HUD z instrukcją i przyciskiem „Restart".
Animacja: te same krzywe co w Moonlight Animate
- Animacje klatkowe — węzeł sprite'a sekwencyjnego: klatki, fps, zapętlenie, sygnał zakończenia; posłuszny pauzie i tempu gry.
- Tweeny właściwości — płynne przejścia pozycji, obrotu, skali i krycia.
Najważniejszy szczegół: krzywe easingu w silniku to dokładnie ten sam zestaw, co na osi czasu Moonlight Animate i w odtwarzaczu scen na stronie — port funkcja-po-funkcji, zweryfikowany testami na wartościach referencyjnych. Animacja zaprojektowana w programie zagra w grze co do piksela tak samo. To także fundament pod odtwarzanie całych scen Moonlight Animate wewnątrz gier — zaplanowane razem z formatem projektu gry.
Stan silnika po pięciu fazach
Viewport z kamerą i batchem, sterowanie z remapem na żywo, fizyka, graf zdarzeń + skrypty, a teraz dźwięk, UI i animacja — wszystko w jednym przenośnym rdzeniu, z automatyczną bramką czystości i 24 grupami testów jednostkowych. Przed nami największy krok: format projektu gry i eksport — najpierw na komputery, potem do przeglądarki.