Dernier lot de la fonctionnalité (voir 449c36fd et a27d08c6) : les
sprites eux-mêmes, générés une fois par scripts/generate_animal_sprite_manifest.py
depuis les packs sources CraftPix (assets/characters/, non committés —
licence perso, voir .gitignore — gardés en local pour régénérer si besoin).
- static/characters/animals/manifest.json : catalogue déclaratif (14
familles, 15 variantes de couleur chacune, poses/animations
disponibles par famille) lu par screens/labels/animal_sprite_library.py
au démarrage pour construire ADMIN_SPRITE_LIBRARY.
- static/characters/animals/<famille>/<variante>/ : les frames PNG de
chaque pose, réencodées à une taille raisonnable pour le web (les
canevas sources CraftPix sont surdimensionnés, ~788×504 px).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
À la demande de l'utilisateur (validation de la refonte visuelle du
widget Personnage), deux ajustements :
- Bibliothèque de sprites Forge étendue aux 6 personnages du pack Kenney
"Toon Characters" (aventurier/aventurière, personnage homme/femme,
robot, zombie), avec TOUTES leurs poses (45 par personnage) plutôt que
3 — regroupées en 31 animations nommées par personnage (poses
numérotées type walk0..walk7 fusionnées en un seul cycle "walk", les
autres restant des poses figées à une image). ~1,2 Mo au total,
toujours un sous-ensemble curé du pack source (assets/characters/, non
versionné) — HD/Parts/Tilesheet/Vector toujours exclus.
- Import de sprites personnalisés retiré pour le moment : plus de tuile
"➕ Sprite personnalisé" dans la galerie d'ajout, plus de section
d'import dans les propriétés d'un personnage — seuls les personnages
Forge restent proposés. La résolution serveur de _personnage_data
garde son support générique de la source "custom" (aucune migration
requise si cette possibilité revient plus tard), mais plus aucune UI
ne permet de la créer.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Ajoute une nouvelle action de flow "jouer_animation_sprite" qui joue une
séquence de PNG sur un élément image (cycle en boucle type marche, ou
une fois type saut) — réutilise target_element_id (déjà whitelisté) et
data_value en JSON {frames, fps, loop}, exactement le patron déjà établi
par "jouer_son" (Phase 6) et "alea" (Phase 2) : aucune nouvelle colonne,
aucune migration de schéma.
Ajoute une propriété d'élément "orientation" (Modifier un élément) pour
retourner un personnage en miroir (gauche/droite/bascule) sans nécessiter
une 2e feuille de sprites "vue de dos" — même patron que "surbrillance"/
"désactivé".
Étend aussi la Timeline d'animation existante (kind="sprite", aux côtés
de "animate_css"/"custom") pour qu'un personnage puisse animer tout seul
dès l'affichage de l'écran (ex. idle en boucle perpétuelle), pas
seulement en réaction à un événement — réutilise la colonne générique
custom_keyframes (JSON) et le réglage iteration_count déjà là pour la
boucle, aucune migration non plus. Les deux entrées (action de flow et
clip de timeline) partagent le même moteur côté client
(runSpriteAnimation()/activeSpriteAnimations dans static/js/play/
actions.js, indexé par nœud DOM plutôt que par id d'élément pour
supporter plusieurs instances d'un même écran-modèle animées
indépendamment).
Une bibliothèque de sprites Forge (2 personnages Kenney CC0, sous-
ensemble curé idle/marche/saut copié dans static/characters/) est
proposée dans l'éditeur, mais un créateur peut tout aussi bien utiliser
ses propres sprites uploadés (même route d'upload générique que le son
de la Phase 6).
Périmètre volontairement limité à ce qui a été demandé : pas d'avatar
modulable en couches (assemblage cheveux/haut/bas par le joueur),
écarté du plan initial à la demande de l'utilisateur.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>