Silnik gier: cząsteczki — iskry, deszcz i dym z jednego ziarna
Silnik gier 2D Moonlight Studio dostał system cząsteczek: emiter Particles2D do iskier, deszczu, dymu, śniegu i wybuchów.
Co potrafi emiter
- Emisja: tempo (cząstek na sekundę) i/lub jednorazowy wyrzut N naraz, twardy limit liczby cząstek, kształt źródła — punkt, linia, okrąg albo prostokąt.
- Ruch: prędkość startowa z wariancją, kierunek z kątem rozrzutu, grawitacja i tłumienie.
- Wygląd w czasie życia: rozmiar i kolor (z przezroczystością) płynnie przechodzą od wartości startowej do końcowej — iskra rudnieje i gaśnie w locie; do tego wirowanie i opcjonalna tekstura.
- Rozruch: deszcz może „już padać" na pierwszej klatce — system startuje w połowie cyklu, bez pustego rozbiegu.
Ziarno zamiast losowości
Każdy emiter ma ziarno (seed): ten sam seed daje dokładnie te same cząstki w każdej powtórce i na każdej maszynie. Stan dowolnej chwili liczony jest wprost z wzoru — bez symulacji krok po kroku i bez losowania w czasie rzeczywistym. To ważne dwa razy: nagrania i powtórki wyglądają identycznie, a ten sam deklaratywny opis emitera będzie w przyszłości grał tak samo w scenach animacji na desktopie i w przeglądarce.
Przy przekroczeniu limitu cząstek znikają zawsze najstarsze — reguła jest stała, więc żadne dwie platformy się nie rozjadą.
Sterowanie jedną linijką
mp.set(emiter, 'emitting', false) zatrzymuje nowe cząstki (żywe dożywają swoje), ponowne włączenie restartuje emisję. Czas cząstek to czas gry — pauza je zamraża razem z resztą świata. Na monitorach powyżej 60 Hz cząstki dostają czas pośredni między krokami fizyki, więc ruch jest tak samo płynny jak reszty sceny.
Co dalej
Smuga za poruszającym się emiterem (przestrzeń świata), mieszanie addytywne (świecenie) oraz efekty poza formą analityczną — turbulencja, kolizje cząstek — mają zaplanowaną osobną, deterministyczną ścieżkę na później.