OmniSprite 🎮✨ — Befehl /sprite
Chirurgischer Pixel-Art-Workflow über den pixel-mcp-Server von Aseprite (Tool-Katalog: references/mcp-tools.md). Antworte dem Benutzer in seiner Sprache.
Befehl /sprite
Verwendung: /sprite [Beschreibung] [Flags]. Ohne Argumente frage, was erstellt werden soll.
| Flag | Wirkung |
|---|---|
| `--tamanho S | M |
--estilo <Preset> | Einer von 12 Stilen aus references/styles.md (Standard hd-pixel) |
| `--vista lateral | 3-4 |
--anim idle,walk,attack,... | Zu animierende Zyklen (Rezepte in references/animation.md) |
| `--paleta <slug-lospec | #hex,#hex |
--doctor | Nur Diagnose: Aseprite gefunden? MCP registriert? (Schritte aus Punkt 0) |
--compilar | Erzwingt den Workflow zum Kompilieren von Aseprite aus dem Quellcode (Punkt 0.4a) |
Angegebene Flags machen die entsprechende Frage im Briefing überflüssig; was fehlt, wird in der grill-me-Runde erfragt. Beispiel: /sprite Ritter Dark Fantasy --tamanho L --anim idle,walk,attack.
0. Voraussetzungen (Plug-and-Play; einmal prüfen und Fehlendes korrigieren)
- Sind die MCP-Tools sichtbar? (
create_canvas,draw_pixels,export_sprite…). Wenn ja, gehe zu Schritt 1. - Wenn nicht, finde Aseprite: Führe
scripts/find-aseprite.ps1(Windows) oderscripts/find-aseprite.shaus. Ausgabe 0 zeigt den Pfad; Ausgabe 2 = nicht gefunden. - Aseprite gefunden → Führe
scripts/install-mcp.ps1/.shaus (erkennt selbstständig, lädt die fixe Version vonpixel-mcpherunter, prüft SHA-256 und registriert sie). Bitte den Benutzer, den Client neu zu starten, und fahre fort. - Aseprite NICHT gefunden → Frage den Benutzer (eine Frage mit Optionen); nimm nichts an:
- „Aseprite ist nicht installiert. Möchtest du, dass ich den Quellcode von GitHub herunterlade, kompiliere und konfiguriere? (benötigt git, CMake, Ninja und einen C++-Compiler; dauert ca. 10–40 Minuten; die Aseprite-Lizenz erlaubt das Kompilieren für den persönlichen Gebrauch, nicht die Weiterverteilung der Binärdatei.)“
- Optionen: (a) Ja, kompiliere für mich (empfohlen) · (b) Ich installiere selbst (Steam / aseprite.org / itch.io; kostenpflichtig, unterstützt den Entwickler) · (c) Aseprite überspringen und Plan B mit Python/Pillow verwenden (keine
.aseprite-Datei, gleiche Stilregeln). - Bei (a): Führe
scripts/build-aseprite.ps1(Windows) oderscripts/build-aseprite.shaus. Falls eine Voraussetzung fehlt, nenne sie und biete an, sie mit dem Paketmanager der Plattform (winget / brew / apt) zu installieren – aber nur nach Rückfrage. Bei Fehlschlag folgereferences/build-aseprite.md. Wenn fertig, führe Schritt 3 aus.
- Zeichne niemals vor Abschluss des Briefings (Abschnitt 1). Fehlende Antworten → nachfragen oder den Standardwert verwenden und diesen nennen.
1. Briefing (nutze grill-me, wenn installiert)
Stelle die folgenden Fragen als kurze grill-me-Runde (alle unabhängigen Fragen zusammen, jede mit empfohlener Antwort, damit man mit „ja“ zustimmen kann); falls der Skill nicht existiert, frage normal. Frage nur, was noch fehlt.
| Frage | Standard bei keiner Antwort |
|---|---|
| Was ist es, in einem Satz + Stimmung? | – |
| Wo wird es verwendet (Spielgenre, UI, Druck)? Kamera: seitlich / 3/4 Top-Down / isometrisch / frontal | Seitenansicht |
Stil (siehe references/styles.md) | hd-pixel |
| Größenstufe (Tabelle unten) | L |
| Animation? Welche Zyklen | keine |
| Palette: vorgegeben / von Lospec auswählen / von Referenz ableiten | Mit Skill color ableiten (/color falls vorhanden, sonst Lospec) |
2. Größenstufen (gehe über „Symbolgröße“ hinaus; bleibe Pixel-Art)
| Stufe | Leinwand | Typische Verwendung | Farben |
|---|---|---|---|
| S | 32×32 | Items, Symbole | 8–16 |
| M | 64×64 | Kleine Charaktere, Props | 16–24 |
| L | 128×128 | Hauptcharaktere, detaillierte Props | 24–40 |
| XL | 192×192 / 256×256 | Heldenporträts, Bosse | 32–64 |
| Szene | 320×180 oder 480×270 | Szenen, Key Art | 32–64 |
Regel: Das Pixel ist quadratisch und wird niemals mit einem nicht-ganzzahligen Wert skaliert. Detail entsteht durch mehr Pixel, nicht durch Unschärfe. Wenn der Benutzer „mehr Detail“ wünscht, erhöhe die Stufe, bevor du Rauschen hinzufügst.
3. Palette zuerst
- Wähle/leite die Palette ab (
references/palette-workflow.md; Hex von Lospec:https://lospec.com/palette-list/<slug>.hex). create_canvasim indizierten Farbmodus, dannset_palette. Ordne die Palette innerhalb jeder Rampe von dunkel zu hell (sort_palettenach Farbton und dann Luminanz, falls nötig).- Erstelle Rampen, keine losen Farben: 3–5 Abstufungen pro Material (Schatten, Mitte, Licht, Glanzlichter), mit Farbtonverschiebung (Schatten → kühler/gesättigter, Lichter → wärmer). Überprüfe mit
analyze_palette_harmonies. - Übergib
use_palette: truein den Zeichenaufrufen, damit jedes Pixel an die Palette angepasst wird.
3b. Ausrichtung und Pose (vor dem Zeichnen festlegen; siehe references/orientation-and-pose.md)
Gib view an (seitlich / 3/4 / frontal / isometrisch), facing (zeichne Seitenansichten nach rechts gewandt), Lichtrichtung, welche Hand welches Prop hält und wohin Umhang/Haar fallen. Regeln: Gliedmaßen auf der Kameraseite vor dem Torso, die auf der gegenüberliegenden Seite dahinter, Kopf in Blickrichtung, Umhänge am Rücken befestigt und in der untersten Ebene, ein Prop pro Hand, vor dem Körper. Für alles, das animiert wird, baue zuerst das Skelett: Gelenke + 2-Knochen-IK, dann die Formen (rig.py in https://github.com/LimaEdu-7x/omni-sprite/tree/main/examples/knight). Führe die Silhouetten-/Spiegel-/Überlappungstests nach dem ersten Rendern durch.
4. Bau-Reihenfolge (Ebenen, immer in dieser Reihenfolge)
Erstelle Ebenen von unten nach oben mit add_layer: bg, shadow-cast, base, shade, light, detail, outline, fx.
- Silhouette – Fülle die gesamte Form mit einer dunklen, flachen Farbe in
base. Betrachte bei 1×: Wenn sie nicht als Silhouette erkennbar ist, mache sie neu. Starke Asymmetrie, klare Trennung von Kopf/Torso/Gliedmaßen, lesbarer Negativraum. - Flächige Farben – Ein mittlerer Ton pro Material mit
fill_area/draw_rectangle/draw_circle/draw_contour. - Formschatten – Wähle EINE Lichtrichtung (Standard: oben links). Verwende
apply_shading(Stil hard für scharf, smooth für HD) inshade/light; füge selektive Kantenbeleuchtung auf der der Hauptlichtquelle gegenüberliegenden Seite hinzu. - Textur und Detail –
draw_with_dithernur dort, wo der Stil es erlaubt (siehe Stile); manuellesdraw_pixelsfür Augen, Nähte, Schnallen, Glanzlichter. Gruppiere Pixel; vermeide einzelne Pixel (Rauschen) und „Zacken“ (unregelmäßige Stufen in Linien). - Kontur –
apply_outlineund dann manuell anpassen: selektive Kontur (dunkelste Farbe mit Farbtonverschiebung, nicht reines Schwarz) für HD; vollständige dunkle Kontur für 8/16-Bit; keine für „ohne Kontur“. - Anti-Aliasing –
suggest_antialiasingbei Kurven/Diagonalen (überspringe bei 1-Bit/NES). - FX – Glanz, Funken, Boden-Schatten in
fx/shadow-cast.
Für komplexe organische Formen verwende die Raster-Methode: Schreibe das Sprite als ASCII-Raster (ein Zeichen = Palettenindex), konvertiere mit scripts/grid_to_pixels.py in einen Batch von draw_pixels-Aufrufen (siehe references/grid-method.md). Große Flächen mit Formwerkzeugen, Details mit dem Raster.
5. Rendern-und-Überprüfen-Zyklus (obligatorisch)
Nach jedem wichtigen Schritt: export_sprite PNG → Kopie mit scale_sprite ×4 (Nearest) oder vergrößertes PNG → betrachte das Bild (Read des PNG). Gehe die Checkliste in references/quality-checklist.md durch. Korrigiere den schlimmsten Fehler und rendere erneut. Maximal 3 Zyklen pro Schritt; danach berichte, was übrig geblieben ist.
6. Animation (wenn gewünscht)
Befolge references/animation.md: Zuerst Keyframes, dann Zwischenframes, 8–12 fps (set_frame_duration 80–125 ms), ein Tag pro Zyklus (create_tag: idle, walk, run, attack, hurt, death), duplicate_frame + Bearbeitung, link_cel für statische Teile, Anker/Füße auf derselben Pixelzeile fixiert. Exportiere mit export_sprite (GIF-Vorschau) und export_spritesheet (+JSON).
7. Abgabe
Speichere die .aseprite-Datei (save_as), exportiere PNG 1×, PNG-Vorschau ×4 und für Animationen GIF + Sheet + JSON. Gib an: Leinwandgröße, Name/Anzahl der Palettenfarben, Lichtrichtung, Stil und Dateipfade.
Fallstricke (geprüft mit pixel-mcp 0.5.0)
create_canvasgibt JSON{"file_path": ...}zurück; dieser Pfad ist dersprite_pathfür alle anderen Tools. Es gibt keinen Namensparameter; verwendesave_aszum Benennen.- Verwende normale Schrägstriche in
output_path(C:/Users/ich/ausgabe.png). Rückwärtsschrägstriche brechen das generierte Lua (\Uwird als Escape gelesen) und führen zu Fehlern mit „invalid character 'U'“. scale_spriteverändert das Sprite an Ort und Stelle: Machesave_aseiner Kopie, skaliere die Kopie und exportiere sie.- Frame-Zahlen beginnen bei 1 (
export_spritemit Frame 0 = alle). draw_pixelserhält[{x,y,color}], bis zu ~10.000 pro Aufruf; das ist, wasgrid_to_pixels.pyerzeugt.- Bei stdio-Kommunikation mit dem Server: JSON-RPC pro Zeile, schreibe Bytes mit
\n(CRLF schlägt fehl mit „invalid trailing data“). - Ein vollständiges Beispiel (Skelett → schattierte Teile → Ebenen → Exporte) befindet sich in https://github.com/LimaEdu-7x/omni-sprite/tree/main/examples/knight.
Zusätzliche Referenzen (bei Bedarf laden)
references/build-aseprite.md– Aseprite aus dem Quellcode kompilieren und Fehler beheben.references/orientation-and-pose.md– Ansicht/Blickrichtung, nahe/ferne Ebenen, Rigs, Richtungssets.references/styles.md– 12 Stile mit genauen Regeln.references/palette-workflow.md– Rampen, Farbtonverschiebung, Lospec-Paletten, Farbbudget.references/animation.md– Zyklen, Frames, Zeiten, Easing.references/quality-checklist.md– Bestanden/nicht bestanden-Checkliste.references/resources.md– 12+ Websites und 20+ Community-Skills/Server zum Lernen und Integrieren.references/mcp-tools.md– Tool-Katalog.- Optionale Companion-Skills:
color//color(Palettenauswahl und -spiegelung), ein Frontend-Design-Skill, falls die Sprites für eine Web-UI sind.
Ehrliche Grenzen
Pixel-für-Pixel-Zeichnen über Tool-Aufrufe ist langsam, und das Modell „sieht“ die Leinwand nicht ohne Export. Bevorzuge Formen + Raster-Methode + Überprüfungszyklus; verwende analyze_reference / downsample_image, wenn der Benutzer ein Referenzbild sendet.