DEVLOG · 7. OKTOBER 2026 · AKTUALISIERT AM 8. OKTOBER

Pixelgenaue Sprite-Animationen aus einem Video-Modell

Ein Spiel-Sprite und ein Satz Text rein, eine fertige Pixel-Animation raus, direkt fürs Spiel. Wir zeigen es an Figuren aus unserem Jump’n’Run KNUDDEL-ALARM: Der Gummibär stapft, der Wackelpudding wird geheilt, die Gewitterwolke blitzt. Bis dahin sind 42 Ansätze gescheitert. Hier ist, was am Ende funktioniert hat, und alles, was nicht funktioniert hat.

Lesezeit etwa 9 Minuten · Hardware: eine RTX 4090

Fünf Pixel-Animationen aus KNUDDEL-ALARM: stapfender Gummibär, Wackelpudding und Gewitterwolke werden geheilt, blitzende Wolke, schwankender Brokkoli-Boss
Animationen für KNUDDEL-ALARM, vollautomatisch aus dem vorhandenen Spiel-Sprite und einer Aktion als Text. Nichts davon ist von Hand nachgebessert.

NEU · 8. OKTOBER

Was die Kette heute kann

Seit dem ersten Artikel haben wir die Kette auf grössere Figuren und wilde Aktionen losgelassen: Feuer speiende Drachen, Schwerthiebe, Zaubersprüche, zerfallende Skelette. Dazu kommen grosse Pixel-Szenen, Figuren, Items und Kacheln aus denselben Modellen. Alles unten ist direkt aus der Engine, ohne Nachbearbeitung.

rears its head back, spreads its wings and breathes a huge stream of orange fire forward to the right
rears its head back, spreads its wings and breathes a huge stream of orange fire forward to the right
spreads its wings, jumps and takes off, flying upward with big powerful wing beats
spreads its wings, jumps and takes off, flying upward with big powerful wing beats
raises the sword high above his head and swings it down in a wide powerful arc to the front
raises the sword high above his head and swings it down in a wide powerful arc to the front
raises the staff and casts a spell: a glowing blue magic orb with sparks grows at the crystal and shoots forward
raises the staff and casts a spell: a glowing blue magic orb with sparks grows at the crystal and shoots forward
spins around and waves the broomstick, casting swirling green magic sparkles
spins around and waves the broomstick, casting swirling green magic sparkles
draws the katana in a flash and slashes diagonally with a bright white slash trail
draws the katana in a flash and slashes diagonally with a bright white slash trail
winds up and throws a powerful rocket punch toward the camera, its fist glowing
winds up and throws a powerful rocket punch toward the camera, its fist glowing
raises both stone fists and smashes them into the ground, rocks and dust fly up
raises both stone fists and smashes them into the ground, rocks and dust fly up
falls apart and collapses into a pile of bones on the ground
falls apart and collapses into a pile of bones on the ground
swoops up and down in a big wavy flight path, stretching and squashing, then sticks out its tongue
swoops up and down in a big wavy flight path, stretching and squashing, then sticks out its tongue
jogs on the spot with big bouncy energetic steps, swinging the arms, the green scarf fluttering
jogs on the spot with big bouncy energetic steps, swinging the arms, the green scarf fluttering
marches forward with big confident steps, the cape swinging
marches forward with big confident steps, the cape swinging
stomps on the spot with heavy mechanical steps, the big fists swinging, the cyan eyes blinking
stomps on the spot with heavy mechanical steps, the big fists swinging, the cyan eyes blinking

Neue Showcase-Animationen, 64-px-Figuren, je ein Satz Text als Aktion.

a fairytale castle with red roof towers on a rocky cliff above a calm mountain lake at sunset, pine forests, snowy purple mountains, a small sailboat on the lake, dramatic pink and golden clouds, reflections in the watera rainy cyberpunk city street at night, glowing pink and cyan neon signs, tall buildings with lit windows, puddles reflecting the neon, steam from vents, a ramen stall, flying cars in the distancea cozy village of small round cottages built into giant mushrooms in a sunny forest clearing, white bunnies with scarves walking on a dirt path, carrot gardens, lanterns, butterflies, soft morning light

Szenen in 384 × 216 echten Pixeln, je etwa 20 Sekunden auf einer RTX 4090.

Alle Bilder und Animationen auf der Pixel-Engine-Seite →

Gratis – und was die anderen kosten

Es gibt gute kommerzielle Werkzeuge für KI-Pixel-Art. PixelLab bietet Animationen aus Text und Skeletten, 4- und 8-Richtungs-Rotationen, Kachel-Sets und Karten, mit einem Aseprite-Plugin. Nach einer Testphase kostet es 12, 24 oder 50 Dollar im Monat. Retro Diffusion hat eigene, von Pixel-Künstlern trainierte Modelle und rechnet pro Bild ab: 0,03 bis 0,18 Dollar, Animationen ab 0,07 Dollar pro Clip.

Beide sind bequem, laufen im Browser und brauchen keine eigene Grafikkarte. Unsere Kette ist das Gegenteil: Sie läuft auf deiner eigenen Grafikkarte, die Modelle sind offen, und die Workflows sowie das Werkzeug sind Open Source. Dafür kostet sie nichts – kein Abo, keine Credits, kein Wasserzeichen. Und du siehst jeden Schritt und kannst ihn ändern.

Preise laut den Websites der Anbieter am 8. Oktober 2026.

Das Ziel

Für unsere Spiele auf dem Daybun-Handheld brauchen wir viele kleine Animationen. Die Figuren sind 32 Pixel gross. Das Ziel klingt einfach: Eine Figur einmal zeichnen, danach jede beliebige Bewegung dazu erzeugen. Rennen, fliegen, trinken, explodieren. Für jede Figur.

Bei 32 Pixeln verzeiht nichts. Ein Bein ist zwei bis vier Pixel breit. Ein Pixel Unterschied zwischen zwei Frames ist sichtbares Zittern. Und jede Figur muss in jedem Frame genau dieselbe Figur bleiben: gleiche Ohren, gleicher Schal, gleiche Farben.

42 Wege, die nicht funktioniert haben

Wir haben zuerst versucht, was naheliegt: ein gutes Bild-Modell, das jeden Frame einzeln zeichnet. Dann Bild-Modelle mit Skelett, Silhouette oder Vorlage als Hilfe. Dann ganze Spritesheets in einem Bild. Dann ältere Modelle mit ControlNet. 42 Tests, alle mit denselben zwei Figuren und denselben Messgrössen.

Die Einzelbilder sahen oft gut aus. Der Ablauf stimmte nie.

Bild-Modelle haben kein Gedächtnis über Frames. Nur Video-Modelle verstehen Bewegung.

Jede Bild-Pipeline erfindet jeden Frame neu, also flackert sie. Vorlagen, Skelette und Silhouetten machen die Bewegung korrekt, aber nie allgemein: Für „Käfer explodiert“ gibt es keine Vorlage. Ein Video-Modell kennt dagegen beliebige Bewegung und hält die Figur über alle Frames fest. Es kann nur keine Pixel.

Die Kette

Also teilen wir die Arbeit: Das Video-Modell macht die Bewegung, ein Pixel-Modell zeichnet jeden gewählten Frame sauber nach, und ein Raster-Werkzeug zwingt alles auf exakt 32 × 32 Pixel mit einer gemeinsamen Palette.

  1. StandbildDas fertige Sprite (bis 64 px) unten mittig auf einer flachen Key-Farbe, nearest auf 384 × 384 vergrössert.Grün, Magenta oder Blau – je nachdem, was am weitesten von den Figurfarben weg ist.
  2. VideoWan 2.2 I2V A14B erzeugt 33 Frames. Die Bewegung kommt aus einem Satz Text.High-Noise-Stufe ohne Beschleuniger, CFG 3,5.
  3. Frames wählenSchleife: genau eine Bewegungsperiode, gefunden über die Masken. Einmalige Aktion: gleichmässig verteilt bis zum letzten sichtbaren Frame.Typisch 6 bis 13 Frames.
  4. NachzeichnenKrea 2 Turbo mit der k2-pixel32-LoRA malt jeden Frame per img2img (denoise 0,4) im Pixelstil neu.6 Frames pro Auftrag.
  5. Raster und PaletteDer MiniMax-H3-Refiner kollabiert alle Frames auf das exakte Raster, mit einer gemeinsamen Palette. Dann Key-Farbe weg.Ergebnis: Frames, Spritesheet, GIF.
Links das Spiel-Sprite des Gummibärs auf der Key-Farbe (hier Blau, weil der Bär rosa ist), in der Mitte das Rohvideo von Wan 2.2, rechts die fertigen Frames, so wie sie im Spiel liegen. Gleiche Video-Frames, gleicher Takt.
Links das Spiel-Sprite des Gummibärs auf der Key-Farbe (hier Blau, weil der Bär rosa ist), in der Mitte das Rohvideo von Wan 2.2, rechts die fertigen Frames, so wie sie im Spiel liegen. Gleiche Video-Frames, gleicher Takt.

Fertig fürs Spiel: KNUDDEL-ALARM

KNUDDEL-ALARM ist unser Jump’n’Run. Viele Figuren hatten bisher ein oder zwei Bilder. Als Startbild nehmen wir jeweils das vorhandene Spiel-Sprite, schreiben die Aktion als Satz dazu und legen das Ergebnis direkt als Animation im Spiel-Format ab: Frames, Pivot je Frame, Takt. Alle Animationen unten sind ungeschönt, jede mit ihrem Urteil nach Sichtprüfung.

Was nicht geklappt hat

Für die fünf Animationen oben haben wir 18 Video-Läufe gebraucht, dazu ein paar neue Frame-Auswahlen auf vorhandenen Videos. Diese Läufe sind nicht ins Spiel gekommen:

  • Wackelpudding wabbelt: Im ersten Versuch bekam der Pudding Beine und lief los. Im zweiten stand er still, weil der Satz „behält Grösse und Proportionen“ genau das Quetschen verbietet. Im dritten wackelt er nur zwischendurch, ohne sauberen Loop.
  • Pudding hüpft: Wan macht aus dem Pudding eine Bohne.
  • Gummibär wird geheilt: Er dreht sich zur Kamera, und am Ende schaut er eher skeptisch als glücklich.
  • Wolke schwebt: zwei Versuche, beide bewegen sich kaum.
  • Filibuster jubelt: Er dreht sich zur Kamera, und die Fliegerbrille rutscht über die Augen. Nicht figurtreu.
  • Herz-Funkenring: Im Video schön, aber die 1-Pixel-Funken überleben das Nachzeichnen auf 32 px nicht.
  • Seifenblase platzt: Die Blase ist fast durchsichtig, und das Video lässt sie einfach stehen.
  • Brokkoli-Einschlag: Wan zeigt zuerst die Rauchwolke und lässt den Brokkoli daraus auftauchen. Rückwärts abgespielt wird ein Einschlag daraus, aber ein blasser.

Faustregel: Figuren mit klarem Sprite und kräftigen Farben funktionieren. Winzige Effekte, durchsichtige Objekte und Bewegungen, die die Form der Figur grundlegend ändern, eher nicht.

Frühe Experimente

Unsere ersten Prüf-Animationen: Hase, Betrunkener, Geier, Käfer. Beim rennenden Hasen war schon das Startbild schwach, Ohren und Schal sind kaum zu lesen. Er bleibt hier nur als frühes Experiment.
Unsere ersten Prüf-Animationen: Hase, Betrunkener, Geier, Käfer. Beim rennenden Hasen war schon das Startbild schwach, Ohren und Schal sind kaum zu lesen. Er bleibt hier nur als frühes Experiment.

Und 72 weitere aus unseren Spielen

Gegner, Bosse und Figuren aus Knuddelknall und Möhrenpfad, alle mit derselben Kette erzeugt und im Spiel eingebaut.

Sechs Fehler, die uns Tage gekostet haben

Die Idee „Video zuerst“ war schnell klar. Gut wurde es erst nach diesen sechs Korrekturen.

Der Beschleuniger dämpft die Bewegung

Unser erster Video-Versuch lief mit der lightx2v-LoRA, die Wan in 4 statt 20 Schritten rechnen lässt. Ergebnis: Die Beine trippeln nur. Diese Destillation ist dafür bekannt, Bewegung zu dämpfen. Jetzt läuft die High-Noise-Stufe, die die grobe Bewegung festlegt, ohne Beschleuniger und mit echter CFG 3,5. Nur die Low-Noise-Stufe für die Details nutzt ihn noch. Dazu ein Prompt mit „big energetic strides“ statt „walks in place“.

Links: früher Versuch mit Beschleuniger (4 Schritte, weisser Grund). Rechts: ohne Beschleuniger auf der High-Noise-Stufe, Green Screen, nachgezeichnet.
Links: früher Versuch mit Beschleuniger (4 Schritte, weisser Grund). Rechts: ohne Beschleuniger auf der High-Noise-Stufe, Green Screen, nachgezeichnet.

Weiss frisst den weissen Hasen

Auf weissem Grund verschwimmen weisse Beine mit dem Hintergrund. Das Video-Modell zeichnet sie dann halb, und beim Freistellen fehlen sie. Mit einem flachen Green Screen bleibt jedes Bein sichtbar. Für grüne Figuren wie den Käfer wählt die Kette automatisch Magenta oder Blau.

Links: weisser Grund. Rechts: Green Screen. Beides Rohvideo.
Links: weisser Grund. Rechts: Green Screen. Beides Rohvideo.

Der dümmste Fehler: die Sortierung

Unser Client speicherte die Video-Frames als v_0, v_1, … v_32. Als Text sortiert ergibt das v_0, v_1, v_10, v_11, …, v_19, v_2, v_20 … Alle unsere frühen Video-Zyklen waren dadurch verwürfelt, und wir haben die Video-Modelle dafür verantwortlich gemacht. Jetzt wird nach der letzten Zahl im Dateinamen sortiert.

Links: als Text sortiert. Rechts: nach Zahl sortiert. Dasselbe Video.
Links: als Text sortiert. Rechts: nach Zahl sortiert. Dasselbe Video.

Krea zeichnet nach, statt dass wir rastern

Das Rohvideo einfach zu verkleinern ergibt Matsch. Unsere eigene zeitlich stabile Rasterung hielt das Gesicht ruhig, liess aber Ohren, Beine und Schal zerfasern. Viel besser: Krea 2 mit der k2-pixel32-LoRA malt jeden Frame per img2img neu, mit niedrigem denoise (0,4). Die Pose kommt aus dem Video, der Pixelstrich aus Krea. Wichtig dabei: Krea arbeitet auf einem 16-px-Token-Raster. Deshalb legen wir eine Kunstzelle auf genau 32 Bildpixel (2 × 2 Tokens), dann bleibt das Raster stabil.

Links: Rohvideo verkleinert. Mitte: eigene Rasterung (verworfen). Rechts: Krea-Nachzeichnen.
Links: Rohvideo verkleinert. Mitte: eigene Rasterung (verworfen). Rechts: Krea-Nachzeichnen.

Palette sperren

Krea zeichnet jeden Frame einzeln und erfindet dabei Farben: Die Flasche des Betrunkenen wurde neongrün. Jetzt bekommt der Raster-Schritt eine feste Palette mit, für alle Frames dieselbe: die Farben des Standbilds plus die Key-Farbe. Für Effekte wie Feuer und Rauch, die neue Farben brauchen, kommt die Palette stattdessen aus den gewählten Video-Frames.

Links: freie Palette. Rechts: Palette des Standbilds gesperrt.
Links: freie Palette. Rechts: Palette des Standbilds gesperrt.

„Bleib, wie du bist“ bremst

Damit das Video-Modell nicht zoomt, steht im Prompt: Die Figur behält Grösse, Proportionen und Farben. Für Rennen ist das richtig. Für einen Geier, der abheben soll, oder einen Käfer, der explodieren soll, bremst genau dieser Satz: Der Käfer blieb heil, der Geier blieb stehen. Für grosse Aktionen fällt der Satz jetzt weg, die Kamera folgt der Figur, die Leinwand bekommt Rand, und Krea zeichnet schwächer nach (0,3), damit es die Explosion nicht wieder wegmalt.

Links: Käfer mit „bleib, wie du bist“. Rechts: ohne den Satz, mit Rand und schwächerem Nachzeichnen.
Links: Käfer mit „bleib, wie du bist“. Rechts: ohne den Satz, mit Rand und schwächerem Nachzeichnen.

Die Einstellungen

Das sind die Standardwerte, mit denen die Beispiele oben entstanden sind. Abweichungen pro Animation stehen bei den KNUDDEL-Beispielen und in den Rezepten im Repository.

Video-ModellWan 2.2 I2V A14B, GGUF Q4_K_M (High- und Low-Noise)
Video384 × 384, 33 Frames, Seed 3
Schritte8 gesamt: 4 High-Noise ohne lightx2v, CFG 3,5 · 4 Low-Noise mit lightx2v, CFG 1 · Shift 5 · euler/simple
Prompt„Pixel art video game sprite animation of <Figur>, side view facing right. The character from the start image <Aktion>. Static camera, no zoom … Plain solid bright green background (green screen).“
Pixel-ModellKrea 2 Turbo fp8 + k2-pixel32 (bis 48 px Raster), sonst k2-pixel64
Nachzeichnenimg2img, denoise 0,4 (Effekte 0,3), 8 Schritte, CFG 1, Leinwand = Raster × 32 px
RasterMiniMax H3 Pixel Art Refiner auf 32 × 32 (bzw. 32 + 2 × Rand), gemeinsame Palette
Rand0 für Laufen, 2 für Trinken, 6 für Flügel, 8 für Explosionen (in Rasterzellen)

Zeiten und Hardware

Alles läuft auf einem ComfyUI-Server mit einer RTX 4090 (24 GB), den sich mehrere Dienste teilen. Der Rechner hat 44 GB RAM, und genau das ist der Engpass: Wan 14B lädt zwei Modelle à 9 GB nacheinander. Wir lassen es deshalb nur mit einem RAM-Wächter laufen.

Anfangs dauerte eine Animation etwa 4,5 Minuten: Video in 512 × 512 mit 10 Schritten, dann jeder Frame als eigener Krea-Auftrag. Zwei Änderungen haben das mehr als halbiert. Krea zeichnet jetzt 6 Frames in einem Auftrag, also mit einmal Modell-Laden. Und das Video läuft in 384 × 384 mit 8 Schritten, bei gleicher Bewegung.

EinstellungFramesVideo (Wan)Pixel (Krea)Gesamt
Anfang: 512², 10 Schritte, Krea je Frame einzeln12––≈ 4,5 min
512², 10 Schritte, Krea 6 pro Auftrag · Hase1263 s101 s2,7 min
384², 8 Schritte, Krea 6 pro Auftrag · Hase (Standard)645 s68 s2,1 min
384², 8 Schritte, Krea 6 pro Auftrag · Betrunkener (Standard)1246 s138 s3,1 min
384², 8 Schritte, Zelle 16 · Hase645 s29 s1,2 min
384², 8 Schritte, Zelle 16 · Käfer1244 s82 s2,1 min

Video = reine Rechenzeit auf dem Server, Pixel = Wandzeit mit Upload und Download, Gesamt mit erstem Modell-Laden. „Zelle 16“ (k2-pixel64 auf halber Leinwand) ist schneller, macht bei Effekten aber Krümel im Hintergrund. Standard bleibt deshalb Zelle 32.

Grenzen

  • Abgestimmt auf Figuren bis 64 Pixel. Grössere brauchen eine grössere Leinwand und die k2-pixel64-LoRA.
  • Die Ansicht muss im Standbild schon stimmen. Die Kette erzeugt keine neue Blickrichtung.
  • Die Figur muss im Text genau beschrieben sein: Farben, Kleidung, Besonderheiten. Sonst „korrigiert“ Krea sie.
  • Nicht jeder Seed passt. Realistisch sind ein paar Varianten pro Animation, aus denen man eine auswählt.
  • Kleine Schwankungen bleiben: Die Ohrform des Hasen wechselt leicht, beim Geier wird der Körper im Abschlag zu einem dunklen Klumpen.
  • Video-Modelle zerstören Figuren ungern. Explosionen brauchen eine klare Aktion im Text und den Modus ohne „bleib, wie du bist“.
  • Ohne Grafikkarte mit mindestens 24 GB und viel Arbeitsspeicher wird es mit dem 14B-Modell zäh. Das kleine 5B-Modell ist schneller, hat in unseren Tests aber die Figur verändert.
  • Die Modelle haben eigene Lizenzen. Krea 2 steht unter der Krea Community License. Prüf die Bedingungen, bevor du Ergebnisse kommerziell nutzt.

Selbst ausprobieren

Wir stellen die Kette als kleines Open-Source-Paket bereit: drei ComfyUI-Workflows, ein Python-Werkzeug ohne weitere Abhängigkeiten ausser numpy und Pillow – seit dem 8. Oktober auch für Szenen und Sprites (pvs scene, pvs sprite) –, die KNUDDEL-Beispiele von oben samt Eingabe-Sprite und Rezept, die frühen Prüf-Animationen und eine Anleitung. Modell-Gewichte liegen nicht bei. Sie kommen direkt von ihren Autoren, die Links stehen in der Anleitung.

pvs check
pvs animate bear.png --view "side view facing left" \
  --action "stomps forward grumpily, swinging his short arms …" \
  --description "a small grumpy pink gummy bear with a dark plum outline" \
  --mode loop --frames 6 --stabilize scale --out out/bear-walk
Code und Workflows auf GitHub ↗

Das Paket heisst pixel-video-sprites (MIT-Lizenz).

Danke an die Autorinnen und Autoren von Wan 2.2, Krea 2, der k2-pixel-LoRAs (e-n-v-y), des Krea-2-Pixel-Art-Refiners (envy-ai), von ComfyUI-GGUF (city96), der GGUF-Fassungen (QuantStack) und an das Comfy-Team.

← Zur Startseite