[I7] Un petit système de conversation

Bonjour,

J’ai suivi attentivement les derniers échanges techniques sur le blog et, comme j’avais besoin d’un système de conversation pour mon jeu « sérieux » et que ce que je trouvais était toujours trop vieux ou trop complexe, cela m’a donné l’idée de faire une espèce de synthèse avec un petit « jeu » de rien du tout pour la tester.
C’est un petit truc tout bête mais qui peut être bien utile et qui permet déjà de faire un certain nombre de choses. Vous verrez ce que ça donne en regardant le jeu. Si vous trouvez la chose intéressante je peux la rendre publique, peut-être même comme une mini-extension, mais je ne sais pas si ça vaut le coup.
En tous cas, merci à tous ceux dont les posts m’ont donné des idées !

J’ai testé vite fait, et je ne suis pas fan. Le système n’est pas très intuitif pour le joueur, et assez alambiqué pour le codeur.

Côté joueur
Il y a des sauts à la ligne en trop, et on ne peut pas s’échapper du double prompt si finalement on ne veut plus faire de choix. D’ailleurs, il n’y a pas de message si on tape n’importe quoi. De plus, quand quelqu’un a fini de parler, il y a marqué qu’il n’a plus rien à dire, alors qu’on peut lui demander autre chose, mais le joueur peut croire l’inverse.

Aussi, ce n’est pas intuitif qu’il faille continuer de parler pour faire continuer le dialogue.

Côté codeur
Il y a trop de tableaux, avec une montagne de nombres. La table of strings et à la table of conversations, risquent de devenir géantes s’il y a beaucoup de PNJ. Je pense qu’il serait mieux de faire un tableau par PNJ, et le lui donner en propriété :

A person has a table name called conversation. The conversation of le pêcheur is the table of fisherman conversation.

Aussi (mais c’est un détail), pour la colonne 4 de la table of conversation, il vaut mieux utiliser des booléens (true/false) que des nombres.

Ceci étant, si ces problèmes sont corrigés, ça peut devenir un système viable. Pour l’instant, le plus gros défaut selon moi est que ça semble difficile à gérer pour le codeur.
Tu es sûr qu’un tel système n’existe pas ? Un système qui ressemble un peu au tien se trouve dans Comédie.

J’espère que je ne suis pas trop décourageant. :blush:

(Pour ce qui est des accents, c’est une très mauvaise idée de forcer le joueur à les taper. Je comprends qu’on puisse souhaiter les garder, mais ce n’est pas gentil pour les personnes qui ne peuvent pas facilement les taper, comme les anglophones. Aussi, ça devrait être possible de taper « parler à/au/aux » en plus de « parler avec ». Une implantation minimale de l’action « parler » est disponible dans un exemple de la doc de l’extension française.)

Moi aussi, surtout pour les accents sur les majuscules :

:wink:

Sinon je trouve que ça va bien, mais comme Natrium je trouve un peu déstabilisant de devoir retaper « parler avec untel » (ou continuer) pour revenir sur le thème de la conversation initié plus haut, pour ensuite voir qu’il n’a plus rien à dire (peut-être rajouter : « sur ce sujet » pour que ça soit plus clair).
Ça peut valoir si les joueurs suivent scrupuleusement la règle (mais qui lit les règles ?), mais pour les autres ils ne vont pas comprendre tout de suite.
Le mieux serait de cycler dans le mode de conversation, avec en dernier une option pour arrêter la conversation / s’en aller / dire au revoir etc.

Le plus simple pour éviter de tout refaire serait de rajouter par exemple :

De plus j’ai l’impression qu’il y a un petit bogue si on tape à la suite continuer (je sais je chipote) :

Du coup cela oblige le joueur à avoir une certaine rigueur et cohérence pour taper ses questions (mais ils n’en ont jamais, il faut des gardes-fous).

Merci pour vos commentaires à tous les deux. Comme j’ai mis ce machin dans mon jeu « sérieux », cela m’a donné des idées qui recoupent parfois les vôtres. Voilà où j’en suis :

1/ J’ai corrigé ( enfin, je crois ) le très sérieux bug signalé par Otto, qui peut faire passer sans avertissement à la conversation suivante. Cette saleté m’a pris deux jours ! La commande « g » est à la fois la meilleure et la pire des choses.
2/ Jusqu’à hier, quand un numéro d’option était invalide je me bornais à le rejeter. Maintenant je préviens.
3/ Je rajoute automatiquement à chaque menu une dernière option « aucun » qui permet au joueur au joueur de renoncer à la conversation avant de l’engager.
4/ La commande « fin conversation » permet au joueur de sortir de la conversation avant sa fin normale. Si vous avez une idée de raccourci ?
5/ Un PNJ peut lancer une conversation et/ou l’interrompre en cours de route.
6/ J’ai prévu dès l’origine de rendre possibles les branchements en cours de conversation ( sauter à volonté une ou plusieurs étapes en avant ou en arrière ). C’est un des avantages de mon système, il ne me manque plus que le prétexte pour le faire, et comme je suis flemmard… Mais je pense que cela va bientôt venir.
7/ « continuer » est synonyme de « g ».
8/ @Natrium : J’avais pensé à ton idée de faire un jeu de tables par PNJ. Mais ( c’est peut-être un vieux tropisme dû à mes débuts sur un Gamma 10 de 4096 octets ou à mon ancienne activité professionnelle sur Flight Simulator ) je me suis dit qu’il serait bien de pouvoir partager de longues chaînes de caractères entre plusieurs PNJs…
9/@vous deux : Bien d’accord avec vos remarques sur les accents. Mais pour l’instant j’aime bien penser à ma licence artistique. Mais si je change quelque chose cela ira dans le sens de l’assouplissement.
10/ Tant qu’on est dans une conversation l’affichage du texte est fait en brun sombre pour rappeler au joueur qu’on n’est pas en mode normal. Je sais, il y a le problème des daltoniens ! Avez-vous une couleur à suggérer ? J’utilise déjà le magenta pour les notes historiques.
11/ @Natrium : « Aussi, ça devrait être possible de taper « parler à/au/aux » en plus de « parler avec » ». Tu as raison, je vais le faire.
12/ @Otto : « Je trouve un peu déstabilisant de devoir retaper « parler avec untel » (ou continuer) pour revenir sur le thème de la conversation initié plus haut, pour ensuite voir qu’il n’a plus rien à dire (peut-être rajouter : « sur ce sujet » pour que ça soit plus clair) ». Pourrais-tu préciser un peu ? Merci.
13/ @Natrium: Je ne connais pas « Comédie ». Mes seules bases sont ce que j’ai lu dans ce forum.
14/ @vous deux : Comment peut-on passer d’une étape de la conversation à l’autre sans taper une commande quelconque ? « g » m’a paru le plus simple. Et je crains qu’un déroulement automatisé soit toujours trop rapide ou trop lent…
15 / J’ai déjà ajouté « interroger » et « questionner » comme synonymes de « parler avec ».

Qu’est-ce que je voulais vous dire d’autre, déjà ? Chais plus…

Thierry

De toute façon, si ça correspond à ce que tu veux pour ton jeu, c’est correct, et tes futurs testeurs verront bien si ça fonctionne (car un exemple montre toujours moins bien qu’un vrai jeu). Et même si ce n’est pas pratique à utiliser pour quelqu’un qui ne connaît pas ton système, c’est OK si toi tu t’y retrouves, j’imagine.

Pour ce qui est d’un tableau qui contient toutes les répliques pour éviter les doublons, je dirai que c’est un peu inutile. Au pire des cas, tu peux utiliser une substitution de texte pour les textes qui se répètent. Mais encore une fois, si tu aimes bien comme ça, c’est OK (encore qu’il me semble que des tableaux géants ralentissent le jeu quand on essaie d’y accéder).

Pour ce qui est des couleurs, je pense que le mieux et d’avoir une commande qui permet de les changer, ou de les enlever pour les remplacer par de l’italique, du gras ou autre.

Je voulais dire que dans la majorité des jeux, quand on lit « Untel n’a manifestement plus rien à dire », cela veut dire qu’on peut aller voir ailleurs et quitter la conversation, on ne tirera plus rien. Avec le système actuel, ça dit cela, mais cela sous-entend « … sur le sujet », ainsi il faut continuer à parler pour avoir les autres sujets. Je trouve que ça induit un peu le joueur en erreur car il va sans doute partir ailleurs alors qu’il y avait peut-être d’autres sujets à explorer. Peut-être (sans doute) que la plupart pensera à ré-interroger le personnage, mais voilà, je trouve ça un peu bizarre mais c’est peut-être juste moi.