11.07.2026 13:10

Silnik gier: projekt gry, debugowanie i zapis stanu

⏱️ 3 min read
Share:

Silnik gier 2D przestaje być zestawem klocków dla programisty i zaczyna wyglądać jak narzędzie twórcy: doszedł model projektu gry z szablonami, panel debugowania na żywo oraz zapis i wczytywanie stanu gry.

Nowa gra w minutę: projekt i szablony

W menu Plik pojawiła się pozycja Nowa gra… — gra powstaje jako projekt: katalog z ustawieniami, scenami, skryptami i grafikami, a nie pojedynczy plik. W dialogu wybiera się nazwę, lokalizację, rozdzielczość projektową i szablon 2D:

  • Platformowa — od razu grywalna: podłoga, platforma (w zasięgu skoku — sprawdziliśmy fizykę), postać sterowana A/D ze skokiem na spacji i etykieta HUD na warstwie ekranowej,
  • Top-down — arena ze ścianami i ruch w czterech kierunkach,
  • Pusta — czysty punkt startowy.

Każdy projekt dostaje globalny stan gry (autoload), domyślną mapę klawiszy i startową teksturę. Druga nowa pozycja — Eksportuj grę (.mgame)… — pakuje cały katalog projektu do samodzielnej paczki dla odtwarzacza; eksport odmawia, jeśli projektowi brakuje sceny startowej, więc niedziałająca paczka nie ma prawa powstać. Rozdzielczość projektowa staje się rozmiarem okna gry.

Debugowanie: widzieć grę od środka

Nowe okno Silnik gier: Debug pokazuje działającą grę od podszewki: drzewo sceny na żywo (odświeżane co pół sekundy, z oznaczonymi obiektami globalnymi), inspektor węzła z transformacją i pełnym podglądem tablicy stanu — czyli podgląd „ile złota ma gracz" w trakcie gry, bez jednej linijki dodatkowego kodu — oraz pasek wydajności: FPS, liczba poleceń rysowania, sprite'ów i węzłów. To pierwsza warstwa debuggera; edycja wartości na żywo, konsola i punkty wstrzymania w skryptach przyjdą w kolejnej.

Pauza, która nie zamraża menu

Zatrzymanie gry jednym poleceniem wstrzymuje logikę, fizykę i animacje — ale wejście działa dalej, a węzeł oznaczony jako „działa w pauzie" (wraz z całym poddrzewem) tyka normalnie. Efekt: w pełni interaktywne menu pauzy nad zamrożoną grą, klasyka gatunku. Do tego sceny-nakładki: scenę można dołożyć NA bieżącą, bez jej usuwania — menu, okno dialogowe, ekwipunek.

Zapis gry w slotach

save_game i load_game domykają pętlę dłuższych gier. Zapis obejmuje nazwę bieżącej sceny i stan wszystkich obiektów globalnych; wczytanie przebudowuje scenę od świeża i przywraca stan. Za tym stoi prosta, twarda zasada projektowa: wszystko, co ma przetrwać — złoto, postępy, otwarte skrzynie — żyje w obiektach globalnych, nie w scenie. Uszkodzony plik zapisu jest odrzucany, a nieudane wczytanie wraca do ostatniej działającej sceny zamiast zostawić czarny ekran.

Całość, jak zwykle w tym silniku, jest pokryta testami uruchamianymi bez okna — od skoku postaci, przez bramkę pauzy w obu warstwach skryptowych, po pełny obieg zapisu i wczytania. Następne kroki łuku: konsola debuggera z prawdziwym przechwytywaniem logów silnika i dalsze klocki treści dla szablonów.

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