PaperZD
Baue 2D-Charakteranimation in PaperZD, indem du einfach fragst: Flipbooks aus einem Sprite Sheet, Animationsquellen, Animation Blueprints, State Machines, spielbare Charaktere und ein Spieltest.
PaperZD von Critical Failure Studio ist das Animationssystem, das die meisten Paper2D-Spiele nutzen: Animationsgraphen und State Machines für Charaktere aus Flipbooks. Es ist kostenlos auf Fab und auf GitHub.
Mit der Erweiterung PaperZD baut Ultimate Engine CoPilot diese Setups für dich, von einem Sprite Sheet bis zu einem Charakter, der im Spiel läuft und angreift.
Getestet wurde sie mit PaperZD 2.2.4 auf Unreal Engine 5.7.
Was du brauchst
- PaperZD, installiert und in deinem Projekt aktiviert. Es nutzt das eigene Plugin Paper2D von Unreal, das PaperZD mit aktiviert.
- Ein Sprite Sheet für deinen Charakter oder vorhandene Flipbooks.
Dazu Ultimate Engine CoPilot mit eingeschalteter Erweiterung PaperZD.
Ohne PaperZD richtet die Erweiterung keinen Schaden an. Jedes PaperZD-Tool antwortet mit einer einzigen Meldung, die sagt, ob das Plugin installiert, aktiviert und geladen ist und was als Nächstes zu tun ist.
Einrichtung
- Installiere PaperZD von Fab oder GitHub und aktiviere es in deinem Projekt. Starte den Editor neu, wenn Unreal danach fragt.
- Öffne im CoPilot Einstellungen > Erweiterungen und schalte PaperZD ein. Standardmäßig ist sie aus.
- Bitte die KI, den PaperZD-Status zu prüfen. Sie meldet, ob PaperZD gefunden wurde und, falls nicht, was fehlt.
Was du verlangen kannst
- “Hier ist mein Sprite Sheet für den Ritter, 6 Spalten mal 13 Zeilen. Mach Flipbooks für Idle, Gehen und Angriff in vier Richtungen und richte PaperZD dafür ein.”
- “Füge eine State Machine mit Idle, Walk und Attack hinzu. Walk, wenn sich der Charakter bewegt, zurück zu Idle, wenn er stehen bleibt, und Attack spielt einmal und kehrt dann zu Idle zurück.”
- “Lass die Animationen in die Richtung zeigen, in die sich der Charakter bewegt.”
- “Mach einen spielbaren Charakter mit WASD zum Bewegen und Space zum Angreifen, mit einer Kamera dahinter und einem Game Mode, der ihn spawnt.”
- “Füge der Geh-Animation ein Schrittgeräusch hinzu.”
- “Wechsle den Charakter zur roten Palette, während das Spiel läuft.”
Hinter diesen Anfragen kann die KI:
- Ein Sprite Sheet in Animationen zerlegen. Ein einziger Aufruf macht aus einem Sheet Sprites, Flipbooks, Animationssequenzen, eine Animationsquelle und einen Animation Blueprint. Animationen mit mehreren Richtungen werden zu einer mehrdirektionalen Sequenz.
- Den Animationsgraphen bauen. Play-Sequence-, State-Machine-, Richtungs-, Override-Slot-Knoten, Auswahl per Bool, Zahl oder Enum, Random Player und Cached-Animation-Knoten, und sie miteinander verbinden.
- State Machines bauen. States, Conduits und Sprünge, mit Transitions, die bei einer Variablen auslösen, wenn die aktuelle Animation endet, immer oder nie, mit einer Priorität und einer optionalen Übergangssequenz.
- Notifies hinzufügen. Eigene Events, Sounds und Niagara- oder Partikeleffekte auf einer Timeline, wobei eigene Notifies zu Funktionen werden, die du ausfüllen kannst.
- Skins hinzufügen. Ersatz-Flipbooks pro Animation, für Outfits oder Palettenwechsel, angewendet, während das Spiel läuft.
- Charaktere erstellen. Ein neuer PaperZD-Charakter, der vom Animation Blueprint gesteuert wird, oder einen vorhandenen Actor anbinden. Außerdem kann sie einer Level Sequence eine PaperZD-Spur hinzufügen.
- Es im Spiel prüfen. Lesen, welche Sequenz läuft, wie weit sie ist und welche Werte die Animationsvariablen haben, und eine Animation abspielen, stoppen oder anspringen, um eine Transition von Hand zu testen.
Fehler, die sie vermeidet
PaperZD hat ein paar Fallen, die sauber kompilieren und trotzdem nichts bewirken. Die KI kennt sie:
- Die Regel einer neuen Transition ist “nie”, bis sie gesetzt wird, der Charakter würde Idle also nie verlassen.
- Eine Variable, die eine Regel liest, muss irgendwo geschrieben werden, meistens im Tick des Animation Blueprints. Eine saubere Kompilierung beweist nicht, dass sich die Regel jemals ändert, deshalb prüft die KI im Spiel.
- Eine Sequenz läuft nur in einem Animation Blueprint ihrer eigenen Animationsquelle, deshalb hält sie die Assets jedes Charakters zusammen.
- States und Transitions werden in einem Rutsch kompiliert, am Ende einer Gruppe von Änderungen und nicht nach jeder einzelnen.
- Das Raster des Sprite Sheets wird von links nach rechts ab der obersten Zeile gelesen, deshalb zählt die KI die Zellen genauso wie PaperZD.
Tipps und Tricks
Sie stammen aus dem Bau eines kleinen spielbaren Dorfs mit PaperZD und dem CoPilot: ein Held, ein Dorfbewohner, Skelett-Gegner und streifende Wölfe. Getestet wurde mit PaperZD 2.2.4 auf Unreal Engine 5.7.
Die drei wichtigsten:
- Sag der KI das echte Zeilenlayout deines Sheets. Nummeriere die Zeilen ab 0, sag, welche Zeilen Animationen sind und welche Zeile etwas anderes ist, und öffne das erste Bild jedes Flipbooks zur Kontrolle.
- Drehe den Actor nie. Ein Flipbook ist eine flache Karte, die Richtung muss also davon kommen, welche Animation läuft, und nicht davon, dass der Actor gedreht wird.
- Vertraue keiner sauberen Kompilierung. Verlange einen Spieltest, der die aktuelle Animation und ihre Variablen meldet.
Beschreibe das Sheet genau
Die KI kann nicht sehen, welche Zeile deines Sheets welche Animation enthält. Du musst es ihr sagen.
- Ein von PixelLab exportiertes Sheet hat 6 Spalten und 13 Zeilen mit Zellen von 92 Pixeln, mit vier Richtungen in jeder Animation in der Reihenfolge Süd, West, Ost, Nord. Zeile 0 ist eine Reihe von Rotationsposen, keine Animation.
- Der Export enthält eine Layout-Datei, die auflistet, welche Zeile welche Animation enthält. Nutze sie. Die Reihenfolge ist von Charakter zu Charakter verschieden: Im Dorf hatten der Held und der Magier Gehen zuerst, das Skelett Angriff zuerst und der Wolf Idle zuerst.
- Zähle ab 0 und benenne die Rotationszeile. In einer Sitzung stand im Prompt “Zeilen 1 bis 4 sind das Gehen”. Die KI zählte ab 1, also war jede Animation um eine Zeile verschoben und der Held schaute in die falsche Richtung.
Schreibe die Zeilen so:
Jedes Sheet hat 6 Spalten mal 13 Zeilen mit Zellen von 92 Pixeln. Nummeriere die Zeilen ab 0. Zeile 0 ist die Rotationszeile, überspring sie. Zeilen 1 bis 4 sind das Gehen (Süd, West, Ost, Nord, 6 Bilder), Zeilen 5 bis 8 der Angriff, Zeilen 9 bis 12 das Idle (4 Bilder).
Einstellungen, die zählen
- Pixel Art an. Die Texturen nutzen Nearest-Filterung und keine Mips, damit die Pixel scharf bleiben.
- Pivot unten in der Mitte. Die Füße bleiben in jedem Bild an derselben Stelle.
- Bilder pro Sekunde. Verlange die Geschwindigkeiten, die du willst. Die KI nahm für alles 15, wodurch ein Idle mit 4 Bildern in etwa einer Viertelsekunde durchlief. Idle 6, Gehen 12 und Angriff 14 sahen richtig aus.
- Richtungsreihenfolge. Eine mehrdirektionale Sequenz läuft im Uhrzeigersinn von oben: Nord, Ost, Süd, West.
- Werte auf einem platzierten Actor gewinnen. Ein Cooldown oder eine Geschwindigkeit, die auf einem Actor im Level gesetzt ist, schlägt den Blueprint-Standard. Prüfe also die platzierten Kopien, wenn eine Änderung nichts bewirkt.
Das Sprite zur Kamera gerichtet halten
Mit diesem Setup hörte das Sprite auf, sich zu drehen, zu kippen oder kantig zu stehen:
- Actor-Rotation ausschalten. Controller Yaw aus, Orient Rotation to Movement aus, Controller Desired Rotation aus. Bleibt das an, dreht sich die Karte mit dem Actor und kann kantig zur Kamera stehen.
- Mit Yaw 0 spawnen. Ein Spawn-Yaw von 180 lässt die Karte von einer fest in der Welt stehenden Kamera wegkippen.
- Den Spring Arm an der Welt fixieren. Pawn Control Rotation aus, Pitch, Yaw und Roll erben aus, Kollisionstest aus. Ein Pitch von -40 und ein Yaw von -90 funktionierten.
- Die Karte einmal kippen. Gib dem Sprite bei einer Kamera, die 40 Grad nach unten schaut, einen Roll von -40 und hebe es an, damit die Füße den Boden berühren.
- In Weltachsen bewegen, nicht entlang des Vorwärts- oder Rechtsvektors des Actors.
- Die Richtung mit Set Directionality zeigen. Füttere es mit einer Vector2D-Variable namens Facing. Schreibe Facing in jedem Tick aus der Geschwindigkeit und behalte den letzten Wert, wenn der Charakter stehen bleibt.
Mit dieser Kamera sind die Tasten so belegt:
- D bewegt entlang +X, Facing (1, 0).
- W bewegt entlang -Y, Facing (0, 1).
- A bewegt entlang -X, Facing (-1, 0).
- S bewegt entlang +Y, Facing (0, -1).
Wenn links und rechts oder oben und unten vertauscht herauskommen, kehre das Vorzeichen dieses Teils von Facing um. Drehe den Actor nicht, um das auszugleichen.
Im Spiel testen
- Eine Transition bewirkt nichts, solange sich ihre Regel nicht ändern kann. Eine neue Regel ist “nie”, und eine Regel, die eine Variable liest, braucht etwas, das diese Variable schreibt, meistens den Tick des Animation Blueprints. Verlange einen Spieltest, der die aktuelle Animation meldet.
- Gib Facing einen Startwert. Es wird nur geschrieben, solange sich der Charakter bewegt, ein Angriff vor dem ersten Schritt liest also null. Ein Standard von Süd behebt das.
- Lass den Helden das Ziel anschauen. Wenn der Angriff etwas seitlich treffen soll, bitte die KI, Facing vor dem Schlag auf den nächsten Gegner zu setzen.
Eine echte Sitzung
Der Collab-Clip entstand in vier Prompts im CoPilot-Chat, mit dem Claude Code-Agenten. Die KI führte ihre eigenen Spieltests aus und reparierte, was sie fand. Die Zeiten stammen von einem Rechner.
- Zwei Charaktere importiert, mit State Machines für Idle, Gehen und Angriff: etwa 2,5 Minuten.
- Ein spielbarer Held (WASD zum Bewegen, Space zum Angreifen), eine Spring-Arm-Kamera, ein Game Mode und ein Dorfbewohner, der zwischen drei Punkten läuft: etwa 7 Minuten.
- Ein Skelett-Gegner, der jagt und angreift, Trefferpunkte und ein Lebenszähler auf dem Bildschirm: etwa 7 Minuten.
- Streifende Wölfe, sammelbare Kräuter und ein Kräuterzähler: etwa 7 Minuten.
Der Look ist eine eigene Aufgabe
Die KI baut die Animation und das Gameplay. Der Look des Clips wurde im Level eingerichtet, nicht von der KI:
- Warmes Sonnen- und Laternenlicht.
- Bloom, eine Vignette und eine geringe Tiefenschärfe für einen Tilt-Shift-Eindruck.
- Ein unbeleuchtetes emissives Material auf den Charakteren.
Beginne mit dem unbeleuchteten Material und einer festen Belichtung. Die Belichtung über viele Runden nach Augenmaß abzustimmen, kostete mehr Zeit, als es brachte.
Grenzen
- Die KI weiß nicht, welche Animation jede Zeile deines Sheets enthält. Du musst es ihr sagen.
- Gegner laufen geradewegs auf den Helden zu, ohne Pfadfindung um Requisiten herum.
- Bei einem exakten Winkel von 45 Grad gibt es bei zwei Achsen einen Gleichstand und die Animation wählt Ost.
- Die Gesundheit stoppt bei 0. Sonst passiert nichts, bis du einen Tod verlangst.
- Sie konnte einen Animationszustand mitten in einem gehaltenen Tastendruck nicht lesen und sagte das, statt zu raten.
Berechtigungen
Lesen ist frei: Ein Asset, einen Graphen oder eine laufende Animation zu untersuchen, fragt nie nach. Änderungen folgen deiner Einstellung Ask Before Edit oder Auto Edit, wie bei jedem anderen Tool.
Wie es funktioniert
- Keine Verbindung zwischen den Plugins. Die Erweiterung erreicht PaperZD nur per Reflection, daher baut und läuft Ultimate Engine CoPilot mit oder ohne installiertes PaperZD gleich, und die Erweiterung funktioniert weiter über PaperZD-Versionen desselben Designs hinweg. Wenn ein Update etwas umbenennt, nennt das Tool das fehlende Feld, statt zu raten.
- Überall zugleich. Die Tools funktionieren im Chat des CoPilot, in externen MCP-Clients wie Claude Code und Cursor und in Coding-Agenten. Siehe MCP-Integration.
- 39 Tools. Tools zum Erstellen, Untersuchen und für die Spielzeit, für Quellen, Sequenzen, Notifies, Skins, Animation Blueprints, Graphen, State Machines, Charaktere und Sequencer.
Siehe Erweiterungen dazu, wie Erweiterungen funktionieren, und Spieltests dazu, wie die KI ein laufendes Spiel prüft.