Silnik gier: platformy ruchome, które naprawdę niosą
Silnik gier 2D Moonlight Studio dostał ruchome platformy z pełnym „niesieniem" postaci. To jeden z tych elementów platformówki, którego nikt nie zauważa, dopóki działa — i który psuje całą grę, gdy nie działa: wskakujesz na jadącą platformę, a ona… wyjeżdża ci spod nóg, bo fizyka nie wie, że powinieneś jechać razem z nią.
Zero kodu gry
Platformę składasz z klocków, które już są w silniku: ścieżka wyznacza trasę, podążający jedzie po niej, a podpięte pod niego ciało kinematyczne z koliderem koliduje jak każda inna podłoga. Nowość jest pod maską: ciała podążają teraz za swoim położeniem w świecie, więc mogą być zagnieżdżone pod ruchomym rodzicem — i naprawdę jeżdżą.
Niesienie postaci dzieje się samo. Silnik śledzi, na czym postać stoi, i co krok fizyki przekazuje jej prędkość powierzchni. Postać nie zsuwa się z jadącej platformy, jedzie z nią w dół bez utraty kontaktu z podłożem, a wniesiona w ścianę zostaje poprawnie zablokowana — bo ruch integruje solver fizyki, nie doklejka na pozycji.
Zeskok, który niesie
Drugi klasyk: wyskok z jadącej platformy powinien nieść. Zejście z krawędzi, skok albo nawet zniknięcie platformy pod nogami przekazuje postaci jej pęd — raz, dokładnie w chwili utraty podłoża. Skrypt może ten pęd odczytać nowym mp.velocity(postać) i modyfikować zamiast nadpisywać:
local vx, vy = mp.velocity(hero)
if mp.is_action_pressed("right") then vx = vx + 40 end
mp.move_and_slide(hero, vx, vy)
Zaprojektowane, by się nie rozjechać
Najtrudniejsza część jest niewidoczna: prędkość powierzchni jest wstrzykiwana przed krokiem solvera i zdejmowana zaraz po nim — symetrycznie. Dzięki temu:
- postać, której skrypt nic nie robi (NPC stojący na platformie), jedzie równo i nigdy nie przyspiesza sama z siebie,
- klatka z dwoma krokami fizyki nie podwaja niesienia,
- ściana, która pochłonęła część niesionego ruchu, nie zamienia się w „odrzut" w przeciwną stronę,
- odczyt prędkości w skrypcie pozostaje czysty — stojąc na jadącej platformie widzisz zero, nie prędkość platformy.
Do tego platforma skasowana w trakcie jazdy jest w pełni bezpieczna (postać dostaje jej pęd i leci dalej), a platformy jednokierunkowe też mogą jeździć — przelot od dołu i lądowanie na wierzchu działają w ruchu.
Deterministycznie
Ruch po ścieżce liczy się teraz w kroku fizyki, nie w klatce renderowania — ta sama gra daje ten sam przejazd niezależnie od wydajności maszyny, a pauza i spowolnienie działają jak w całej reszcie świata gry.
Co dalej
W kolejce: przenoszenie obrotu platformy na pasażera oraz platformy okrężne z polem grawitacji.