OmniSprite 🎮✨ — commande /sprite
Flux chirurgical de pixel art sur le serveur pixel-mcp d’Aseprite (catalogue d’outils : references/mcp-tools.md). Répondez à l’utilisateur dans sa langue.
Commande /sprite
Utilisation : /sprite [description] [flags]. Sans arguments, demandez quoi créer.
| Flag | Effet |
|---|---|
--tamanho S|M|L|XL|cena | niveau de taille (par défaut L, 128×128) |
--estilo <preset> | un des 12 styles de references/styles.md (par défaut hd-pixel) |
--vista lateral|3-4|frontal|iso | vue verrouillée (par défaut latérale, tournée vers la droite) |
--anim idle,walk,attack,… | cycles à animer (recettes dans references/animation.md) |
--paleta <slug-lospec|#hex,#hex|ref:caminho> | palette donnée, depuis Lospec ou dérivée d’une image |
--doctor | diagnostic uniquement : Aseprite trouvé ? MCP enregistré ? (étapes de l’item 0) |
--compilar | force le flux de compilation d’Aseprite depuis les sources (item 0.4a) |
Les flags renseignés dispensent de la question correspondante du briefing ; ce qui manque va dans la série de grill-me. Ex. : /sprite cavaleiro dark fantasy --tamanho L --anim idle,walk,attack.
0. Prérequis (plug and play ; vérifiez une fois et corrigez ce qui manque)
- Les outils MCP sont-ils visibles ? (
create_canvas,draw_pixels,export_sprite…). Si oui, allez à l’étape 1. - Sinon, trouvez Aseprite : lancez
scripts/find-aseprite.ps1(Windows) ouscripts/find-aseprite.sh. Sortie 0 = chemin affiché ; sortie 2 = non trouvé. - Aseprite trouvé → lancez
scripts/install-mcp.ps1/.sh(détecte automatiquement, télécharge la version fixe depixel-mcp, vérifie le SHA-256 et enregistre). Demandez à l’utilisateur de redémarrer le client et continuez. - Aseprite NON trouvé → demandez à l’utilisateur (une question, avec options) ; ne supposez pas :
- « Aseprite n’est pas installé. Voulez-vous que je télécharge son code depuis GitHub, que je le compile et que je le configure ? (nécessite git, CMake, Ninja et un compilateur C++ ; prend environ 10–40 min ; la licence d’Aseprite permet la compilation pour usage personnel, pas la redistribution du binaire.) »
- Options : (a) Oui, compile pour moi (recommandé) · (b) Je l’installe moi-même (Steam / aseprite.org / itch.io ; payant, soutient le développeur) · (c) Ignorer Aseprite et utiliser le plan B avec Python/Pillow (pas de fichier
.aseprite, mêmes règles de style). - En (a) : lancez
scripts/build-aseprite.ps1(Windows) ouscripts/build-aseprite.sh. Si un prérequis manque, dites lequel et proposez de l’installer avec le gestionnaire de paquets de la plateforme (winget / brew / apt) après avoir demandé. En cas d’échec, suivezreferences/build-aseprite.md. Terminé, exécutez l’étape 3.
- Ne dessinez jamais avant de clore le briefing (section 1). Réponses manquantes → demandez, ou utilisez la valeur par défaut et dites-la.
1. Briefing (utilisez grill-me si installée)
Posez les questions ci-dessous en un court tour de grill-me (toutes les questions indépendantes ensemble, chacune avec une réponse recommandée, pour « oui » accepter) ; si la compétence n’existe pas, demandez normalement. Ne posez que ce qui manque.
| Question | Valeur par défaut si sans réponse |
|---|---|
| Qu’est-ce que c’est, en une phrase + ambiance ? | – |
| Où sera-t-il utilisé (genre du jeu, UI, impression) ? Caméra : latérale / 3/4 top-down / isométrique / frontale | vue latérale |
Style (voir references/styles.md) | hd-pixel |
| Niveau de taille (tableau ci-dessous) | L |
| Animation ? quels cycles | aucun |
| Palette : donnée / choix sur Lospec / dérivée d’une référence | dériver avec la compétence color (/color) si elle existe, sinon Lospec |
2. Niveaux de taille (allez au-delà de la « taille d’icône » ; restez du pixel art)
| Niveau | Toile | Usage typique | Couleurs |
|---|---|---|---|
| S | 32×32 | objets, icônes | 8–16 |
| M | 64×64 | petits personnages, accessoires | 16–24 |
| L | 128×128 | personnages principaux, accessoires détaillés | 24–40 |
| XL | 192×192 / 256×256 | portraits de héros, boss | 32–64 |
| Scène | 320×180 ou 480×270 | décors, key art | 32–64 |
Règle : le pixel est carré et jamais mis à l’échelle avec une valeur non entière. Le détail vient de plus de pixels, pas de flou. Si l’utilisateur demande « plus de détail », montez d’un niveau avant d’ajouter du bruit.
3. Palette d’abord
- Choisissez/dérivez la palette (
references/palette-workflow.md; hex de Lospec :https://lospec.com/palette-list/<slug>.hex). create_canvasen mode couleur indexé, puisset_palette. Ordonnez la palette du sombre au clair dans chaque rampe (sort_palettepar teinte puis luminance, si besoin).- Montez des rampes, pas des couleurs isolées : 3–5 niveaux par matière (ombre, mi-teinte, lumière, éclat), avec changement de teinte (ombres → plus froides/saturées, lumières → plus chaudes). Vérifiez avec
analyze_palette_harmonies. - Passez
use_palette: truedans les appels de dessin pour que chaque pixel s’ajuste à la palette.
3b. Orientation et pose (verrouillez avant de dessiner ; voir references/orientation-and-pose.md)
Déclarez view (latérale / 3/4 / frontale / isométrique), facing (dessinez les vues latérales tournées vers la droite), direction de la lumière, quelle main tient quel accessoire et où tombent la cape/les cheveux. Règles : membres du côté de la caméra devant le torse, ceux du côté opposé derrière, tête tournée dans la direction du regard, capes attachées dans le dos et dans la couche la plus basse, un accessoire par main, devant le corps. Pour tout ce qui est animé, montez d’abord le squelette : articulations + IK à 2 os, puis les formes (rig.py dans https://github.com/LimaEdu-7x/omni-sprite/tree/main/examples/knight). Effectuez les tests de silhouette/miroir/superposition après le premier rendu.
4. Ordre de construction (couches, toujours dans cet ordre)
Créez les couches de bas en haut avec add_layer : bg, shadow-cast, base, shade, light, detail, outline, fx.
- Silhouette – remplissez toute la forme avec une couleur sombre unie dans
base. Regardez en 1× : si ce n’est pas reconnaissable comme silhouette, refaites-la. Asymétrie marquée, séparation claire tête/torse/membres, espace négatif lisible. - Couleurs unies – un ton moyen par matière avec
fill_area/draw_rectangle/draw_circle/draw_contour. - Ombre de forme – choisissez UNE direction de lumière (par défaut : supérieure gauche). Utilisez
apply_shading(style hard pour net, smooth pour HD) dansshade/light; ajoutez une lumière de contour sélective du côté opposé à la lumière principale. - Texture et détail –
draw_with_ditherseulement là où le style le permet (voir styles) ;draw_pixelsmanuel pour les yeux, coutures, boucles, reflets. Groupez les pixels ; évitez les pixels isolés (bruit) et les « crénelages » (marches irrégulières dans les lignes). - Contour –
apply_outlinepuis ajustez à la main : contour sélectif (couleur plus foncée avec changement de teinte, pas de noir pur) pour HD ; contour foncé complet pour 8/16-bit ; aucun pour « sans contour ». - Anticrénelage –
suggest_antialiasingsur les courbes/diagonales (sautez en 1-bit/NES). - FX – lueur, étincelles, ombre au sol dans
fx/shadow-cast.
Pour les formes organiques complexes, utilisez la méthode de la grille : écrivez le sprite sous forme de grille ASCII (un caractère = index de la palette), convertissez avec scripts/grid_to_pixels.py en un lot de draw_pixels (voir references/grid-method.md). Grandes zones avec les outils de forme, détails avec la grille.
5. Cycle de rendu et révision (obligatoire)
Après chaque étape importante : export_sprite PNG → copie avec scale_sprite ×4 (nearest) ou PNG agrandi → regardez l’image (Read sur le PNG). Passez la checklist de references/quality-checklist.md. Corrigez le pire défaut et rendez de nouveau. Maximum 3 cycles par étape ; ensuite signalez ce qui reste.
6. Animation (quand demandée)
Suivez references/animation.md : poses clés d’abord, puis intermédiaires, 8–12 fps (set_frame_duration 80–125 ms), un tag par cycle (create_tag : idle, walk, run, attack, hurt, death), duplicate_frame + édition, link_cel pour les parties statiques, pivot/pieds verrouillés sur la même ligne de pixels. Exportez avec export_sprite (GIF de prévisualisation) et export_spritesheet (+JSON).
7. Livraison
Sauvegardez le .aseprite (save_as), exportez PNG 1×, PNG de prévisualisation ×4 et, pour l’animation, GIF + sheet + JSON. Indiquez : taille de la toile, nom/nombre de couleurs de la palette, direction de la lumière, style et chemins des fichiers.
Pièges (vérifiés sur pixel-mcp 0.5.0)
create_canvasrenvoie du JSON{"file_path": …}; ce chemin est lesprite_pathde tous les autres outils. Pas de paramètre de nom ; utilisezsave_aspour nommer.- Utilisez des barres obliques normales dans
output_path(C:/Users/eu/saida.png). Les barres obliques inverses cassent le Lua généré (\Uest interprété comme une séquence d’échappement) et échouent avec « invalid character ’U’ ». scale_spritemodifie le sprite sur place : faitessave_asd’une copie, mettez la copie à l’échelle et exportez.- Les numéros de frame commencent à 1 (
export_spriteavec frame 0 = toutes). draw_pixelsreçoit[{x,y,color}], jusqu’à ~10 000 par appel ; c’est ce quegrid_to_pixels.pygénère.- En parlant au serveur par stdio : JSON-RPC par ligne, écrivez les octets avec
\n(CRLF échoue avec « invalid trailing data »). - Un exemple complet (squelette → parties ombrées → couches → exportations) se trouve sur https://github.com/LimaEdu-7x/omni-sprite/tree/main/examples/knight.
Références supplémentaires (chargez à la demande)
references/build-aseprite.md– compiler Aseprite depuis les sources et résoudre les échecs.references/orientation-and-pose.md– vue/côté du regard, couches proches/éloignées, rigs, ensembles de directions.references/styles.md– 12 styles avec règles exactes.references/palette-workflow.md– rampes, changement de teinte, palettes Lospec, budget de couleurs.references/animation.md– cycles, frames, temporisations, easing.references/quality-checklist.md– liste de révision approuvé/refusé.references/resources.md– 12+ sites et 20+ compétences/serveurs de la communauté pour étudier et intégrer.references/mcp-tools.md– catalogue d’outils.- Compétences compagnes optionnelles :
color//color(choix et miroir de palette), une compétence de design frontend si les sprites sont pour une UI web.
Limites honnêtes
Dessiner pixel par pixel via des appels d’outils est lent et le modèle ne « voit » pas la toile sans exporter. Préférez les formes + méthode de la grille + cycle de révision ; utilisez analyze_reference / downsample_image quand l’utilisateur envoie une image de référence.