Silnik gier: przepływ gry — sceny, trwały stan, HUD i postać
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.