13.07.2026 11:37

Silnik gier: platformy ruchome, które naprawdę niosą

⏱️ 3 min read
Share:

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.

📚 Related posts

27.08.2026 20:55

Data, której nie cofniemy nawet my

Każdy certyfikat autorstwa dostaje datę zapisaną w blockchainie Bitcoina — takiej nie podważy nikt, my też nie. Sprawdzisz ją bez konta i bez Moonligh...
Continue reading →
27.08.2026 19:35

Twój kolor, wszędzie

Trzy tryby i siedem akcentów, wspólnych dla strony i Moonlight Animate. Motyw jedzie z kontem, profil pokazuje gościom Twoje kolory, a harmonogram sam...
Continue reading →
27.08.2026 18:31

Kto moderuje i na jakiej podstawie

Moderator to teraz osobna rola z własnym zakresem, a nie administrator w przebraniu. Odrzucenie treści wymaga powodu, który trafia do autora razem z d...
Continue reading →

📧 Stay up to date!

Join the waitlist to get notified about new Dev Blog posts and Moonlight platform launch.