11.07.2026 12:14

Silnik gier: przepływ gry — sceny, trwały stan, HUD i postać

⏱️ 3 min read
Share:

Po domknięciu eksportu do jednego pliku silnik gier 2D dostał kolejny pakiet fundamentów — tym razem o przepływie całej gry: jak przechodzi się między ekranami, co przeżywa te przejścia, jak rysować interfejs nad światem gry i jak poruszać postacią, która nie przenika przez ściany.

Zmiana sceny jednym poleceniem

Gra to nie jedna scena — to menu, poziomy, ekran wyniku. Od teraz skrypt (albo węzeł grafu logiki) woła po prostu change_scene("poziom-2"): stara scena znika w całości, nowa ładuje się z paczki gry. Zamiana jest odroczona do granicy klatki — nigdy nie wykonuje się w środku logiki, więc skrypt może ją zawołać w dowolnym momencie (np. przy zebraniu ostatniej monety) bez ryzyka, że wytnie grunt spod własnych nóg. Ten sam mechanizm działa w podglądzie Play w edytorze i w samodzielnym odtwarzaczu.

Trwały stan między scenami: autoloady

Skoro sceny się wymieniają, potrzebne jest miejsce na to, co ma przetrwać: liczba monet, postęp, menedżer muzyki. W manifeście gry deklaruje się autoloady — globalne obiekty (skrypt lub cała pod-scena), tworzone raz przy starcie gry i żyjące obok wymienialnych scen. Zmiana poziomu ich nie dotyka; skrypt singletona startuje jeszcze przed sceną startową, więc pierwsza scena może od razu z niego korzystać. Ochrona przed duplikatami przy ponownym wczytaniu jest wbudowana.

Warstwa ekranu: HUD niezależny od kamery

Nowy węzeł warstwy ekranowej sprawia, że jego poddrzewo rysuje się w przestrzeni ekranu — kamera może jeździć po świecie, a licznik punktów, pasek życia czy tło parallax stoją w miejscu. Numer warstwy porządkuje całe plany (świat, interfejs nad nim, tła pod nim), a w obrębie warstwy działa zwykła kolejność głębokości. To fundament pod pełny system interfejsu gry z kotwicami ekranu, który przyjdzie z edytorem gier.

Ciało postaci: ruch bez tunelowania

Największy kawałek tego etapu to gotowy węzeł postaci. Zamiast ręcznie składać ciało fizyczne i pilnować kolizji, ustawia się prędkość i woła move_and_slide co klatkę — postać ślizga się po podłodze, zatrzymuje na ścianach i nie przenika przez przeszkody nawet przy dużych prędkościach, bo kolizje rozwiązuje pełny solver fizyki. Do tego proste pytania: „czy stoję na podłodze?", „czy dotykam ściany?" — liczone z rzeczywistych normalnych kontaktu, z konfigurowalnym progiem nachylenia podłogi. Grawitację kontroluje logika gry (klasyczny idiom platformówki), a kształty postaci są beztarciowe, żeby docisk do podłoża nie ścierał prędkości marszu.

Przy okazji tego etapu przez cały nowy kod przeszedł osobny audyt — wyłapał i zamknął m.in. subtelny błąd czasu życia obiektów przy zmianie sceny w tej samej klatce, w której coś usunięto, oraz cichy wyciek pamięci przy podpinaniu sygnałów ze skryptów w scenach wymienianych wielokrotnie. Wszystko pokryte testami regresyjnymi — silnik ma ich już 31 grup, uruchamianych bez okna, na czystej logice.

Następny krok łuku: model projektu gry — „Nowa gra" z szablonami, ustawienia projektu i doki edytorskie wokół drzewa sceny.

📚 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.