PaperZD
Buduj animację postaci 2D w PaperZD, po prostu o nią prosząc: flipbooki z arkusza sprite'ów, źródła animacji, Animation Blueprinty, maszyny stanów, postacie grywalne i sprawdzenie w grze.
PaperZD od Critical Failure Studio to system animacji, którego używa większość gier w Paper2D: grafy animacji i maszyny stanów dla postaci opartych na flipbookach. Jest darmowy na Fab i na GitHub.
Z rozszerzeniem PaperZD Ultimate Engine CoPilot buduje te układy za Ciebie, od arkusza sprite’ów do postaci, która chodzi i atakuje w grze.
Rozszerzenie przetestowano z PaperZD 2.2.4 na Unreal Engine 5.7.
Czego potrzebujesz
- PaperZD, zainstalowany i włączony w Twoim projekcie. Korzysta z wtyczki Paper2D od Unreal, którą PaperZD włącza razem ze sobą.
- Arkusz sprite’ów dla Twojej postaci albo istniejące flipbooki.
Do tego Ultimate Engine CoPilot z włączonym rozszerzeniem PaperZD.
Bez PaperZD rozszerzenie nie robi nic szkodliwego. Każde narzędzie PaperZD odpowiada jedną wiadomością, która mówi, czy wtyczka jest zainstalowana, włączona i załadowana oraz co zrobić dalej.
Konfiguracja
- Zainstaluj PaperZD z Fab lub GitHub i włącz go w swoim projekcie. Uruchom ponownie edytor, jeśli Unreal o to poprosi.
- W CoPilot otwórz Ustawienia > Rozszerzenia i włącz PaperZD. Domyślnie jest wyłączone.
- Poproś AI o sprawdzenie statusu PaperZD. Poinformuje, czy znaleziono PaperZD, a jeśli nie, czego brakuje.
O co możesz poprosić
- “Oto arkusz sprite’ów mojego rycerza, 6 kolumn na 13 wierszy. Zrób flipbooki idle, walk i attack w czterech kierunkach i skonfiguruj dla niego PaperZD.”
- “Dodaj maszynę stanów ze stanami Idle, Walk i Attack. Walk, gdy postać się porusza, powrót do Idle, gdy się zatrzyma, a Attack odtwarza się raz i wraca do Idle.”
- “Spraw, żeby animacje były skierowane w stronę, w którą porusza się postać.”
- “Zrób grywalną postać, która porusza się klawiszami WASD i atakuje spacją, z kamerą za nią oraz trybem gry, który ją tworzy.”
- “Dodaj dźwięk kroków do animacji walk.”
- “Przełącz postać na czerwoną paletę, gdy gra jest uruchomiona.”
Za tymi prośbami AI potrafi:
- Pociąć arkusz sprite’ów na animacje. Jedno wywołanie zamienia arkusz w sprite’y, flipbooki, sekwencje animacji, źródło animacji i Animation Blueprint. Animacje z kilkoma kierunkami stają się jedną sekwencją wielokierunkową.
- Zbudować graf animacji. Węzły odtwarzania sekwencji, maszyny stanów, kierunku, slotu nadpisania, wyboru według bool, liczby lub enum, losowego odtwarzacza i animacji w pamięci podręcznej, oraz połączyć je.
- Budować maszyny stanów. Stany, conduity i skoki, z przejściami uruchamianymi przez zmienną, po zakończeniu bieżącej animacji, zawsze lub nigdy, z priorytetem i opcjonalną sekwencją przejściową.
- Dodawać notify. Własne zdarzenia, dźwięki i efekty Niagara lub cząsteczkowe na osi czasu, przy czym własne notify stają się funkcjami, które możesz uzupełnić.
- Dodawać skórki. Zastępcze flipbooki dla każdej animacji, na stroje lub zmiany palety, stosowane podczas działania gry.
- Tworzyć postacie. Nową postać PaperZD sterowaną przez Animation Blueprint albo podpiąć istniejącego aktora. Może też dodać ścieżkę PaperZD do Level Sequence.
- Sprawdzać w grze. Odczytać, która sekwencja jest odtwarzana, jak daleko zaszła i jakie są wartości zmiennych animacji, a także odtworzyć, zatrzymać lub przeskoczyć do animacji, aby ręcznie przetestować przejście.
Błędy, których unika
PaperZD ma kilka pułapek, które kompilują się bez zarzutu i mimo to nic nie robią. AI je zna:
- Reguła nowego przejścia to “never”, dopóki jej nie ustawisz, więc postać nigdy nie wyszłaby z Idle.
- Zmienna, którą czyta reguła, musi być gdzieś zapisywana, zwykle w ticku Animation Blueprinta. Czysta kompilacja nie dowodzi, że reguła kiedykolwiek się zmienia, więc AI sprawdza to w grze.
- Sekwencja odtwarza się tylko w Animation Blueprincie ze swojego źródła animacji, więc AI trzyma zasoby każdej postaci razem.
- Stany i przejścia kompiluje się jednym zbiorem na końcu grupy edycji, a nie po każdej z nich.
- Siatka arkusza sprite’ów jest czytana od lewej do prawej, od góry, więc AI liczy komórki tak samo jak PaperZD.
Wskazówki i triki
Pochodzą z budowania małej grywalnej wioski z PaperZD i CoPilot: bohater, wieśniak, szkieletowi przeciwnicy i wędrujące wilki. Przetestowano z PaperZD 2.2.4 na Unreal Engine 5.7.
Trzy najważniejsze:
- Powiedz AI, jaki jest prawdziwy układ wierszy Twojego arkusza. Numeruj wiersze od 0, powiedz, które wiersze są animacjami, a który jest czymś innym, i otwórz pierwszą klatkę każdego flipbooka, żeby to sprawdzić.
- Nigdy nie obracaj aktora. Flipbook to płaska karta, więc kierunek musi wynikać z tego, która animacja się odtwarza, a nie z obracania aktora.
- Nie ufaj czystej kompilacji. Poproś o test w grze, który zgłasza bieżącą animację i jej zmienne.
Opisz arkusz dokładnie
AI nie widzi, który wiersz Twojego arkusza zawiera którą animację. Musisz mu to powiedzieć.
- Arkusz wyeksportowany z PixelLab ma 6 kolumn i 13 wierszy komórek 92 pikseli, z czterema kierunkami w każdej animacji w kolejności południe, zachód, wschód, północ. Wiersz 0 to wiersz póz obrotowych, a nie animacja.
- Eksport zawiera plik układu, który wymienia, który wiersz zawiera którą animację. Użyj go. Kolejność różni się między postaciami: w wiosce bohater i mag mieli walk jako pierwszy, szkielet attack jako pierwszy, a wilk idle jako pierwszy.
- Licz od 0 i nazwij wiersz obrotów. W jednej sesji prompt mówił “wiersze od 1 do 4 to walk”. AI liczyło od 1, więc każda animacja była przesunięta o jeden wiersz, a bohater patrzył w złą stronę.
Zapisz wiersze w ten sposób:
Każdy arkusz ma 6 kolumn na 13 wierszy komórek 92 pikseli. Numeruj wiersze od 0. Wiersz 0 to wiersz obrotów, pomiń go. Wiersze od 1 do 4 to walk (południe, zachód, wschód, północ, 6 klatek), wiersze od 5 do 8 to attack, wiersze od 9 do 12 to idle (4 klatki).
Ustawienia, które mają znaczenie
- Pixel art włączony. Tekstury używają filtrowania nearest i nie mają mipów, dzięki czemu piksele pozostają ostre.
- Pivot na środku u dołu. Stopy zostają w tym samym miejscu w każdej klatce.
- Klatki na sekundę. Poproś o prędkości, jakich chcesz. AI użyło 15 dla wszystkiego, co zapętlało 4-klatkowe idle w około ćwierć sekundy. Idle 6, walk 12 i attack 14 wyglądały dobrze.
- Kolejność kierunków. Sekwencja wielokierunkowa biegnie zgodnie z ruchem wskazówek zegara od góry: północ, wschód, południe, zachód.
- Wartości na umieszczonym aktorze wygrywają. Cooldown lub prędkość ustawione na aktorze na poziomie mają pierwszeństwo przed wartością domyślną z Blueprinta, więc gdy zmiana wydaje się nic nie robić, sprawdź umieszczone kopie.
Utrzymaj sprite skierowany do kamery
Ten układ powstrzymał sprite przed obracaniem się, przechylaniem lub ustawianiem bokiem:
- Wyłącz obrót aktora. Controller yaw wyłączone, orient rotation to movement wyłączone, controller desired rotation wyłączone. Pozostawione włączone sprawiają, że karta obraca się z aktorem i może ustawić się bokiem.
- Twórz z yaw 0. Yaw przy tworzeniu równy 180 sprawia, że karta odchyla się od kamery ustawionej na stałe w świecie.
- Przymocuj spring arm do świata. Pawn control rotation wyłączone, dziedziczenie pitch, yaw i roll wyłączone, test kolizji wyłączony. Pitch -40 i yaw -90 zadziałały.
- Przechyl kartę raz. Gdy kamera patrzy w dół pod kątem 40 stopni, nadaj spritowi roll -40 i podnieś go tak, aby stopy dotykały podłogi.
- Poruszaj się w osiach świata, a nie wzdłuż wektora forward ani right aktora.
- Pokaż kierunek przez Set Directionality. Podaj mu zmienną Vector2D o nazwie Facing. Zapisuj Facing w każdym ticku na podstawie prędkości i zachowaj ostatnią wartość, gdy postać się zatrzyma.
Przy tej kamerze klawisze są przypisane tak:
- D porusza wzdłuż +X, Facing (1, 0).
- W porusza wzdłuż -Y, Facing (0, 1).
- A porusza wzdłuż -X, Facing (-1, 0).
- S porusza wzdłuż +Y, Facing (0, -1).
Jeśli lewo i prawo albo góra i dół wychodzą zamienione, odwróć znak tej części Facing. Nie obracaj aktora, żeby to skompensować.
Przetestuj to w grze
- Przejście nic nie robi, dopóki jego reguła nie może się zmienić. Nowa reguła to “never”, a reguła czytająca zmienną potrzebuje czegoś, co tę zmienną zapisuje, zwykle ticka Animation Blueprinta. Poproś o test w grze, który zgłasza bieżącą animację.
- Nadaj Facing wartość początkową. Jest zapisywane tylko wtedy, gdy postać się porusza, więc atak przed pierwszym krokiem odczyta zero. Domyślna wartość południe to naprawia.
- Niech bohater patrzy na cel. Jeśli atak ma trafić coś z boku, poproś AI, aby przed zamachem ustawiło Facing w stronę najbliższego przeciwnika.
Prawdziwa sesja
Klip collab zbudowano w czterech promptach w czacie CoPilot, z agentem Claude Code. AI samo uruchamiało testy w grze i naprawiało to, co znalazło. Czasy pochodzą z jednej maszyny.
- Dwie postacie zaimportowane, z maszynami stanów idle, walk i attack: około 2,5 minuty.
- Grywalny bohater (WASD do poruszania, spacja do ataku), kamera ze spring armem, tryb gry i wieśniak chodzący między trzema punktami: około 7 minut.
- Szkieletowy przeciwnik, który goni i atakuje, punkty życia i licznik zdrowia na ekranie: około 7 minut.
- Wędrujące wilki, zbieralne zioła i licznik ziół: około 7 minut.
Wygląd to osobne zadanie
AI buduje animację i rozgrywkę. Wygląd klipu ustawiono na poziomie, a nie przez AI:
- Ciepłe światło słońca i latarni.
- Bloom, winieta i płytka głębia ostrości dla efektu tilt-shift.
- Nieoświetlany materiał emisyjny na postaciach.
Zacznij od nieoświetlanego materiału i stałej ekspozycji. Strojenie ekspozycji na oko przez wiele rund kosztowało więcej czasu, niż dało.
Ograniczenia
- AI nie wie, którą animację zawiera każdy wiersz Twojego arkusza. Musisz mu to powiedzieć.
- Przeciwnicy idą prosto na bohatera, bez wyszukiwania ścieżki wokół przedmiotów.
- Przy dokładnie 45 stopniach dwie osie remisują i animacja wybiera wschód.
- Zdrowie zatrzymuje się na 0. Nic innego się nie dzieje, dopóki nie poprosisz o śmierć.
- Nie udało się odczytać stanu animacji w środku przytrzymanego klawisza i AI powiedziało o tym zamiast zgadywać.
Uprawnienia
Odczyt jest swobodny: sprawdzanie assetu, grafu lub działającej animacji nigdy nie pyta. Zmiany podlegają Twojemu ustawieniu Zapytaj przed edycją lub Automatyczna edycja, tak jak każde inne narzędzie.
Jak to działa
- Brak powiązania między wtyczkami. Rozszerzenie sięga do PaperZD wyłącznie przez refleksję, więc Ultimate Engine CoPilot buduje się i działa tak samo z zainstalowanym PaperZD i bez niego, a rozszerzenie działa dalej z wersjami PaperZD o tym samym projekcie. Jeśli aktualizacja zmieni jakąś nazwę, narzędzie wskaże brakujące pole zamiast zgadywać.
- Wszędzie naraz. Narzędzia działają w czacie CoPilot, w zewnętrznych klientach MCP, takich jak Claude Code i Cursor, oraz w agentach programistycznych. Zobacz Integracja MCP.
- 39 narzędzi. Narzędzia do tworzenia, inspekcji i pracy w grze dla źródeł, sekwencji, notify, skórek, Animation Blueprintów, grafów, maszyn stanów, postaci i Sequencera.
Zobacz Rozszerzenia, aby dowiedzieć się, jak działają rozszerzenia, oraz Testowanie w grze, aby dowiedzieć się, jak AI sprawdza działającą grę.