Scène de dialogue qui plante systématiquement

Bonjour 4ian,

Ce n’est pas souvent que je viens écrire dans la section des bugs (j’ai tendance à mettre en doute ma logique de piètre programmeur avant la stabilité de ton logiciel - et je fais bien je crois ! :laughing: ), mais là, dans la mesure où Game Develop plante à chaque fois que j’essaie de jouer cette scène, je me dis qu’il y a peut-être quelque chose à te faire remarquer…

Avant de te donner tous les détails que je peux, il faut dire que je travaille avec la dernière version de Game Develop, celle que tu viens de sortir, avec la mise à disposition en anglais de ton logiciel.

Je continue donc mes expérimentations dans le but de reproduire les principales fonctions des jeux de type RPG avec Game Develop. Après avoir testé un peu la gestion des menus et des déplacements, je travaille à présent sur les dialogues, on en avait parlé tantôt dans un sujet précédent (après viendra un gros morceau sur les combats, ouille ! ouille ! ouille !). Et je travaillais justement sur la façon de commencer et de conclure un dialogue avec un personnage en cliquant sur lui.

J’ai toujours des problèmes avec la gestion des variables, précisément parce que la plupart du temps, j’aime utiliser des événements qui ne se répètent pas (et les variables de scène sont souvent indispensables dans ce cas). Dans cette variante, j’ai voulu tenter l’usage de la condition “tant que”. En clair, mon raisonnement est que la variable “Parle” d’un objet Personnage doit être égale à 0 quand il ne parle pas, et qu’elle doit rester égale à 1 tant que (c’est-à-dire tout le temps que) le personnage dialogue (un raisonnement qui a l’air de se tenir, non ?). Voici une capture des événements que j’ai composés :

Test-Dialogue qui plante.JPG

(“Dialogue1” est un groupe qui contient les 3 objets “Replique” de la scène).

Et à chaque fois, quand je veux jouer la scène, je clique sur jouer, le débugger démarre normalement, mais lorsque je clique sur l’objet Personnage, la “Replique1” apparaît mais GD plante (le debugger s’arrête et le programme ne répond plus). J’ai observé ceci 4 fois avant de poster ce message. Il est fort probable que le code de mes événements ne soit pas satisfaisant, mais pourquoi le logiciel plante-t-il ?

Je penses avoir trouvé.
Tu as mis en sous-evenement donc pour continuer d’afficherla Replique 2 le joueur devrait continuer d’appuyer sur la souris en la pojtant sur le personnage ce qui entraine un apparition de réplique1, etc…
J’espère que tu m’as compris.

Les conditions tant que sont des conditions un peu spéciales : Elles vont changer le mode de fonctionnement de l’évènement dans lequel elles sont.
Ainsi, elles vont répéter les actions et conditions de l’évènement tant que la condition n’est pas vrai. Mais quand je dis répéter, c’est bien faire une bonne grosse boucle : Si la condition reste fausse, et bien, elles vont continuer à répéter ce qui les suit. C’est à dire que pendant ce temps, les autres évènements ne seront pas executés ( Vu que Game Develop sera entrain de répéter les actions et conditions tant que la condition n’est pas vrai ). Et si la condition n’est jamais vraie, et bien Game Develop ne s’arrêtera jamais de répeter l’évènement, et le programme donnera l’impression d’avoir planté.

Dans ton cas, si tu veux mettre la variable Parle à 1 quand il y a un objet dialogue, et bien tu n’a pas besoin de la condition Tant que. Tu met juste :

Le nombre de Dialogue1 est >= à 1 | Faire =1 à la variable Parle de l’objet Perso.

Rien de plus :wink:
Les évènements vont s’exécuter normalement, la variable va se mettre à jour suivant le nombre d’objet, tout est pour le mieux dans le meilleur des mondes. :laughing:

4ian, lorsque j’écrivais que le programme plante, c’est qu’il n’est plus possible d’arrêter la scène, de la rafraîchir ou de revenir en mode édition. Game Develop ne répond plus, et un message Windows apparaît pour signaler que le programme a cessé de fonctionner. Ce n’est donc pas seulement la scène qui donne l’impression de planter, c’est bien l’ensemble du logiciel qui s’arrête. Aucune importance, c’est sans doute normal, si la boucle infinie sature le fonctionnement du logiciel…

Néanmoins, en creusant un peu la question hier, j’ai compris ce que tu voulais dire en écrivant que “tant que” formait des conditions particulières. C’est sans doute pour cette raison que tu l’as placée parmi les conditions “avancées”. J’étudiais justement l’un des modèles d’événement fournis avec le logiciel, celui qui permet de gérer les déplacements par le clic de la souris. On y trouve une boucle “tant que” associée à une variable “déplacement”. En fait, d’après ce que je comprends, il est nécessaire d’utiliser “tant que” en association avec une variable : on crée d’abord une condition sur la valeur d’une variable qui “déclenche la boucle” puis on écrit un second événement dans lequel le résultat de la boucle modifie la valeur de la variable. Et donc, si l’on n’introduisait pas de variable pour créer une condition de retour, on ne sortirait jamais de la boucle. Il faut un couple d’événements dans lequel “tant que” est alternativement une action et une condition pour éviter de se retrouver dans le cas de figure d’une boucle infinie…Et c’est pour cette raison que mon code n’aurait pas pu fonctionner.

Il y a vraisemblablement moyen d’utiliser une boucle “tant que” pour les dialogues, mais dans le cas précis de mon exemple, ce n’est pas la manière la plus simple, puisqu’il faudait compliquer le code d’une variable, alors que ma solution n’en utilise pas (il n’y a pas besoin de variable “Parle”, même si dans certains cas, il pourrait être utile d’en ajouter une, par exemple si l’on voudrait éviter qu’un personnage se fasse attaquer par un monstre pendant qu’il dialogue, sans pouvoir se défendre…)

En tout cas, un grand merci, 4ian, ce petit topic m’a bien servi ; j’en retire plusieurs idées que je vais essayer d’exploiter.

Oui, car le logiciel est bien pris dans une boucle infinie, qui empêche le jeu de continuer.
Les Conditions/Actions dans la catégorie “Avancées” ont pour particularité comme je l’ai dit qu’elles vont bien modifier le déroulement de l’évènement concerné.

Disons qu’il faut s’assurer que la condition “Tant que” s’arrête bien un jour :slight_smile:

C’est en tout cas un des rares cas où je peux dire que le “plantage” du logiciel est admissible, vu que c’est voulu par le fonctionnement des conditions spéciales.