Question de dialogue

Pour les aspects narratifs du jeu, ou pour afficher des indications, j’avais besoin d’un système de dialogue pour pouvoir faire surgir du texte à l’écran.
Pour que cela puisse être réutilisable, j’ai décidé de créer un plugin dans Godot.

Godot permet de créer des plugins pour ajouter des nouvelles fonctionnalités à l’éditeur en utilisant les mêmes outils et le même langage de script que dans les jeux. Pour savoir comment commencer, je me suis inspiré d’un plugin existant qui avait une fonction similaire : SMRT-Godot.

Toutefois, j’ai supprimé pas mal de fonctions pour simplifier. Par exemple je n’ai pas repris la possibilité de mettre une image pour représenter l’interlocuteur, ni de possibilité d’avoir un choix de réponses, ni de son quand le texte s’affiche (mais je vais peut-être le rajouter plus tard).

Par contre, j’ai ajouté la possibilité de modifier la vitesse d’affichage du texte et j’ai fait plus d’option de positionnement.

La première chose que fait le plugin, est de rajouter un type de node dans l’éditeur. Il suffit donc de l’ajouter dans la scène pour permettre l’affichage des dialogues.

Un dialogue ajouté dans la scène

Ce node prend comme paramètre le chemin d’un fichier au format json qui comprend tous les dialogues à afficher dans la scène et les paramètres de vitesse et de position liés à cet affichage.

J’ai également ajouté un paramètre Language pour permettre de rendre le jeu multilingue. En gros, le fichier à un nom au format suivant nom_de_fichier.xx.jsonxx est le code de la langue du fichier. Si une langue est spécifiée, il cherche si le fichier existe pour la langue en question et l’utilise à la place du fichier par défaut le cas échéant.

Affichages de textes à différentes vitesses et position. Le passage d’un dialogue à l’autre ou l’affichage rapide de l’entièreté du dialogue se fait avec une touche du clavier.

Je reviendrai sur l’autre fonctionnalité du plugin dans le prochain article. Le code source du projet est disponible ici.

Répondre à Anonyme Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *