Aller au contenu

Getting started

De quoi ai-je besoin avant de pouvoir écrire un dialogue ?

Un Blueprint de personnage que Libretto reconnaît. Un dialogue attribue chaque réplique à un personnage, donc avant d'écrire quoi que ce soit il vous faut au moins un personnage que votre projet peut incarner. Rendre un personnage utilisable ne prend qu'une étape : implémenter l'interface LBRDialogueCharacter sur son Blueprint.

LBRDialogueCharacter affiché sous les Inherited Interfaces d'un Blueprint

  1. Choisissez ou créez le Blueprint de personnage qui jouera la scène — généralement le pawn/character que votre jeu utilise déjà.
  2. Implémentez l'interface. Soit vous dérivez le Blueprint de la base fournie ALBRSimpleDialogueCharacter (elle implémente déjà l'interface et vous donne un CharacterName), soit vous ajoutez LBRDialogueCharacter à une classe existante via Class Settings ▸ Implemented Interfaces.
  3. Donnez-lui un nom d'affichage (optionnel mais recommandé) en surchargeant LBRGetCharacterName — préférez un texte localisé, puisque le nom peut apparaître dans les sous-titres.
  4. Répétez pour chaque personnage participant. Un Blueprint par personnage est la configuration la plus simple.

Piège

La plupart des projets implémentent l'interface une seule fois, sur une classe de base partagée, puis créent un Blueprint par personnage à partir d'elle — vous ne refaites pas cela par personnage. Pour des voix sans corps dans le niveau (un appel téléphonique, un narrateur), dérivez plutôt de ULBRIntangibleCharacter : il ne nécessite que des paramètres de voix et aucun acteur dans la scène.

Voir aussi : Characters · Intangible characters

Je veux juste faire parler deux personnages — par où commencer ?

Créez un asset Dialogue, ajoutez les deux personnages, écrivez l'échange, déposez une Dialogue Instance dans votre niveau et générez à partir d'elle, puis jouez-la. Vous n'avez pas besoin de stage, de caméras ni de cinématique : sans stage, la scène se joue en mode 3C et conserve la caméra normale du jeu, en pilotant l'animation, l'audio et les sous-titres des personnages déjà présents dans votre niveau.

Création d'un asset Dialogue depuis le menu contextuel du Content Browser

  1. Créez le Dialogue. Clic droit dans le Content Browser ▸ Dialogue, nommez-le D_MyScene, et ouvrez-le dans le Dialogue Editor.
  2. Ajoutez les deux personnages participants. Utilisez les boutons jaunes de la barre d'outils du Dialogue Editor pour ajouter chaque Blueprint de personnage — ceux-ci doivent implémenter l'interface LBRDialogueCharacter (voir De quoi ai-je besoin avant de pouvoir écrire un dialogue ?). Ce sont les mêmes Blueprints dont les acteurs vivent dans votre niveau.
  3. Écrivez l'échange. Ajoutez une première réplique Text et définissez son Speaker et son Listener. Laissez ensuite l'éditeur écrire les allers-retours pour vous :
    • Shift+Enter — nouvelle réplique avec Speaker et Listener inversés (l'autre personnage répond).
    • Ctrl+Enter — nouvelle réplique avec le même Speaker et Listener (le même personnage continue de parler).
  4. Placez une Dialogue Instance. Le plus rapide : glissez l'asset D_MyScene du Content Browser directement dans le niveau — cela fait apparaître un acteur ALBRDialogueInstance dont l'Input Dialogue est déjà réglé sur ce dialogue. (Vous pouvez aussi placer un ALBRDialogueInstance vide et régler Input Dialogue à la main.) Assurez-vous que le niveau contient également les deux acteurs de personnage.
  5. Générez. Avec l'Instance sélectionnée, utilisez les boutons de son panneau Details (catégorie General), dans cet ordre : si vous voulez de l'audio parlé, pressez d'abord Generate Assets pour produire le TTS (voir Voices), puis pressez Generate Sequences. Chacun ouvre un assistant où chaque sous-dialogue est déjà coché ; pressez Run.
  6. Jouez-la. Pressez Preview pour la voir immédiatement (entrée suivante), ou appelez StartDialogueInstance depuis votre jeu pour la déclencher pour de vrai (voir Faites-la jouer dans mon jeu).

Piège

Le générateur peuple la scène à partir des acteurs déjà présents dans le niveau : pour chaque personnage il prend le premier acteur de la classe correspondante qu'il trouve (FindCharacterByClass). Avec une seule instance de chaque classe de personnage, cela fonctionne tout seul. Si plusieurs acteurs partagent une classe, le choix automatique peut ne pas être celui que vous voulez — vous devez alors les désambiguïser explicitement (voir Characters). Et rien ne se joue tout seul — une Instance déposée ne se joue pas automatiquement ; c'est vous qui la déclenchez (étape 6).

Voir aussi : Dialogue Editor · Generation overview · Runtime · Core concepts

Comment le tester sans câbler la moindre logique de jeu ?

Sélectionnez la Dialogue Instance et pressez Preview dans son panneau Details. Cela lance le Play-In-Editor avec les tags du dialogue pré-réglés et le joue immédiatement — aucune interaction, déclencheur ni logique de jeu requis.

Les boutons General d'une Dialogue Instance, dont Preview

  1. Sélectionnez la Dialogue Instance dans le niveau.
  2. Dans son panneau Details (catégorie General), pressez Preview.
  3. Un court assistant d'options s'ouvre ; pressez Run. Le PIE démarre et le dialogue se joue.

Piège

Preview joue ce qui a été généré, pas ce que vous venez de taper — régénérez avant de prévisualiser à nouveau. Si vous avez changé du texte parlé, lancez d'abord Generate Assets, puis Generate Sequences ; si vous n'avez changé que la mise en scène ou les caméras, Generate Sequences seul suffit. Par défaut, Auto End Play ferme la session PIE quand le dialogue se termine ; désactivez-le dans l'assistant si vous voulez continuer à jouer ensuite.

Voir aussi : Generation overview · Runtime

Comment le faire réellement jouer dans mon jeu ?

Appelez StartDialogueInstance sur la Dialogue Instance depuis le Blueprint ou le C++, au moment où votre jeu doit démarrer la conversation (une interaction, un volume déclencheur, une étape de quête…). Une Instance générée ne se joue jamais d'elle-même.

  1. Obtenez une référence à l'acteur Dialogue Instance (placez-le dans le niveau, ou faites-le apparaître).
  2. Appelez StartDialogueInstance quand vous voulez que le dialogue commence.
  3. Liez les callbacks de fin de dialogue si vous devez réagir à sa conclusion.

Pas d'instance dans le niveau ?

Pour des dialogues purement vocaux ou ponctuels qui ne nécessitent pas d'acteur placé (un appel téléphonique, un narrateur), générez le dialogue en générique (clic droit sur l'asset ▸ Libretto ▸ Generate Sequences…) et démarrez-le à l'exécution avec les fonctions statiques StartGenericDialogue* — elles font apparaître une instance transitoire pour vous.

Voir aussi : Runtime · Blueprint API · Priorities