11.07.2026 11:22

Silnik gier: eksport gry do jednego pliku i samodzielny odtwarzacz

⏱️ 3 min czytania
Udostępnij:

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.

📚 Powiązane posty

14.07.2026 22:19

Silnik gier: od szablonu do grywalnej gry RPG top-down

Startowy szablon silnika gier to teraz kompletny, grywalny wycinek gry RPG top-down: chodzenie po siatce, rozmowy z postaciami, przeciwnik goniący gdy...
Czytaj dalej →
14.07.2026 19:16

Moonlight Animate — system dialogów w grach

Silnik gier 2D w Moonlight Animate ma teraz kompletny system dialogów: kwestie z efektem maszyny do pisania, wybory z warunkami, zmienne fabularne i g...
Czytaj dalej →
14.07.2026 18:40

Moonlight Animate: ruchoma panorama dźwięku także w wyeksportowanym wideo

Dźwięk przejeżdżający z lewego do prawego głośnika brzmiał dobrze w podglądzie, ale eksport przez serwer zamrażał go w miejscu. Ostatnia luka parytetu...
Czytaj dalej →

📧 Bądź na bieżąco!

Zapisz się na listę oczekujących, aby otrzymywać powiadomienia o nowych postach na Dev Blog oraz informacje o starcie platformy Moonlight.