# Workflow de création des sprites du personnage ## Objectif Transformer une photo du neveu en sprites animés utilisables dans le jeu. ## Étapes de création ### 1. Préparation de l'image source 1. **Choisir une photo** : - Fond uni si possible (facilite le détourage) - Bonne résolution - Pose neutre (debout, de profil ou face) 2. **Détourage** : - Utiliser **GIMP** (gratuit) ou Photoshop - Outil de sélection intelligente / baguette magique - Supprimer le fond → fond transparent - Exporter en PNG ### 2. Création des frames d'animation #### Option A : Simplification graphique manuelle 1. Réduire la taille à environ **64x64** ou **128x128** pixels 2. Simplifier les détails (style pixel art ou cartoon) 3. Créer 3 animations : - **Idle** : 2-4 frames (immobile, léger mouvement) - **Walk** : 4-8 frames (cycle de marche) - **Jump** : 2-4 frames (montée, pic, descente) Outils recommandés : - **Piskel** (https://www.piskelapp.com/) - Éditeur pixel art en ligne - **Aseprite** (payant mais excellent) - **GIMP** avec grille pixel #### Option B : Utilisation d'IA générative 1. Utiliser la photo détourée comme référence 2. Générer des sprites avec : - **DALL-E** / **Midjourney** : "pixel art character sprite sheet, side view, walking animation" - **Stable Diffusion** avec ControlNet pour maintenir la ressemblance ### 3. Création de la spritesheet Une spritesheet est une image unique contenant toutes les frames. **Format recommandé** : ``` [Idle1][Idle2][Idle3][Idle4][Walk1][Walk2][Walk3][Walk4][Jump1][Jump2][Jump3] ``` **Dimensions** : - Taille d'une frame : 64x64 ou 128x128 - Spritesheet totale : (frameWidth × nombreDeFrames) × frameHeight - Exemple : 11 frames de 64x64 = 704x64 pixels **Outils pour créer la spritesheet** : - **Piskel** : exporte automatiquement en spritesheet - **TexturePacker** : assemble plusieurs images en spritesheet - **GIMP** : assembler manuellement avec des calques ### 4. Exportation - Format : **PNG** avec transparence - Nom suggéré : `player_spritesheet.png` - Placer dans : `public/assets/sprites/` ### 5. Configuration dans Phaser Fichier `src/scenes/BootScene.ts` : ```typescript preload(): void { this.load.spritesheet('player', 'assets/sprites/player_spritesheet.png', { frameWidth: 64, frameHeight: 64, }); } ``` Fichier `src/entities/Player.ts` (dans le constructor ou create) : ```typescript // Créer les animations this.scene.anims.create({ key: 'idle', frames: this.scene.anims.generateFrameNumbers('player', { start: 0, end: 3 }), frameRate: 8, repeat: -1, }); this.scene.anims.create({ key: 'walk', frames: this.scene.anims.generateFrameNumbers('player', { start: 4, end: 7 }), frameRate: 10, repeat: -1, }); this.scene.anims.create({ key: 'jump', frames: this.scene.anims.generateFrameNumbers('player', { start: 8, end: 10 }), frameRate: 10, repeat: 0, }); ``` ### 6. Jouer les animations Dans `src/entities/Player.ts`, méthode `updateAnimation()` : ```typescript if (this.isJumping) { this.play('jump', true); } else if (Math.abs(this.velocityX) > 10) { this.play('walk', true); } else { this.play('idle', true); } ``` ## Alternative rapide : Sprites temporaires Si vous voulez tester rapidement sans créer de sprites : 1. Utiliser des formes géométriques (déjà fait dans le code) 2. Utiliser des sprites gratuits en ligne : - **OpenGameArt.org** - **Itch.io** (section assets) - **Kenney.nl** (assets gratuits haute qualité) ## Ressources utiles - **Piskel** : https://www.piskelapp.com/ - **GIMP** : https://www.gimp.org/ - **Remove.bg** : https://www.remove.bg/ (détourage automatique) - **OpenGameArt** : https://opengameart.org/ - **Kenney Assets** : https://kenney.nl/assets ## Exemple de dimensions Pour un jeu mobile : - **64x64** : Style rétro/pixel art, performances optimales - **128x128** : Plus de détails, toujours performant - **256x256** : Haute résolution, peut impacter les perfs Recommandation : **64x64** ou **128x128** pour ce projet.