Connaissances / Guides /
Pourquoi les fichiers GUI de Ren'Py semblent inutilisés — mais les supprimer casse votre jeu
Si vous avez déjà exécuté un scanner d'assets sur un projet Ren'Py, vous avez probablement vu ceci :
des dizaines de fichiers dans game/gui/ signalés comme non référencés. Ils n'apparaissent
ni dans script.rpy ni dans aucun autre fichier .rpy. Un scanner naïf
les traite comme du poids mort.
Les supprimer casse silencieusement l'interface de votre jeu. Voici pourquoi.
Comment Ren'Py charge les fichiers GUI
Les projets Ren'Py standards chargent leur interface via gui.rpy —
un fichier généré fourni avec chaque nouveau projet. Ce fichier contient des centaines
d'affectations de variables comme celles-ci :
Aucune de ces affectations n'est une instruction image. Aucune n'utilise show
ou scene. Un scanner qui recherche ces mots-clés ne trouvera jamais
gui/window.png, gui/main_menu.png, ni aucun des dizaines
d'autres chemins affectés via les variables gui.*.
Le moteur lit gui.rpy au démarrage et charge ces images directement.
Votre script n'est jamais impliqué.
.rpy ne vous dit rien sur
le fait que le moteur essaiera de le charger à l'exécution.
Qu'y a-t-il réellement dans game/gui/
Un projet Ren'Py par défaut est livré avec au moins 30 fichiers dans gui/,
couvrant chaque couche visuelle du système d'interface intégré :
- Arrière-plans des menus (
main_menu.png,game_menu.png) - Cadres de la fenêtre de dialogue (
window.png,frame.png) - États des boutons (
button/idle.png,button/hover.png,button/selected_idle.png) - Graphiques de barres de défilement et de curseurs
- États des cases à cocher et boutons radio
- Images de remplissage et de vide pour les barres
Ces éléments sont chargés de manière inconditionnelle au démarrage de votre jeu — pas lorsqu'un joueur visite un label spécifique ou déclenche une scène particulière. Ils font partie de la séquence de démarrage du moteur.
Missing image immédiatement au lancement —
avant que le joueur ait vu votre scène d'ouverture.
Comme ces images sont chargées par le propre code d'initialisation du moteur, la trace de la pile
peut même ne pas pointer vers quoi que ce soit de reconnaissable dans vos fichiers de projet.
Le même problème s'applique aux autres chemins gérés par le moteur
gui/ est l'exemple le plus visible, mais Ren'Py maintient plusieurs autres chemins
qui ne sont jamais référencés par les scripts écrits par l'utilisateur :
renpy/— Bibliothèque principale de Ren'Py et assets internescommon/— Code de la bibliothèque commune Ren'Pylauncher/— Assets spécifiques au launcherfonts/— Fichiers de police pouvant être chargés indirectement viaconfig.font_*ou des définitions de styles
Tout outil qui traite « non référencé dans un fichier .rpy » comme équivalent à « sûr à supprimer »
produira des faux positifs sur tous ces chemins.
Comment BranchPy gère cela
BranchPy classifie chaque fichier avant de vous le présenter. Les fichiers dans les chemins gérés par le moteur reçoivent une classification PROTÉGÉ et sont exclus de tout ensemble actionnable — que ces fichiers apparaissent ou non dans les scripts.
La protection est appliquée à deux couches :
- Aucune case à cocher n'est rendue pour les fichiers protégés dans l'onglet Non référencés. Il n'y a aucun élément d'interface à sélectionner.
- Le gestionnaire de suppression valide indépendamment l'ensemble de fichiers avant qu'il ne soit envoyé où que ce soit, extrayant tout chemin protégé même s'il apparaissait dans l'ensemble.
L'intention est qu'un seul bug n'importe où dans la couche de rendu ne puisse pas entraîner la suppression d'un fichier géré par le moteur.
Ce que cela signifie pour votre projet
Si vous évaluez un scanner d'assets pour un travail Ren'Py, la question clé à poser est :
« Cet outil connaît-il les chemins qui sont chargés par le moteur, pas seulement les chemins référencés par mes scripts ? »
Si la réponse est non, chaque résultat « fichier inutilisé » qu'il produit est un faux positif potentiel dans les parties de votre projet les plus critiques pour que votre jeu se lance.
Résumé
- Les fichiers
game/gui/sont chargés par le système GUI de Ren'Py au démarrage, pas par vos scripts. - Les scanners basés sur les scripts les signaleront toujours comme non référencés — c'est une limitation du scanner, pas un problème de projet.
- Les supprimer casse le jeu immédiatement, avant que le moindre code écrit par l'auteur ne s'exécute.
- La bonne approche est de classifier et protéger ces chemins avant de présenter les résultats, pas après.