11.07.2026 23:35

Silnik gier: barwienie i przyciemnianie sceny (pora dnia, zanikanie, błysk)

⏱️ 2 min czytania
Udostępnij:

Silnik gier 2D Moonlight Studio dostał barwę dziedziczoną w dół drzewa sceny. Jednym ustawieniem na węźle-rodzicu zabarwiasz cały jego fragment świata — a to fundament trzech efektów, których gra bez tego nie umiała: pory dnia, zanikania grupy i błysku trafienia.

Barwa, która spływa na dzieci

Każdy węzeł ma barwę (modulate), która mnoży jego piksele i przechodzi na całe poddrzewo. Ustawiasz ją raz na rodzicu, a obejmuje wszystkie dzieci:

mp.set_modulate(swiat, 0.3, 0.3, 0.55, 1)   -- cały świat gry robi się wieczorny

Wartości działają jak filtr: poniżej 1 przyciemniają/barwią, a powyżej 1 rozjaśniają — stąd błysk trafienia:

mp.set_modulate(postac, 2, 0.4, 0.4, 1)      -- postać (i jej broń, cień) błyska na czerwono

Zanikanie bez dotykania koloru

Do płynnych przejść jest krótka forma zmieniająca samo krycie:

mp.set_modulate_alpha(grupa, 0)   -- grupa obiektów znika
mp.set_modulate_alpha(grupa, 1)   -- i wraca

A odczyt bieżącej barwy pod animację:

local r, g, b, a = mp.modulate(postac)

HUD zostaje jasny

Efekt „noc" ma przyciemnić świat, ale nie panel punktów. Dlatego barwa sceny nie przenika do warstwy ekranowej — interfejs w niej zaczyna od czystej barwy (i można go zabarwić osobno, jeśli chcesz). Świat robi się granatowy, licznik życia zostaje czytelny.

Detale pod maską

  • Mnożenie się kumuluje — dziecko w dwukrotnie przyciemnionej gałęzi jest odpowiednio ciemniejsze; to naturalne dla zagnieżdżonych grup.
  • Cząstki też dziedziczą — system cząstek w zabarwionej gałęzi ściemnia się razem z nią.
  • Zgaszona gałąź nie kosztuje — poddrzewo o zerowym kryciu nie jest w ogóle rysowane.
  • Krycie duszka to osobna oś — obok barwy dziedziczonej duszek ma własne „krycie", które nie spływa na dzieci; jedno i drugie mnoży się niezależnie.

Co dalej

Fundament barwy sceny jest gotowy. W kolejce: barwa liścia „tylko dla siebie" (bez wpływu na dzieci) oraz płynne przejścia pory dnia sterowane osią czasu.

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