Dialogue UI

How to display dialogue text, player choices, and typewriter effects in GS_Play — screen-space and world-space UI components and the bridge that connects them to the sequencer.

The Dialogue UI layer is the display side of the GS_Cinematics system. It receives events from DialogueSequencerComponent through DialogueUIBridgeComponent and routes them to the correct UI implementation — screen-space for HUD-style dialogue or world-space for speech bubbles above actors. Player choices are handled by selection components, and the TypewriterComponent reveals text character-by-character. BabbleComponent optionally plays per-character audio babble to give speakers a voice.

For architecture details, component properties, and extending the system in C++, see the Framework API reference.

DialogueUIComponent canvas in the O3DE UI Editor

 

Contents


Component Overview

ComponentSpacePurpose
DialogueUIComponentScreenDisplays the current speaker line on the HUD.
WorldDialogueUIComponentWorldDisplays speech bubbles positioned above actors in 3D space.
DialogueUISelectionComponentScreenRenders player choice options on the HUD.
WorldDialogueUISelectionComponentWorldRenders player choice options in 3D world space.
DialogueUIBridgeComponentRoutes sequencer events to UI and player input back to sequencer.
TypewriterComponentReveals text one character at a time with configurable timing.
BabbleComponentPlays per-character audio babble for the active speaker.

DialogueUIBridgeComponent

The Bridge component is the central connector between the sequencer and the UI. Place it on the same entity as DialogueSequencerComponent. It listens for OnDialogueTextBegin and OnDialogueSequenceComplete from the sequencer and forwards those events to whatever UI components are registered with it. It also receives player selection events from the selection UI and forwards them back to the sequencer.

This design keeps the sequencer and the display fully decoupled — swapping in a new UI implementation only requires registering it with the Bridge.

BusMethodWhat It Does
DialogueUIBridgeRequestBusRunDialogueSends a text line to the registered dialogue UI.
DialogueUIBridgeRequestBusRunSelectionSends selection options to the registered selection UI.
DialogueUIBridgeRequestBusRegisterDialogueUIRegisters a UI entity as the active dialogue display target.
DialogueUIBridgeRequestBusCloseDialogueTells the registered UI to close.
DialogueUIBridgeNotificationBusOnDialogueCompleteFires when the dialogue UI reports it has finished displaying.
DialogueUIBridgeNotificationBusOnSelectionCompleteFires when the player makes a selection.

Dialogue Display Components

Screen-Space Text

DialogueUIComponent handles HUD-style dialogue display. Add it to a UI canvas entity. It exposes the active TypewriterComponent so other systems can check typewriter state or force completion.

World-Space Speech Bubbles

WorldDialogueUIComponent extends DialogueUIComponent for world-space placement. It positions the dialogue panel above the speaking actor’s entity in 3D space. Use this for over-the-shoulder dialogue or conversations where the camera stays in the world rather than cutting to a UI overlay.


Selection Components

Screen-Space Choices

DialogueUISelectionComponent renders the player’s available choices as a list on the HUD. Each choice is backed by a DialogueSelectButtonComponent entity that is configured with option text and a selection index. When the player activates a button, it fires back through the Bridge to the sequencer.

World-Space Choices

WorldDialogueUISelectionComponent extends DialogueUISelectionComponent for world-space display. Choices appear positioned in 3D space rather than as a HUD overlay, useful for games with diegetic UI.


TypewriterComponent

TypewriterComponent in the O3DE Inspector

The TypewriterComponent reveals a string one character at a time. It fires OnTypeFired for each character revealed and OnTypewriterComplete when the full string is displayed. Use ForceComplete to instantly reveal the remaining text — typically wired to a player skip input — and ClearTypewriter to reset the display to empty.

BusMethod / EventWhat It Does
TypewriterRequestBusStartTypewriter(text)Begins revealing the given string character by character.
TypewriterRequestBusForceCompleteInstantly reveals all remaining characters.
TypewriterRequestBusClearTypewriterClears the display and resets state.
TypewriterNotificationBusOnTypeFiredFires each time a character is revealed.
TypewriterNotificationBusOnTypewriterCompleteFires when the full string has been revealed.

BabbleComponent

BabbleComponent pairs with TypewriterComponent to play short audio sounds for each character revealed, giving the impression of a speaker’s voice. Each actor has a SpeakerBabbleEvents record that maps them to a specific babble sound profile. The component returns the correct BabbleToneEvent for the current speaker via GetBabbleEvent, which is called by the typewriter on each OnTypeFired.

BusMethodWhat It Does
BabbleRequestBusGetBabbleEventReturns the babble audio event for the active speaker.

ScriptCanvas Usage

Forcing Typewriter Completion on Skip Input

Wire a player input action to ForceComplete so pressing a button instantly reveals the current line:

Reacting to Typewriter Events


Quick Reference

NeedBusMethod / Event
Route sequencer events to UIDialogueUIBridgeRequestBusRunDialogue / RunSelection
Register a UI entity with the bridgeDialogueUIBridgeRequestBusRegisterDialogueUI
Close the dialogue UIDialogueUIBridgeRequestBusCloseDialogue
React when dialogue UI finishesDialogueUIBridgeNotificationBusOnDialogueComplete
React when player makes a choiceDialogueUIBridgeNotificationBusOnSelectionComplete
Start typewriter revealTypewriterRequestBusStartTypewriter
Skip / instantly reveal textTypewriterRequestBusForceComplete
Clear the typewriter displayTypewriterRequestBusClearTypewriter
React to each character revealTypewriterNotificationBusOnTypeFired
React to full text revealedTypewriterNotificationBusOnTypewriterComplete
Get babble event for speakerBabbleRequestBusGetBabbleEvent

Glossary

TermMeaning
DialogueUIBridgeThe connector component that routes sequencer events to UI and player input back to the sequencer
TypewriterA text reveal component that displays characters one at a time with configurable timing
BabblePer-character audio playback that simulates a speaker’s voice during typewriter text reveal

For full definitions, see the Glossary.


See Also

For the full API, component properties, and C++ extension guide:

For related systems:


Get GS_Cinematics

GS_Cinematics — Explore this gem on the product page and add it to your project.