13.07.2026 15:52

Moonlight Animate: efekty klipu sterowane skryptem

⏱️ 2 min czytania
Udostępnij:

Animowalne efekty klipu — grading, glow, rozmycie, winieta, lumetri, a od niedawna także światło — miały dotąd jedną drogę: ręczne klikanie w panelu Sterowanie efektami. Od dziś całym tym systemem można sterować ze skryptu.

Efekty i klatki kluczowe z kodu

Nowe funkcje w przestrzeni app.anim.* dają skryptom pełną kontrolę nad efektami dowolnego klipu:

  • app.anim.effectTypes() — lista dostępnych typów efektów; app.anim.clipEffects(id) — co jest już nałożone na klip.
  • app.anim.addClipEffect(clipId, typ) zwraca identyfikator efektu; do tego removeClipEffect i setEffectEnabled.
  • app.anim.setEffectParam(clipId, effectId, nazwa, wartość) ustawia wartość statyczną.
  • app.anim.setEffectKeyframe(clipId, effectId, parametr, klatka, wartość, easing) — dokłada klatkę kluczową parametru, a więc animuje kolor, pozycję światła czy promień rozmycia w czasie; removeEffectKeyframe ją cofa.

Efekt dodany skryptem jest nie do odróżnienia od tego z panelu — ta sama walidacja z rejestru efektów, ta sama koercja wartości, to samo jedno cofnięcie na operację i ta sama propagacja we współpracy. Skrypt może więc jednym przebiegiem rozstawić ruchome światła na kilkunastu klipach albo zaanimować grading całej sekwencji.

Bezpiecznie i przewidywalnie

Wartości parametrów są przycinane do zakresów z rejestru — żaden skrypt nie ustawi już rozmycia o promieniu miliona pikseli, który zawiesiłby aplikację. Nieznane typy i nieanimowalne parametry są odrzucane z czytelnym ostrzeżeniem zamiast po cichu psuć projekt, a usunięcie ostatniej klatki kluczowej zamraża jej wartość, żeby obraz nie „przeskoczył".

Przy okazji domknęliśmy dwie drobne luki: app.image.contentAwareFill() wypełnia zaznaczenie z otoczenia, a app.color.setBucketExpand() / setBucketCloseGap() ustawiają parametry wypełniania rysunku kreskowego — wszystko, co klikalne, jest też skryptowalne.

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