Was macht Sprite-Generator?
Ausgaben
Generierte und validierte Sprites, Vorschauen und Godot-Integrationsartefakte.
Nicht-Ziele
Verwendung lokaler Zeichenskripte als Ersatz für die eigentliche Bilderzeugung.
Zweck
Erstellung von produktionsorientierten 2D-Sprites für Spiele aus einem Konzept, einem oder mehreren Referenzbildern oder einem detaillierten Art-Direction-Brief. Der Skill ist bewusst stilunabhängig: Der Benutzer kann ein Referenzbild, eine Stilkarte, einen Screenshot oder eine lebendige Beschreibung bereitstellen, und der Workflow wandelt dies in einen wiederverwendbaren Sprite-Generierungslauf mit Prompts, Grounding-Bildern, einer generierten Basisreferenz, Animations-/Zustandsaufträgen, deterministischer Extraktion, Qualitätssicherung und Godot-Startdateien um.
Das Ziel ist nicht nur, ein hübsches Bild zu erstellen. Das Ziel ist es, Assets zu produzieren, die mit vorhersagbaren Dateinamen, transparenten Hintergründen, sauberen Atlanten, Frame-Metadaten, QA-Kontaktblättern und SpriteFrames-Startressourcen in ein Godot-Projekt eingefügt werden können.
Verwenden Sie diesen Skill für Anfragen wie:
- "Erstelle Möbel für ein Haus mit sauberen und schmutzigen Versionen."
- "Erstelle einen Charakter in diesem Kunststil mit den Animationen 'idle', 'walk', 'point' und 'clean'."
- "Erstelle eine Puppenhaus-Raumkarte im gleichen Stil wie diese Referenz."
- "Generiere alternative Outfits/Farbvarianten und behalte die gleichen Körperproportionen bei."
- "Verwandle diese Objektskizze in ein spielbereites transparentes Prop-Sprite."
Eingaben
Akzeptiert jede Kombination dieser Eingaben:
- Referenzbilder: Stilblatt, existierender Charakter, Prop, Screenshot, Moodboard, Palette, vorher generiertes Sprite oder In-Game-Aufnahme.
- Lebendige Beschreibung: Asset-Name, Rolle, Form, Material, Farbe, Maßstab, Kamerawinkel, Verwendungszweck und Stil-Adjektive.
- Asset-Typ:
character,npc,player,furniture,prop,object,map,room,dollhouseoder generischessprite. - Animationen: Benannte Aktionen, Frame-Anzahlen, Richtungen, Schleifen-/Einmal-Verhalten, Dauern oder FPS und spezielle Posen-Notizen.
- Zustände und Varianten: sauber/schmutzig, offen/geschlossen, gesund/welken, leer/voll, Outfit A/B, Farbset, Schadensstufen usw.
- Integrationsziel: Godot-Version, Zellgröße, Atlas-Spalten, Maßstab, Top-Down/isometrische/Seitenansicht-Kamera und bevorzugter Importpfad.
Wenn der Benutzer Details auslässt, leiten Sie sinnvolle Standardwerte ab und machen Sie die Ausgabe einfach iterierbar. Blockieren Sie nicht bei jedem fehlenden Detail. Stellen Sie eine klärende Frage nur dann, wenn die Auslassung zu teurer Fehlarbeit führen würde, wie z. B. unbekannter Stil, unbekannte Charakteridentität oder eine erforderliche Animationsliste.
Delegation der visuellen Generierung
Die eigentliche Kunst muss mit der bildgenerierenden Fähigkeit der Umgebung erstellt werden, nicht mit lokalen Skripten. In einer Codex-typischen Skill-Umgebung delegieren Sie an den installierten $imagegen-Skill, falls verfügbar. In ChatGPT verwenden Sie das native Bildgenerierungstool, wenn der Benutzer fragt, das visuelle Asset tatsächlich zu erstellen. Die gebündelten Python-Skripte sind nur für deterministische Produktionsschritte.
Erlaubte deterministische Schritte:
- Erstellen von Laufordnern und Prompt-Dateien
- Kopieren stabiler Referenzen in den Lauf
- Erstellen von Layout-Guide-Bildern
- Aufzeichnen ausgewählter generierter Ausgaben
- Entfernen eines flachen Chroma-Key-Hintergrunds
- Aufteilen von Streifen in Einzelbilder
- Zuschneiden, Skalieren, Polstern und Zentrieren von Frames in konsistente Zellen
- Erstellen von PNG/WebP-Atlanten
- Generieren von Kontaktblättern und GIF-Vorschauen
- Schreiben von JSON-Manifesten und Godot-Startressourcen
Harte Grenze: Zeichnen, malen, synthetisieren, kacheln, verzerren oder erfinden Sie die Sprite-Kunst nicht mit Pillow, SVG, CSS, HTML-Canvas oder programmatischen Formen als Ersatz für die Bilderzeugung. Die Skripte können generierte Bilder verarbeiten; sie können nicht als versteckter Kunstgenerator verwendet werden.
Stilerfassung und Stilsperre
Wenn eine Stilreferenz bereitgestellt wird, behandeln Sie sie als Quelle der Wahrheit. Extrahieren Sie diese Eigenschaften in den Prompt-Plan:
- Kamerawinkel und Perspektive: vorne, Seite, Top-Down, isometrisch, 3/4, Puppenhaus, orthographisch
- Proportionen: Chibi, realistisch, gedrungen, groß, spielzeugartig, Pixel, malerisch, flacher Vektor, Low-Poly-Render
- Linien- und Kantenbehandlung: keine Umrandung, dicke Umrandung, weiche gerenderte Kante, Pixelkante, Cel-Shaded-Rand
- Materialien und Beleuchtung: Ton, Plüsch, Plastikspielzeug, bemaltes 3D, flaches Cel, glänzend, matt, Aquarell usw.
- Palette und Sättigung
- Schattenrichtlinie: keine für transparente Sprites, es sei denn, sie werden explizit als Teil des Objekts beibehalten
- Hintergrundrichtlinie: transparenter oder flacher Chroma-Key zur Extraktion
- Maßstab und Lesbarkeit bei der Zielzellgröße
Eine Zeile oder ein Zustand schlägt fehl, wenn es wie ein verwandtes Asset in einem anderen Stil aussieht und nicht wie dasselbe Asset im Zielstil.
Standardwerte nach Asset-Typ
Charaktere/NPCs/Spieler
Standardausgaben, wenn der Benutzer keine Animationen angibt:
| Animation | Frames | Zweck |
|---|---|---|
idle | 4 | Atem-/Blink-Schleife; erster Frame fungiert als statische Pose |
walk_down | 6 | Vorwärts-/Abwärtsbewegung |
walk_up | 6 | Rückwärts-/Aufwärtsbewegung |
walk_left | 6 | Seitwärtsbewegung nach links |
walk_right | 6 | Seitwärtsbewegung nach rechts |
Optionale häufige Aktionen: point, talk, pickup, carry, clean, use_item, sit, sleep, cry, celebrate, fail, interact, attack, cast, jump, push, pull.
Möbel/Props/Objekte
Standardausgaben, wenn der Benutzer keine Zustände angibt:
| Zustand | Frames | Zweck |
|---|---|---|
clean | 1 | normaler/aufgeräumter Zustand |
dirty | 1 | schmutziger/unordentlicher Zustand desselben Objekts |
Optionale häufige Zustände: empty, half_full, full, overflowing, open, closed, on, off, healthy, wilted, broken, repaired, selected, highlighted, locked, unlocked.
Karten/Räume/Puppenhäuser
Die Standardausgabe ist ein großes map_base-Sprite oder ein Hintergrund. Geben Sie für Räume an, ob Sie eine einzelne flache Kunstepoche oder separate Ebenen wie floor, walls, furniture, interactables, path_overlay und collision_reference benötigen. Fügen Sie keine UI-Beschriftungen, Pfeile, Pfadlinien oder Tutorial-Overlays in die Produktionskarte ein, es sei denn, sie werden als separates Overlay angefordert.
Hintergrund- und Transparenzregeln
Bevorzugen Sie flache Chroma-Key-Hintergründe für die Generierung, wenn das Bildwerkzeug nicht zuverlässig echten Alpha erzeugt. Der Standard-Key ist #00ff00. Der endgültige Atlas sollte nach der Extraktion transparentes PNG/WebP sein.
Für generierte Quellbilder:
- Verwenden Sie eine flache Hintergrundfarbe über den gesamten Streifen oder das Objekt-Render hinweg
- Halten Sie das Asset visuell vom Chroma-Key getrennt
- Vermeiden Sie grüne Highlights/Materialien bei Verwendung eines grünen Keys; wählen Sie stattdessen Magenta- oder Blau-Key, wenn das Asset Grün benötigt
- Kein weißer Hintergrund, Schachbrettmuster-Hintergrund, UI-Panel, Beschriftungen, Frame-Nummern, sichtbares Gitter, Rand oder Szenerie
- Keine Schlagschatten, Bodenschatten, Glühen, weiche transparente Halos, Staubwolken, Speedlines, Bewegungsspuren oder lose losgelöste Effekte, es sei denn, ein kleiner anhaftender undurchsichtiger Effekt ist explizit Teil des Sprites
- Jeder Frame muss vollständig, getrennt, unbeschnitten und innerhalb seines Slots sein
Animations-Prompting-Regeln
Für jede Animationszeile/jeden Animationsstreifen:
- Fordern Sie genau die deklarierte Frame-Anzahl an
- Geben Sie das Layout an: normalerweise horizontaler Streifen von links nach rechts
- Verwenden Sie ein kanonisches Basisbild und Referenzbilder als Grounding-Eingaben
- Behalten Sie Identität, Proportionen, Palette, Material, Umriss/Kantenstil und Kamerawinkel konsistent bei
- Kommunizieren Sie Bewegung durch Posenwechsel, nicht durch Unschärfe, Speedlines, Staub oder Schatten
- Erste und letzte Frames sollten bei
loop=truesauber schleifen - Fordern Sie für Richtungsanimationen die Richtung explizit an und vermeiden Sie versehentlich gespiegelte Details, wenn der Charakter seitenabhängige Accessoires hat
Akzeptieren Sie keine Zeile, die das Gesicht, die Körperform, das Outfit, das Prop-Design, den Materialstil oder den Maßstab des Charakters relativ zur Basis ändert.
Sichtbarer Fortschrittsplan
Für einen normalen Asset-Lauf führen Sie eine sichtbare Checkliste für den Benutzer:
- Vorbereiten der Asset-Anfrage.
- Erstellen des kanonischen Aussehens.
- Erstellen von Zuständen und Animationszeilen.
- Verpacken für Godot.
Was jeder Schritt bedeutet:
- Vorbereiten der Asset-Anfrage: Asset-Name, Asset-Typ, Stilquelle, Ausgaben, Zellgröße, Chroma-Key und Ausgabeverzeichnis festlegen.
- Erstellen des kanonischen Aussehens: Die Basisreferenz generieren oder auswählen, die zur Identität/Stilsperre wird.
- Erstellen von Zuständen und Animationszeilen: Jeden Ausgabeauftrag unter Verwendung der Basis und der Referenzen generieren; nur fehlschlagende Zeilen/Zustände reparieren.
- Verpacken für Godot: Frames extrahieren, Atlas erstellen, QA-Kontaktblatt erstellen, Manifeste schreiben,
SpriteFrames-Startressource schreiben und Dateipfade melden.
Markieren Sie einen Schritt nur dann als abgeschlossen, wenn die tatsächliche Datei oder Entscheidung existiert.
Workflow
1. Einen Laufordner vorbereiten
python3 ./scripts/prepare_sprite_run.py \
--asset-name "Marktkiste" \
--asset-type prop \
--description "lesbare hölzerne Marktkiste mit bunten Inhalten" \
--style-notes "passend zur mitgelieferten Spielkunst-Referenz" \
--reference /absoluter/pfad/zu/stil_referenz.png \
--state full:1:"Kiste voller Gegenstände":single:once \
--state empty:1:"gleiche Kiste leer":single:once \
--cell-size 256x256 \
--columns 2 \
--output-dir /absoluter/pfad/zu/ausfuehrung
Für einen Charakter:
python3 ./scripts/prepare_sprite_run.py \
--asset-name "Spieler" \
--asset-type character \
--description "freundlicher Spielercharakter mit klarer Silhouette" \
--reference /absoluter/pfad/zu/stil_referenz.png \
--animation idle:4:"sanftes Atmen und Blinzeln" \
--animation walk_down:6:"Gehen zur Kamera hin" \
--animation walk_up:6:"Gehen von der Kamera weg" \
--animation walk_left:6:"Gehen in Seitenansicht nach links" \
--animation walk_right:6:"Gehen in Seitenansicht nach rechts" \
--cell-size 256x320 \
--columns 6 \
--output-dir /absoluter/pfad/zu/ausfuehrung
Fortgeschrittene Läufe können mit einer JSON-Konfigurationsdatei beschrieben und mit --config übergeben werden.
2. Bereite Aufträge inspizieren
python3 ./scripts/sprite_job_status.py --run-dir /absoluter/pfad/zu/ausfuehrung
Der base-Auftrag sollte zuerst generiert werden. Zeichnen Sie das ausgewählte generierte Basisbild auf, bevor Sie abhängige Aufträge generieren. Der Recorder schreibt references/canonical-base.png, das nachfolgende Aufträge als Eingabebild verwenden sollten.
3. Jeden visuellen Auftrag generieren
Verwenden Sie für jeden bereiten Auftrag die in imagegen-jobs.json aufgeführte Prompt-Datei plus alle aufgeführten Eingabebilder. Wählen Sie das beste Original-generierte Bild aus und zeichnen Sie es dann auf:
python3 ./scripts/record_imagegen_result.py \
--run-dir /absoluter/pfad/zu/ausfuehrung \
--job-id job-id-from-status \
--source /absoluter/pfad/zu/generierte_ausgabe.png
Zeichnen Sie keine handbearbeiteten Vorrichtungen, Miniaturen oder Dateien aus den Ordnern final/frames des Laufs als Quellkunst auf. Zeichnen Sie die ausgewählte Original-generierte Ausgabe auf.
4. Finalisieren
python3 ./scripts/finalize_sprite_run.py --run-dir /absoluter/pfad/zu/ausfuehrung
Erwartete Ausgabe:
run/
asset_request.json
imagegen-jobs.json
prompts/
references/
decoded/
frames/frames-manifest.json
final/spritesheet.png
final/spritesheet.webp
final/validation.json
qa/contact-sheet.png
qa/previews/*.gif
qa/run-summary.json
godot/<asset>_spriteframes.tres
godot/<asset>_animated_sprite_2d.tscn
godot/godot_import_manifest.json
godot/README_GODOT.md
5. In Godot kopieren
python3 ./scripts/package_godot_assets.py \
--run-dir /absoluter/pfad/zu/ausfuehrung \
--project-dir /absoluter/pfad/zu/godot-projekt \
--dest assets/sprites
Überprüfen Sie godot/README_GODOT.md nach der Paketierung. Wenn Sie Dateien an einen anderen res://-Speicherort kopieren, aktualisieren Sie den Texturpfad innerhalb der generierten .tres-Datei.
Reparatur-Workflow
Wenn die Qualitätssicherung fehlschlägt, reparieren Sie zuerst den kleinsten Bereich:
- Ein einzelner schlechter Zustand oder eine einzelne Animationszeile.
- Ein einzelner schlechter Frame nur, wenn Ihr Bildwerkzeug zuverlässig Frame-Level-Bearbeitung unterstützt.
- Die kanonische Basis nur, wenn Identität/Stil überall falsch ist.
- Den gesamten Atlas nur als letzte Option.
Häufige Reparatur-Prompts:
- "Nur
walk_leftneu generieren; den exakten kanonischen Charakter, das Outfit, die Proportionen und den Spielzeug-Render-Stil beibehalten." - "Nur
dirtyneu generieren; es muss dieselbe Couch wiecleansein, aber mit unordentlicher Decke/Kissen." - "Den Streifen mit genau 6 Frames und ohne Frame-Nummern oder Beschriftungen neu generieren."
- "Magenta-Chroma-Key verwenden, da das Objekt grünes Material benötigt."
Nach dem Aufzeichnen des Reparaturbilds die Finalisierung erneut ausführen.
QA-Qualitätskriterien
Akzeptieren Sie ein Asset erst, wenn diese Prüfungen bestanden sind:
- Die generierte Basis entspricht dem angeforderten Stil oder den bereitgestellten Stilreferenzen.
- Jeder Zustand/jede Animation ist dieselbe Asset-Identität, kein Redesign.
- Exakte Frame-Anzahlen sind vorhanden.
- Die transparente Extraktion entfernt keine wichtigen Teile des Sprites.
- Frames sind vollständig, zentriert, gepolstert und nicht beschnitten.
- Keine Beschriftungen, Frame-Nummern, Gitterlinien, Wasserzeichen, UI-Panels oder Szenerie in die Produktionskunst eingeflossen.
- Keine unerwünschten Schatten, Glühen, Staub, Speedlines, Unschärfe oder losgelösten Effekte nach der Extraktion vorhanden.
- Das Kontaktblatt liest sich bei Zielgröße korrekt.
final/validation.jsonhat keine Fehler; Warnungen wurden visuell überprüft.- Godot-Manifestnamen stimmen mit den Animationsnamen überein, die Sie im Code aufrufen möchten.
Abnahmekriterien
Ein abgeschlossener Lauf sollte Folgendes enthalten:
- eine kanonische Basisreferenz in
references/canonical-base.png - ausgewählte generierte Quellen, aufgezeichnet in
imagegen-jobs.json - extrahierte transparente Frame-PNGs
final/spritesheet.pngund, falls unterstützt,final/spritesheet.webpqa/contact-sheet.png- GIF-Vorschauen für Multi-Frame-Animationen
final/validation.jsonohne Fehler- Godot-Startdateien unter
godot/ - einen kurzen benutzerorientierten Bericht, der alle reparierten oder trotz Warnungen manuell akzeptierten Zeilen/Zustände auflistet
Regeln
- Verwenden Sie visuelle Generierung für Visuals; verwenden Sie Skripte nur für deterministische Verarbeitung.
- Verwenden Sie immer eine kanonische Basis für Multi-Output-Assets.
- Behalten Sie Referenzen für jeden abhängigen visuellen Auftrag bei, wenn das Bildwerkzeug Referenzen unterstützt.
- Bevorzugen Sie transparente oder chroma-key-kompatible Ausgaben gegenüber Szenenillustrationen.
- Fügen Sie keine UI-Beschriftungen, Anleitungspfeile, Pfadlinien oder Kollisionshilfen in Produktionssprites ein, es sei denn, sie werden als separate Overlay-Assets angefordert.
- Halten Sie für Godot die Animationsnamen stabil und in Kleinbuchstaben, mit...
[Für die Übersetzung gekürzt]