When Consequence content is submitted to your game project, Consequence Client writes the latest project data to ConsequenceExport.json in Perforce. The Consequence Unreal Engine Plugin then imports that data into your project's configured Consequence Database Data Asset.
Events are stored as FConsequenceEvent data within that database, with their dialogue represented as FConsequenceLine entries. Rules, Characters, Trigger Data, Conditions, Payloads and other data required by the Consequence runtime are stored there as well. Consequence therefore does not create an individual Unreal asset for every Event or line of dialogue.
UI strings are synchronized separately with Unreal String Tables, while Facts are synchronized as Unreal Gameplay Tags.
The location of the Consequence Database Data Asset is configurable in Consequence Runtime Settings rather than being tied to a fixed Content Browser path.
See Consequence Data in Unreal Engine for more information.
Yes. Every dialogue line is assigned a numeric UID when it is created. UIDs are generated project-wide and Consequence enforces their uniqueness across Events.
The UID is submitted to Unreal Engine with the line and is used throughout the pipeline to identify that line, including when associating dialogue with audio and facial animation assets and when storing line playback state. You can also view and search by UID inside Consequence.
No. Consequence assigns every Event a numeric Event ID (EID) in addition to its human-readable name. Unreal references to Consequence Events store that ID, so an Event can be renamed without invalidating existing Event references in your game.
Event names are still exposed in the Unreal Editor so developers can select and understand references by name, while the underlying EID provides the stable reference.
Each Consequence Character is represented in Unreal by a Character Gameplay Tag under the Consequence.Characters hierarchy. Actors that can speak Consequence dialogue use the Consequence Speaker Component to identify which Character or Characters they can represent.
When dialogue is triggered, Consequence uses those Character tags to find the appropriate registered actors for the speakers required by the selected Event.
See Set up Speaking Characters in Engine.
Facts are represented as Unreal Gameplay Tags. They provide game-state information that Consequence can use when determining which dialogue is valid to play.
Facts can be tested by dialogue Conditions as true or false, and numeric values associated with Facts can also be tested against ranges. Dialogue Payloads can set, unset, or modify Facts and their values in response to narrative events, as well as triggering custom logic.
See Facts and Game State for more information.
Yes. Consequence Event triggers can include additional temporary Facts and Fact values that are considered while selecting dialogue without modifying the project's persistent saved world state.
This is useful for short-lived context such as the player's current health, location, the state of an interaction, or other information that may matter to a specific dialogue query but should not remain true afterward.
Projects can also provide contextual UObject references when implementing more specialized query logic.
Yes. The Unreal plugin includes a default SaveGame-based data manager that can persist Consequence Facts and numeric Fact values, as well as how many times individual Events and dialogue lines have been played.
The default implementation is optional. Projects with an existing save-game or world-state system can implement Consequence's Fact and saved-dialogue interfaces and use their own data storage instead.
No. Consequence can integrate with Audiokinetic Wwise for dialogue playback, but the Unreal plugin can also be configured to use Unreal Engine's native SoundBase and AudioComponent audio system instead.
When Wwise is enabled, Consequence lines can reference Wwise audio events. When it is disabled, they can reference Unreal audio assets instead.
Consequence currently includes integrations for ElevenLabs, Amazon Polly, and Azure Speech. Additional TTS providers can be supported upon request. The TTS provider and its required API credentials and settings are configured on the Consequence Client.
Individual Consequence Characters can be assigned provider-specific voices. Writers can then request TTS for one or more lines and Submit to Source Control. Consequence Client processes those requests in the background, generates .wav files using the configured provider, and submits those files to Perforce.
If the dialogue text or selected Character voice changes after a TTS request, Consequence Client detects that change and refreshes the queued generation request.
See Text-to-Speech for setup and workflow details.
Consequence is designed to work with Unreal Engine's localization system rather than replace it with a separate translation-management system.
Dialogue imported from Consequence is stored as Unreal FText with stable localization keys derived from its Event ID and line UID, while UI strings are synchronized with Unreal String Tables. This allows Unreal's standard localization gathering and .po-based workflow to handle translated text.
Consequence currently tracks writing and voice-production state for the source-language content rather than maintaining separate production statuses for every translated language. Localized dialogue audio can likewise be managed through the project's audio middleware and language-specific audio workflow.
See Localization for project setup and workflow details.
Yes. Consequence's data exchange with the game project uses UTF-8 JSON, supporting the Unicode characters required for non-English dialogue and strings.
Consequence Client writes submitted project data as UTF-8, while the Unreal integration reads that content into Unreal's FString and FText types and writes its JSON exchange files as UTF-8.