Documents

MetaNarrativeAudio Plugin

MetaNarrativeAudio is a professional narrative audio system for Unreal Engine 5.7 built around a DataTable-first workflow.

It helps you manage and play:
- Voice-over lines
- Radio chatter
- Ambient narrative playback
- Triggered narrative events
- Subtitle UI (UMG)
- Zone-based narrative switching
- Profile-based audio setups

Core Highlights

  • 100% DataTable-driven (CSV/Excel friendly)
  • Zone-aware narrative context
  • Ambient auto-play system
  • Trigger and sequence trigger actors
  • UMG subtitle interface
  • Priority interruption support
  • Profile switching during gameplay

Contents Included (Sample Content)

The sample plugin content is organized into folders such as:

  • Audio
  • Data
  • UI

This structure makes it easy to inspect and reuse examples.

Sample Content Folders


Installation

  1. Copy the plugin folder into your project:
    YourProject/Plugins/MetaNarrativeAudio/
  2. Regenerate project files (if needed).
  3. Compile your project.
  4. Open Unreal Editor.
  5. Enable the plugin from:

Edit → Plugins → Search "Meta Narrative Audio System"

Enable Plugin in Unreal Plugins Window


Quick Start Workflow

The recommended setup order is:

  1. Create a DataTable
  2. Create a Profile (Data Asset)
  3. Set Active Profile in Level Blueprint
  4. Create and register subtitle widget
  5. Use Trigger actors or call subsystem functions
  6. Test in PIE

1) Create a Narrative DataTable

Create a DataTable using the plugin row struct:

  • Content Browser → Right Click → Miscellaneous → Data Table
  • Row Structure: MetaNarrativeDataTableRow

Example DataTable

Sample Narrative DataTable

Typical Row Fields

FieldDescription
Row NameThe Line ID used to play this narrative
AudioSound Wave / Sound Cue asset
Subtitle TextSubtitle shown on screen
Speaker NameWho is speaking
PriorityInterruption priority (higher can interrupt lower)
Delay Before PlayDelay before playback starts
Override DurationOptional manual duration override

Example Line IDs

Use clear IDs like:
- radio_001
- radio_008
- checkpoint_intro
- boss_intro_01


2) Create a MetaNarrative Profile (Data Asset)

Create a Data Asset using:

  • Miscellaneous → Data Asset
  • Select MetaNarrativeProfile

Example Profile Asset

Sample MetaNarrative Profile Asset

Important Profile Settings

Profile

  • Profile Name
    A readable profile identifier (example: Example)

Audio Processing

  • Effect Chain
    Optional effect chain (for radio style, distortion, etc.)

Audio

  • Volume Multiplier
  • Pitch Multiplier
  • Audio Type (2D / non-spatial, etc.)
  • Submix (optional)

Playback

  • Fade In Duration
  • Fade Out Duration

Data

  • General Data Table
    Main DataTable used when the player is not in a zone-specific override.

Ambient Playback (Optional)

  • Enable Ambient Playback
  • Ambient Initial Delay
  • Ambient Min Interval
  • Ambient Max Interval

Ambient playback allows the system to automatically play random narratives from the active DataTable without manual Blueprint calls.


3) Set the Active Profile in the Level Blueprint

At level start, assign the profile to the player through the Meta Narrative Audio Subsystem.

Example Level Blueprint Setup

Level Blueprint Setup - Set Active Profile

Blueprint Flow (Concept)

  • Event BeginPlay
  • Get Player Controller (0)
  • Get Meta Narrative Audio Subsystem
  • Set Active Profile
  • Target Player: Player Controller
  • Profile: Your MetaNarrativeProfile asset

This is the step that activates the system for the player.


4) Create and Register the Subtitle Widget (UMG)

The plugin uses a UMG widget interface for subtitles.
You control the widget design and placement.

4.1 Create a Subtitle Widget

Create a widget (example: W_MetaNarrativeSubtitle) and design it as you want.

Subtitle Widget Designer Layout

A common layout includes:
- Speaker name text
- Subtitle text
- Background panel / image

4.2 Implement the Interface Events

The widget should implement the display interface and respond to events such as:
- ShowNarrative
- HideNarrative
- (Optional) UpdateNarrativeProgress

Widget Blueprint Graph - Interface Implementation

Typical Behavior

  • ShowNarrative
  • Set speaker name text
  • Set subtitle text
  • Show widget
  • Start a timer for the duration
  • HideNarrative
  • Hide/collapse widget
  • UpdateNarrativeProgress (optional)
  • Update a progress bar if used

5) Add Subtitle Widget to HUD and Register It

Create the subtitle widget in your HUD (or Player Controller UI flow), add it to the viewport, then register it with the subsystem.

Example HUD Setup

HUD Setup - Create Widget and Set Subtitle Widget

Blueprint Flow (Concept)

  • Create your main HUD widget
  • Add it to viewport
  • Get the subtitle widget reference
  • Get Meta Narrative Audio Subsystem
  • Call Set Subtitle Widget
  • Target Player: Owning player / player controller
  • Widget: Subtitle widget instance

This registration step is required so the subsystem can push subtitle events to your UI.


6) Using Trigger Actors (Level Placement)

The plugin includes trigger actors for narrative playback directly from the level.

Available Actors

  • MetaNarrativeTrigger
  • MetaNarrativeSequenceTrigger
  • MetaNarrativeZone

7) MetaNarrativeTrigger (Single Line Trigger)

MetaNarrativeTrigger plays a single narrative line when the player enters the trigger volume.

Example Trigger Setup

MetaNarrativeTrigger Details Panel Setup

Important Properties

  • Narrative DataTable (optional)
  • If empty, it uses the active profile’s current DataTable (zone-aware)
  • Line ID
  • The row name to play (example: radio_008)
  • Max Usage Count
  • How many times a player can trigger it
  • Show Debug Info
  • Useful during setup/testing

Use Cases

  • Checkpoint VO
  • Area intro voice line
  • Story event line
  • Tutorial prompt voice

8) MetaNarrativeSequenceTrigger (Multiple Lines in Sequence)

MetaNarrativeSequenceTrigger plays multiple lines in order.

Example Sequence Trigger Setup

MetaNarrativeSequenceTrigger Details Panel Setup

Important Properties

  • Line IDs (array)
  • Example:
    • radio_001
    • radio_002
  • Narrative DataTable (optional)
  • Interrupt Current
  • Start sequence immediately by interrupting current playback
  • Max Usage Count
  • Show Debug Info

Use Cases

  • Tutorial steps
  • Story checkpoint conversations
  • Multi-line radio exchanges
  • Boss intro sequences

9) MetaNarrativeZone (Context-Based DataTable Switching)

MetaNarrativeZone lets you automatically switch narrative context by player location.

How It Works

  • Player outside all zones → General DataTable
  • Player enters a zone → Zone DataTable
  • Player enters nested zone → Nested zone DataTable
  • Player exits nested zone → returns to previous zone DataTable

Typical Example

  • Outdoor zone → exploration chatter
  • Building zone → indoor chatter
  • CommandRoom nested zone → story-specific dialogue

If you have a dedicated screenshot for zone setup later, add it here.


10) Runtime Result (Subtitles on HUD)

When configured correctly, triggers or ambient playback will show subtitles in-game through your registered UMG widget.

Example Runtime Subtitle Result (HUD)

Runtime Subtitle Display on HUD

Example Runtime Trigger Playback Result

Runtime Trigger Playback Result in PIE


11) Ambient Playback (Automatic Narrative)

If enabled in the profile, the system can auto-play random lines from the current DataTable.

Ambient Playback Flow

  1. Wait for Ambient Initial Delay
  2. Play a random line
  3. Wait a random time between Min Interval and Max Interval
  4. Repeat

Best Use Cases

  • Radio chatter
  • Character thoughts
  • Environmental commentary
  • Atmospheric story hints

Ambient playback is zone-aware, so entering a zone changes the pool of lines automatically.


12) CSV / Spreadsheet Workflow

Because the plugin is DataTable-based, you can manage narrative content in spreadsheets and import/export CSVs.

Recommended Spreadsheet Columns

  • RowName (Line ID)
  • Audio
  • SubtitleText
  • SpeakerName
  • Priority
  • DelayBeforePlay
  • OverrideDuration

Workflow

  1. Write/edit lines in CSV
  2. Import into Unreal DataTable
  3. Test with Trigger actors or PlayNarrative calls
  4. Iterate quickly without rebuilding complex assets

13) Blueprint Use Cases (Manual Playback)

Besides triggers, you can manually play lines from any Blueprint via the subsystem.

Common Pattern

  • Get Player Controller
  • Get Meta Narrative Audio Subsystem
  • Call one of the playback functions:
  • PlayNarrative
  • PlayNarrativeFromDataTable
  • PlayRandomNarrative
  • QueueNarratives
  • StopNarrative

Good For

  • Door opened events
  • Mission progression
  • Cutscene transitions
  • Boss phase changes
  • Dynamic gameplay reactions

14) Troubleshooting

Narratives do not play

Check:
- Did you call Set Active Profile in Level Blueprint?
- Is General Data Table assigned in the profile?
- Does the Line ID exist in the active DataTable?
- Is the row’s Audio field assigned?

Subtitles do not appear

Check:
- Was the subtitle widget created and added to viewport/HUD?
- Did you call Set Subtitle Widget on the subsystem?
- Does the widget implement the interface events?
- Are ShowNarrative / HideNarrative implemented correctly?

Trigger does not fire

Check:
- TriggerBox size and placement
- Collision settings
- Max Usage Count not already reached
- Correct player overlap/collision channel

Zone switching does not happen

Check:
- Zone name matches the profile’s zone mapping
- Zone volume size/collision
- Player overlap events are working


15) Best Practices

Line ID Naming

Use descriptive names:
- radio_command_warning
- checkpoint_bridge_reached
- boss_phase1_intro

Avoid vague IDs:
- line1
- test
- audio3

Organization

Use multiple DataTables by context:
- DT_Exploration
- DT_Combat
- DT_Tutorial
- DT_BossIntro

Use profiles by narrative type:
- DA_Profile_Radio
- DA_Profile_InnerVoice
- DA_Profile_Environment