❤ 4Nemau Mack SquonK prettyheartbreak Résoudre le bug du Game Over instantané
Valable pour toutes/certaines versions de RPG Maker 2000 et 2003.
Dans le making, il y a les bugs du logiciel, les erreurs du maker, et celles qui cumulent les deux. Ce tutoriel aborde ce dernier cas, où le maker est semi responsable.
Mais d'abord, de quoi parle t-on ?
Le bug du Game Over instantané n'est pas nouveau. Vous faites un jeu, et au cours de ce jeu, vous avez un tutoriel de combat, ou un combat que vous devez perdre, mais sans enclencher de Game Over.
Habituellement dans ce genre de cas, vous allez faire votre événement pour que la défaite déclenche autre chose que le Game Over.
Vous testez, et tout fonctionne bien. Vous progressez dans le développement de votre jeu, voire vous le finissez, et soit ce combat est optionnel et vous l'oubliez complètement (normal de ne pas le retester, il fonctionnait !), soit il est non évitable, et là c'est le drame : Game Over.
Si vous êtes comme moi, vous allez chercher à modifier la condition de défaite en ajoutant un retirer statut mort devant le soin, voire en ajoutant un personnage en bonne santé dans l'équipe. Après cela, vous allez vérifier qu'un événement en processus parallèle n'enclenche pas un Game Over à cause d'un "si le perso a 0 PV, Game Over".
Et rien de tout cela ne trouvera grâce aux yeux du logiciel. Parce que l'erreur ne se trouve pas là.
Mais alors, on fait quoi ?
L'erreur se trouve bien dans un événement parallèle (qui se déclenche avant l'événement en question). Mais comment le trouver ?
Le plus simple, après avoir testé sur une map sans événement parallèle, est de noter tous vos événements communs en processus parallèles, tous les désactiver (condition = None) et les remettre en événement parallèle un par un (ou deux par deux, tant que vous suivez), et de tester le jeu. Souvent, l'erreur est liée à une condition de type :
1
2
3
4
5
| Condition si Actor x est équippé/sous le statut de quelque chose
Faire quelque chose
Sinon
Retirer quelque chose
Fin |
Le problème, c'est le quelque chose qui est retiré, car il est réalisé lorsque toute l'équipe est morte, ce qui enclenche le Game Over. Et ce petit détail provoque l'écran de fin.
Pour le corriger, il suffit d'ajouter une condition. Par exemple, je veux vérifier si mon perso a un objet équipé qui ajoute des sorts, et les retirer quand l'objet est enlevé.
1
2
3
4
5
6
7
8
9
10
11
| Condition si Actor x est équipé d'un objet spécifique
Condition si Interrupteur x est désactivé
Activer Interrupteur x
Ajouter sort x
Fin
Sinon
Condition si Interrupteur X est activé
Désactiver Interrupteur x
Retirer sort x
Fin
Fin |
En ajoutant cette condition dans votre Sinon, vous allez éviter la suppression/l'ajout de quelque chose lorsque l'équipe est KO, et ainsi le Game Over instantané en cas de défaite. Cet exemple peut être repris pour d'autres exemples que l'équipement.
En dehors de cet usage très concret, ça montre :
- l'importance d'être précis dans sa programmation, dans ce cas dans la vérification des possibles
- qu'une erreur ne vient pas forcément de l'idée initiale qu'on s'en fait
- qu'il faut toujours tester (ou faire tester) les portions de jeux qui nous semblent acquises à différents stades de progression dans la conception.
Merci à Cherry pour avoir trouvé la piste pour trouver le bug, et à SquonK pour avoir précisé la cause du bug (ajouter ou retirer un équipement/statut/une stat fera apparaître le Game Over à partir du moment où l'équipe est à 0 PV).
Ecrit le 8 septembre 2022.
Edité le 14 septembre 2022.
|