Silnik gier: eksport gry do jednego pliku i samodzielny odtwarzacz
Szósta faza silnika gier 2D domyka pierwszy pełny obieg twórczy: grę zbudowaną w oknie Play można teraz wyeksportować do jednego pliku i uruchomić poza edytorem — na komputerze, na którym Moonlight Animate w ogóle nie jest zainstalowany.
Format .mgame — cała gra w jednym pliku
Wyeksportowana gra to pojedyncza paczka .mgame (wewnętrznie ZIP), która zawiera wszystko, czego potrzebuje rozgrywka:
- scenę w czytelnym JSON — pełne drzewo węzłów gry: transformacje, sprite'y, kamera, ciała i strefy fizyczne, elementy interfejsu, animacje i szkielety postaci,
- skrypty zapisane bezpośrednio przy węzłach, do których należą,
- mapę wejścia — przypisania klawiszy i pada zdefiniowane w edytorze jadą razem z grą,
- grafiki użyte przez scenę.
Paczka jest samowystarczalna: nie odwołuje się do projektu, edytora ani żadnych plików na dysku twórcy. Format sceny jest tekstowy i deterministyczny — ta sama scena zapisuje się zawsze tak samo, co ułatwia wersjonowanie i diffowanie gier jak zwykłego kodu.
Samodzielny odtwarzacz
Do paczki dochodzi drugi element: mały, niezależny program-odtwarzacz. Uruchamia się go jednym poleceniem:
engine-player moja-gra.mgame
Otwiera własne okno i po prostu gra: fizyka, sterowanie klawiaturą i padem, kamera, skrypty i logika zdarzeń — wszystko działa dokładnie tak, jak w podglądzie Play w edytorze. To nie jest „podobna" implementacja: odtwarzacz wykonuje ten sam kod silnika co edytor, więc między „u mnie działa" a wyeksportowaną grą nie ma żadnego rozjazdu.
Eksport jednym klawiszem
W oknie Play doszedł skrót E — zapisuje bieżącą scenę jako kompletny, grywalny .mgame. W tej wersji eksport obejmuje scenę demonstracyjną okna Play; pełny kreator projektu gry (własne sceny, biblioteka assetów, ikona, szablony platform) to następny duży etap. Świadome ograniczenie: czcionka systemowa nie jest pakowana do paczki (kwestie licencyjne fontów), więc tekstowe elementy interfejsu są w wyeksportowanej grze pomijane — odtwarzacz radzi sobie z tym bez zatrzymania. Dedykowany font dla gier przyjdzie razem z kreatorem.
Szkielety postaci prosto z rigu
Najważniejszy pomost między animacją a grami w tej fazie: eksport szkieletu do gry z menu Warstwa → Rig 2D. Program bierze zriggowaną postać — kości, animację, zapieczoną dynamikę — i próbkuje ją klatka po klatce do płaskich krzywych ruchu, które silnik gier odtwarza wprost, bez liczenia czegokolwiek solverem. Efekt jest w pełni deterministyczny: ta sama klatka to zawsze ta sama poza, na każdej maszynie. Razem ze szkieletem eksportują się kontrolery (celowanie, śledzenie, dwukostne IK) — ich cele podłącza już logika gry, więc głowa postaci może śledzić kursor, a ręka celować w obiekt z rozgrywki.
Droga na web
Odczyt paczki od początku działa również z pamięci, nie tylko z dysku. To celowa furtka pod build przeglądarkowy: gra pobierana jak zwykły plik i uruchamiana w karcie, na tym samym kodzie silnika. Kompilacja webowa wystartuje przy najbliższej konfiguracji łańcucha narzędzi.
Silnik gier pozostaje funkcją deweloperską za flagą kompilacji — ale od tej fazy pętla „zbuduj → wyeksportuj → zagraj bez edytora" jest zamknięta w całości.