Sprites et expressions : donnez un visage à votre récit interactif
Tout ce qu’il faut savoir pour afficher, positionner et faire parler vos personnages dans votre jeu narratif.

🎬 Ajouter des personnages, expressions et sprites dans ton jeu narratif avec Ren'Py
On arrive à un moment charnière. Jusqu'ici, ton jeu racontait une histoire. Maintenant, il va commencer à montrer. Ce simple changement transforme tout : le texte prend un visage, l'émotion devient palpable, le joueur s'attache.
Créer un personnage, ce n'est pas seulement dessiner un visage. Il faut le déclarer proprement, penser ses émotions, organiser ses apparitions, prévoir ses transitions. Bref, le rendre vivant.
🎨 Préparer ses sprites : ne bâcle pas l'étape zéro
Avant même d'ouvrir Ren'Py ou d'écrire une ligne de code, pose-toi ces questions :
- Le sprite est-il à la bonne résolution ?
- A-t-il un fond transparent ?
- Le nom de fichier est-il clair ?
Tu crois que c'est du détail ? Sur un projet avec quatre personnages et six expressions chacun (soit 24 images), ces détails te feront gagner – ou perdre – un temps fou.
lucy_normal.png
, lucy_happy.png
, lucy_surprised.png
. Et garde toujours ta version source (PSD, CLIP...) à part.
🗂️ Organiser ses fichiers, pour de vrai
Ton dossier game/
doit être clair comme de l'eau de roche ; tu y reviendras des centaines de fois.
mon_projet/
└── game/
├── images/
│ ├── characters/
│ │ └── lucy/
│ │ ├── lucy_normal.png
│ │ ├── lucy_happy.png
│ │ └── lucy_angry.png
│ └── backgrounds/
└── audio/
Un dossier par personnage, toutes ses variantes dedans. Ajoute une miniature si besoin.
📌 Déclarer ses images proprement
Ren'Py doit savoir que tel fichier correspond à un sprite réutilisable. On parle d'image déclarée.
init:
image lucy normal = "images/characters/lucy/lucy_normal.png"
image lucy happy = "images/characters/lucy/lucy_happy.png"
image lucy angry = "images/characters/lucy/lucy_angry.png"
Ensuite, un simple show lucy happy
suffit. Lisibilité garantie.
🧑🎤 Créer un personnage « parlant »
Déclarer le personnage permet à Ren'Py de gérer son nom, la couleur de son texte, etc.
define l = Character("Lucy", color="#e06c75", what_prefix="\"", what_suffix="\"")
Tu peux aussi avoir des sprites sans personnage (PNJ muet) ou un personnage sans sprite (voix off). Adapte selon ta scène.
🎭 Jouer avec les expressions
Une expression bien placée change tout.
show lucy happy at center
l "Je suis contente de te voir."
show lucy angry at center
l "Mais je ne t'ai pas oublié non plus."
Pour éviter l'effet « pop », ajoute une transition douce :
show lucy happy
with None
show lucy angry
with dissolve
🧪 Petits raffinements qui font la différence
show lucy normal at left
with dissolve
show lucy happy:
zoom 0.95
alpha 0.8
- Zoom léger pour simuler l'éloignement.
- Alpha réduit pour montrer qu'elle n'est plus au centre de l'action.
Ces effets guident le regard du joueur.
⚙️ Optimisation et production agile
- Utilise des placeholders pendant que l'artiste travaille.
- Compresse les PNG, convertis en WebP si possible.
- Teste sur plusieurs résolutions (1080p, tablette, 4:3).
Si vous êtes plusieurs, documentez vos conventions (nom_prenom_emotion.png
, résolution...) dans un README.md
à la racine d'images/
.
🔁 Récapitulatif simple
- Sprites cohérents : taille, transparence, nom.
- Arborescence rigoureuse dans
images/
. - Déclaration des sprites (
image
) et des personnages (Character
). - Affichage avec
show
,hide
,with dissolve
, etc. - Effets : zoom, alpha, position = relief narratif.
- Performance & clarté : compile, teste, documente.
Tu veux aller plus loin ? Le prochain cours t'emmène du côté des décors et effets visuels. Parce qu'un personnage sans décor... c'est comme un acteur sans scène.
Prépare tes arrière-plans, ça va bouger !