Zobacz, co nowego w V2 · Nowy interfejs, Crew, Blueprint do C++, testy multiplayer i aktualizacje w edytorze Przeczytaj listę zmian → The V2 giveaway winners are in · 10 accounts won 50M AI tokens each See the winners →
Zaawansowane

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

  1. Zainstaluj PaperZD z Fab lub GitHub i włącz go w swoim projekcie. Uruchom ponownie edytor, jeśli Unreal o to poprosi.
  2. W CoPilot otwórz Ustawienia > Rozszerzenia i włącz PaperZD. Domyślnie jest wyłączone.
  3. 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:

  1. 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ć.
  2. 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.
  3. 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.

  1. Dwie postacie zaimportowane, z maszynami stanów idle, walk i attack: około 2,5 minuty.
  2. 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.
  3. Szkieletowy przeciwnik, który goni i atakuje, punkty życia i licznik zdrowia na ekranie: około 7 minut.
  4. 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ę.