Aller au contenu

Écrire des dialogues

Le joueur doit choisir ses réponses — comment créer un embranchement ?

Ajoutez une ligne Choice, puis placez des lignes Reply en dessous. Chaque Reply est une option que le joueur peut choisir ; ce que vous écrivez sous un Reply est l'embranchement joué lorsqu'il est retenu. Quand l'embranchement se termine, la lecture reprend à la ligne immédiatement après le Choice.

Une ligne Choice avec des options Reply, parmi d'autres types de lignes

  1. Ajoutez une ligne Choice là où le joueur doit décider. Réglez son Time (secondes accordées pour choisir ; 0 = pas de limite de temps).
  2. Ajoutez une ligne Reply en dessous pour chaque option, et écrivez son embranchement (lignes Text, GoTo, autres Choices…) indenté sous elle. Le texte du Reply sert à afficher l'option au joueur ; il n'est pas voisé. Pour donner une voix à un choix du joueur, placez une ligne Text prononcée par le personnage joueur à l'intérieur du Choice ou après lui.
  3. Pour envoyer un embranchement ailleurs qu'à la ligne suivant le Choice, terminez-le par un GoTo (vers un ID/Label de ligne, ou Next Subdialogue).
  4. Affinez chaque Reply dans le panneau de détails : Do Once (une fois choisi, il ne peut plus l'être à nouveau), Default Reply (choisi si le minuteur expire), Display Condition (le masque entièrement quand elle est fausse), Availability Condition (l'affiche grisé et non sélectionnable quand elle est fausse).

Piège

Après la fin d'un bloc Reply, la ligne jouée ensuite est celle immédiatement après le Choice, au même niveau d'indentation — prévoyez une ligne où les embranchements peuvent reconverger, ou utilisez GoTo pour rediriger ailleurs.

Voir aussi : Dialogue Editor — types de lignes · Choice widgets · Conditions

Comment découper une longue conversation, ou la changer selon le contexte ?

Découpez-la en sous-dialogues. Un sous-dialogue est un embranchement autonome du même Dialogue que vous pouvez demander par nom et conditionner par une condition — la façon naturelle de tenir des conversations différentes entre les mêmes personnages (avant/après une révélation, en tête-à-tête ou avec l'arrivée d'un troisième personnage) ou simplement de garder un long script lisible.

La liste des sous-dialogues avec plusieurs sous-dialogues nommés

  1. Ajoutez un sous-dialogue et donnez-lui un Name unique.
  2. Réglez éventuellement ses Selectors (tags pour le choisir ou le regrouper) et sa Condition (s'il peut jouer ou non).
  3. Demandez un sous-dialogue précis par son nom à l'exécution ; à l'entrée, les candidats sont évalués dans l'ordre de la liste et le premier dont le nom correspond et dont la condition passe est joué.
  4. Pour enchaîner les sous-dialogues, terminez l'un par un GoTo ▸ Next Subdialogue (ou un GoTo vers une ligne précise).

Piège

La fin d'un sous-dialogue est la fin du Dialogue entier, à moins que vous n'en sortiez par un GoTo explicite — et l'ordre des sous-dialogues dans la liste compte, car Next Subdialogue s'en sert. La liste des personnages est partagée par tout le Dialogue, mais chaque sous-dialogue peut redéfinir sa propre mise en scène (voir Stages).

Voir aussi : Dialogue Editor — sous-dialogues · Conditions · Priorities

Comment faire apparaître une ligne seulement dans certaines situations ?

Attachez-lui une condition. Les conditions sont de petits Blueprints qui lisent l'état dynamique du jeu et renvoient vrai/faux ; vous pouvez en placer une sur un Reply, sur un embranchement If/ElseIf/Else, ou sur un sous-dialogue entier.

Les emplacements Display et Availability Condition d'un Reply dans le panneau de détails

  1. Pour une option joueur, utilisez la Display Condition du Reply (masquée quand elle est fausse) ou l'Availability Condition (affichée mais grisée quand elle est fausse).
  2. Pour brancher sans intervention du joueur, utilisez un bloc If / ElseIf / Else et réglez la Success Condition de l'embranchement — le premier embranchement dont la condition est vraie est emprunté.
  3. Pour activer/désactiver un sous-dialogue entier, réglez sa Condition.

Piège

Pour tester « ce dialogue ou ce sous-dialogue a-t-il déjà été joué », utilisez la condition dédiée ULBRDialogueDoneCondition plutôt que d'écrire à la main une vérification de chemin GPVar — Libretto enregistre déjà les compteurs de lecture sur le tag dynamique de chaque dialogue.

Voir aussi : Conditions · GPVars · Dialogue Editor — conditions

Comment exécuter de la logique de jeu quand une ligne se joue ?

Attachez une action à la ligne. Une action est un Blueprint (ULBRAction) dont la méthode DoAction s'exécute lorsque cette ligne se joue en jeu — un point d'accroche polyvalent pour donner un objet, déclencher un événement de gameplay, afficher une UI, etc.

Une ligne portant une Action et son Blueprint

  1. Sélectionnez la ligne et ajoutez une Action dans son panneau de détails.
  2. Choisissez ou créez une sous-classe de ULBRAction.
  3. Implémentez DoAction (ce qui se passe à la lecture) et, éventuellement, GetLabel (un libellé lisible affiché sur la ligne dans l'éditeur).

Piège

Les actions sont disponibles sur tous les types de lignes sauf Cinematic et Comment. Elles s'exécutent à la lecture, pas à la génération — ne comptez pas dessus pour changer ce qui est généré.

Voir aussi : Dialogue Editor — actions · Runtime

Comment donner des lignes à une voix sans corps — un appel téléphonique, un narrateur ?

Utilisez un personnage intangible. Dérivez-le de ULBRIntangibleCharacter et ajoutez-le au dialogue comme n'importe quel autre personnage. Il n'a ni mesh ni acteur dans le niveau, donc il n'y a rien à placer ni à faire apparaître — il ne fait que parler.

Les valeurs de classe par défaut d'un Blueprint de personnage intangible

  1. Créez un Blueprint à partir de ULBRIntangibleCharacter (aucun C++ requis).
  2. Réglez son CharacterName (localisé).
  3. Ajoutez-le dans la liste des personnages de l'éditeur de dialogue et écrivez ses lignes Text.

Piège

Comme il n'a pas de corps, les pistes d'animation, de lip-sync et de caméra sont ignorées pour lui — seuls son audio et ses sous-titres sont produits. (La propriété CharacterGender ne sert qu'au repli du choix de voix TTS et peut généralement être ignorée.)

Voir aussi : Personnages intangibles · Voices

Comment utiliser un dialogue pour un document ou du texte à l'écran plutôt qu'une scène jouée ?

Cochez Staging.Interface2D sur ses sous-dialogues et lisez-le depuis votre UI avec les helpers de lecture — le sujet a désormais sa propre page. Un document, un fil de téléphone, une popup, une messagerie vocale ou un écran de verrouillage y sont tous traités, avec un exemple fonctionnel sur la map tutoriel : voir Je veux afficher un dialogue dans une UI au lieu de le jouer et, pour des pages, Je veux un document ou une lettre de plusieurs pages.

Voir aussi : Lire des dialogues dans des interfaces 2D

Comment contrôler exactement ce que le sous-titre affiche ?

Les sous-titres sont automatiques — chaque ligne jouée devient du texte à l'écran (Locuteur : ligne) sans aucune configuration. Pour changer ce qui s'affiche, vous ajustez le widget livré, en substituez un vôtre, utilisez des flags par ligne, ou routez les sous-titres vers votre HUD existant.

Flags de sous-titre par ligne (NoSubtitle / Subtitle3D)

  1. Faites le vôtre à partir du widget livré. Plutôt que de modifier ULBRSimpleSubtitleWidget dans le plugin (ce qui entrerait en conflit avec les futures mises à jour), dupliquez/sous-classez-le dans votre projet et ajustez votre copie — basculez bShowSpeakerName, réglez FontSize, surchargez l'apparence — puis faites pointer le réglage ci-dessous dessus.
  2. Substituez le widget dans Project Settings ▸ Libretto ▸ UI ▸ Widget Subtitle Class — n'importe quelle classe qui implémente l'interface LBRDialogueSubtitle.
  3. Surchargez par ligne avec des flags : NoSubtitle (la ligne se joue sans sous-titre) et Subtitle3D (rendu dans l'espace du monde au-dessus de la tête du locuteur, à la manière d'un bark).
  4. Utilisez votre propre HUD en liant les délégués du gestionnaire OnSubtitleDisplayed / OnSubtitleHidden sur ULBRDialogueManager au lieu de laisser Libretto faire apparaître un widget.

Piège

Lier OnSubtitleDisplayed a la priorité sur le widget intégré — une fois lié, le gestionnaire cesse de faire apparaître WidgetSubtitleClass, donc routez les sous-titres vous-même. Subtitle3D a besoin que l'acteur du locuteur soit présent dans le monde ; s'il ne peut pas être résolu (p. ex. un bark d'un personnage absent), rien n'est affiché et aucune erreur n'est levée.

Voir aussi : Sous-titres · Choice widgets

L'éditeur signale mes mots comme mal orthographiés — comment corriger, ou lui apprendre de nouveaux mots ?

Le Dialogue Editor utilise le correcteur orthographique de Windows ; une ligne fautive passe en rouge et propose des suggestions. Pour les mots légitimes qu'il ne connaît pas — noms propres, acronymes, termes inventés — vous les ajoutez une fois à un dictionnaire de projet et il cesse de les signaler partout.

Une ligne mal orthographiée avec des suggestions

  1. Lisez le signalement. Quand une ligne contient un mot inconnu, elle passe en rouge ; le correcteur propose les orthographes les plus proches de ses dictionnaires pour corriger le texte sur place.
  2. Apprenez-lui un mot. Pour un mot correct mais inconnu (un nom de personnage, un acronyme…), ajoutez-le au dictionnaire de projet dans Resources/Libretto/personalDictionary.dic — une entrée par ligne. Il est alors accepté dans tous les dialogues du projet.
  3. Vérifiez tout un dialogue d'un coup via Dialogue Tools ▸ Launch CheckSpeller, plutôt que d'attendre de visiter chaque ligne.
  4. Réglez son déclenchement dans Editor Preferences ▸ Dialogue Editor : bLaunchCheckSpellerAtModification (vérifie une ligne à la frappe, activé par défaut) et bLaunchCheckSpellerAtStart (balaye tout le dialogue à l'ouverture, désactivé par défaut).

Piège

Le correcteur valide contre la langue Windows correspondant à la culture d'édition (en → en-US, fr → fr-FR) ; aucun dictionnaire n'est livré avec le plugin. Pour une culture absente de Windows, rien n'est signalé, et l'Output Log l'indique une fois (No Windows spell checker for language…). Pour prendre en charge une autre langue, ajoutez-la dans Paramètres Windows ▸ Heure et langue ▸ Langue et région, puis redémarrez l'éditeur. Appuyez-vous sur personalDictionary.dic pour tout ce qui est spécifique au projet plutôt que de tenter de faire taire des lignes individuelles.

Voir aussi : Dialogue Editor — Spell checking · Settings — Spell checker