14.07.2026 19:16

Moonlight Animate — system dialogów w grach

⏱️ 3 min read
Share:

Silnik gier 2D wbudowany w Moonlight Animate dostał system dialogów — brakujący element gier fabularnych (RPG, visual novel). Rozmowy, wybory, zmienne fabularne działają teraz w grze od początku do końca, a wyzwolić dialog można jedną linijką skryptu.

Dialog to osobny plik

Rozmowa jest osobnym plikiem-scenariuszem (obok scen i skryptów), bo ten sam dialog bywa wywoływany z wielu miejsc. To lista węzłów: kwestia, wybór gracza, skok, ustawienie zmiennej, wywołanie skryptu, pauza. Jeden węzeł jest startowy; silnik przechodzi od węzła do węzła, pokazuje tekst, czeka na gracza i rozgałęzia się na wyborach.

Format jest na tyle prosty, że dialog można napisać ręcznie, a docelowo generować z wizualnego edytora drzew.

Belka dialogowa

Silnik rysuje domyślną belkę dialogową: panel u dołu ekranu, imię mówcy (we własnym kolorze) i tekst z efektem maszyny do pisania — znaki odsłaniają się po kolei. Pierwsze naciśnięcie klawisza (albo kliknięcie) odsłania całą kwestię naraz, drugie przechodzi dalej. Przy wyborach pojawiają się przyciski — a że mieszczą się w panelu niezależnie od ich liczby, żadna opcja nie wypada poza ekran.

Cały tekst to klucze tłumaczeń, więc dialogi działają we wszystkich językach — po polsku, w językach europejskich i w piśmie azjatyckim (chińskim, japońskim, koreańskim), które silnik obsłużył we wcześniejszych krokach.

Wybory, warunki i zmienne fabularne

Wybór może mieć warunek — opcja „Zapłać 10 złota" pojawia się tylko, gdy gracz ma tyle złota; w przeciwnym razie jest niewidoczna (a nie wyszarzona). Warunki czytają zmienne gry, a węzeł „ustaw" je zapisuje — i te zmienne wchodzą do zapisu gry, więc fabuła pamięta decyzje gracza. Wartość zmiennej można też wstawić wprost w tekst („Masz 42 złota").

Węzeł „skrypt" wywołuje funkcję gry po nazwie — więc dialog może dać przedmiot, otworzyć drzwi czy uruchomić cutscenkę. Kwestia może mieć głos (plik audio), który milknie, gdy gracz przechodzi dalej.

Wyzwalanie i odporność

Dialog uruchamia się jedną linijką skryptu (start_dialogue "intro") albo węzłem grafu logiki; po zakończeniu wysyła sygnał, na który gra może zareagować (wznowić rozgrywkę). Uszkodzony lub celowo spreparowany plik dialogu nigdy nie wywraca gry — wszystko degraduje się do bezpiecznych wartości.

Ten fragment przeszedł dokładny przegląd pod kątem błędów. Wychwycił i naprawił m.in.: brak pakowania plików dialogów do gotowej gry (bez tego cała funkcja byłaby martwa poza edytorem), niepodpięty węzeł „skrypt", zapętlenie na sześciu wyborach oraz subtelny błąd zwalniania pamięci przy zamykaniu belki. Rdzeń — czytanie pliku, maszyna stanów, warunki, interpolacja zmiennych — jest pokryty automatycznymi testami.

Co dalej

To fundament gier fabularnych. Świadomie zostawiliśmy na później portrety postaci, tryb wielu kwestii na ekranie naraz, cofanie rozmowy i nawigację wyborów klawiaturą. Ale rdzeń jest gotowy: rozmowy, wybory i pamięć fabularna, w dowolnym języku, składane w całości w Moonlight Animate.

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