Skip to content

Getting started

What do I need before I can write a dialogue?

A character Blueprint that Libretto recognises. A dialogue attributes each line to a character, so before writing anything you need at least one character your project can speak as. Making a character usable takes one step: implement the LBRDialogueCharacter interface on its Blueprint.

LBRDialogueCharacter shown under a Blueprint's Inherited Interfaces

  1. Pick or create the character Blueprint that will act the scene — usually the pawn/character your game already uses.
  2. Implement the interface. Either derive the Blueprint from the shipped ALBRSimpleDialogueCharacter base (it already implements the interface and gives you a CharacterName), or add LBRDialogueCharacter to an existing class via Class Settings ▸ Implemented Interfaces.
  3. Give it a display name (optional but recommended) by overriding LBRGetCharacterName — prefer localized text, since the name can show up in subtitles.
  4. Repeat for every character taking part. One Blueprint per character is the simplest setup.

Gotcha

Most projects implement the interface once, on a shared base class, then make one Blueprint per character from it — you do not re-do this per character. For voices with no body in the level (a phone call, a narrator), derive from ULBRIntangibleCharacter instead: it only needs voice parameters and requires no actor in the scene.

See also: Characters · Intangible characters

I just want two characters to talk — where do I start?

Create a Dialogue asset, add the two characters, write the exchange, drop a Dialogue Instance in your level and generate from it, then play it. You do not need a stage, cameras or a cinematic: with no stage the scene plays in 3C mode and keeps the game's normal camera, driving the animation, audio and subtitles of the characters already in your level.

Creating a Dialogue asset from the Content Browser context menu

  1. Create the Dialogue. Right-click in the Content Browser ▸ Dialogue, name it D_MyScene, and open it in the Dialogue Editor.
  2. Add the two characters taking part. Use the yellow toolbar buttons in the Dialogue Editor to add each character Blueprint — these must implement the LBRDialogueCharacter interface (see What do I need before I can write a dialogue?). They are the same Blueprints whose actors live in your level.
  3. Write the exchange. Add a first Text line and set its Speaker and Listener. Then let the editor write the back-and-forth for you:
    • Shift+Enter — new line with Speaker and Listener switched (the other character answers).
    • Ctrl+Enter — new line with the same Speaker and Listener (the same character keeps talking).
  4. Place a Dialogue Instance. The quickest way: drag the D_MyScene asset from the Content Browser straight into the level — this spawns an ALBRDialogueInstance actor with its Input Dialogue already set to that dialogue. (You can also place an empty ALBRDialogueInstance and set Input Dialogue by hand.) Make sure the level also contains the two character actors.
  5. Generate. With the Instance selected, use the buttons in its Details panel (General category), in this order: if you want spoken audio, press Generate Assets first to produce the TTS (see Voices), then press Generate Sequences. Each opens a wizard with every subdialogue already checked; press Run.
  6. Play it. Press Preview to see it immediately (next entry), or call StartDialogueInstance from your game to trigger it for real (see Make it play in my game).

Gotcha

The generator staffs the scene from the actors already in the level: for each character it takes the first actor of the matching class it finds (FindCharacterByClass). With a single instance of each character class this just works. If several actors share a class, the automatic pick may not be the one you want — you then have to disambiguate them explicitly (see Characters). And nothing plays on its own — a dropped Instance does not auto-play; you trigger it (step 6).

See also: Dialogue Editor · Generation overview · Runtime · Core concepts

How do I test it without wiring up any gameplay?

Select the Dialogue Instance and press Preview in its Details panel. It launches Play-In-Editor with the dialogue's tags pre-set and plays it straight away — no interaction, trigger or game logic needed.

The General buttons on a Dialogue Instance, with Preview among them

  1. Select the Dialogue Instance in the level.
  2. In its Details panel (General category), press Preview.
  3. A short options wizard opens; press Run. PIE starts and the dialogue plays.

Gotcha

Preview plays what has been generated, not what you just typed — regenerate before previewing again. If you changed spoken text, run Generate Assets first, then Generate Sequences; if you only changed staging or cameras, Generate Sequences alone is enough. By default Auto End Play closes the PIE session when the dialogue finishes; turn it off in the wizard if you want to keep playing afterwards.

See also: Generation overview · Runtime

How do I actually make it play in my game?

Call StartDialogueInstance on the Dialogue Instance from Blueprint or C++, at the moment your game should start the conversation (an interaction, a trigger volume, a quest step…). A generated Instance never plays by itself.

  1. Get a reference to the Dialogue Instance actor (place it in the level, or spawn it).
  2. Call StartDialogueInstance when you want the dialogue to begin.
  3. Bind the end-of-dialogue callbacks if you need to react when it finishes.

No instance in the level?

For voice-only or ad-hoc dialogues that do not need a placed actor (a phone call, a narrator), generate the dialogue as generic (right-click the asset ▸ Libretto ▸ Generate Sequences…) and start it at runtime with the static StartGenericDialogue* helpers — they spawn a transient instance for you.

See also: Runtime · Blueprint API · Priorities