Overview

Plugin Overview

Easy Dialogue System is a professional-grade dialogue management plugin for Unreal Engine 5. It provides a complete solution through a data-driven architecture for creating, managing, and executing dialogue sequences. The system is fully exposed to Blueprints, enabling designers to create complex dialogue trees without writing code.


Plugin Directory Structure

EasyDialogueSystem/
├── DialogueSystem.uplugin              # Plugin descriptor file (JSON)
├── README.md                            # Plugin overview and documentation
├── Config/                              # Plugin configuration files
├── Content/                             # Plugin content assets (optional)
├── Docs/                                # Documentation directory
│   ├── DialogueSystem_GettingStarted.md # English version documentation
│   └── DialogueSystem_GettingStarted_CN.md # Chinese version documentation (this file)
├── Resources/                           # Plugin resources (icons, thumbnails)
├── Binaries/                            # Compiled binary files (auto-generated)
│   └── Win64/
│       └── UnrealEditor-DialogueSystemRuntime.dll
├── Intermediate/                        # Build intermediate files (auto-generated)
└── Source/                              # Source code directory
    └── DialogueSystemRuntime/           # Runtime module
        ├── DialogueSystemRuntime.Build.cs    # Module build configuration
        ├── Public/                           # Public interface header files
        │   ├── DialogueSystemRuntime.h       # Module entry point
        │   ├── DialogueSystemTypes.h         # Core type definitions
        │   ├── DialogueDataAsset.h          # Data asset class
        │   └── DialogueSystemComponent.h    # Runtime component class
        └── Private/                          # Implementation files
            ├── DialogueSystemRuntime.cpp      # Module implementation
            ├── DialogueDataAsset.cpp         # Data asset implementation
            └── DialogueSystemComponent.cpp   # Component implementation

Core Concepts

Data Asset UDialogueDataAsset

Central Data Container, stores:

  • Dialogue Sequence: A complete dialogue tree including nodes and choices

  • Speaker Information: Speaker metadata (name, display name, avatar, color)

  • Global Variables: Runtime variables with default values


Dialogue Structure

  • FDialogueSequence: Complete dialogue sequence, includes:

    • Unique sequence ID and name

    • Start node reference

    • Dialogue node array

    • Choice node array

    • Metadata for extension

  • FDialogueNode: Single dialogue node, supports:

    • Text node: Displays dialogue text with speaker information

    • Condition node: Conditional branching

    • Event node: Broadcasts events to external systems

    • Delay node: Waits for a specified duration

    • Chained linking via NextNodeID

  • FDialogueChoiceNode: Choice branch node, includes:

    • Multiple choice options

    • Single or multiple selection support

    • Minimum/maximum selection constraints

    • Timeout handling and fallback node

    • Availability conditions for each choice

  • FDialogueCondition: Variable comparison system:

    • Supports integer, float, boolean, string types

    • Multiple operators: equals, not equals, greater than, less than, contains, etc.

    • Comparison values based on strings


Runtime Component UDialogueSystemComponent

Execution Engine, responsible for:

  • Loading and managing dialogue data assets

  • Executing dialogue sequences based on Tick timing

  • Handling delays, timeouts, and automatic progression

  • Broadcasting events for UI and external systems

  • Managing runtime variables


Source Code Structure

Public Header Files

  • DialogueSystemRuntime.h

    • Module Interface Class

    • API Macro Definition (DIALOGUE_SYSTEM_RUNTIME_API)

    • Module Lifecycle Management

  • DialogueSystemTypes.h

    • Core Type Definitions and Enumerations

    • EDialogueNodeType: Node type enumeration (Text, Choice, Condition, Event, Delay)

    • EDialogueConditionOperator: Condition operator (Equals, Greater Than, Less Than, Contains, etc.)

    • EDialogueValueType: Value type (Integer, Float, Boolean, String)

    • FDialogueCondition: Variable comparison condition structure

    • FSpeakerInfo: Speaker information structure

    • FDialogueNode: Dialogue node structure

    • FDialogueChoice: Choice option structure

    • FDialogueChoiceNode: Choice branch node structure

    • FDialogueSequence: Complete dialogue sequence container

  • DialogueDataAsset.h

    • FGlobalVariable: Global variable definition

    • UDialogueDataAsset: Main data asset class

    • Data asset query and validation functions

  • DialogueSystemComponent.h

    • UDialogueSystemComponent: Runtime execution component

    • Blueprint-integrated event delegates

    • Dialogue control functions (Start, Advance, Stop, Submit Choice)

    • Variable management functions


Private Implementation

  • DialogueSystemRuntime.cpp: Module startup and shutdown

  • DialogueDataAsset.cpp: Data asset implementation and validation

  • DialogueSystemComponent.cpp: Component logic, Tick processing, and node execution


Running Requirements

  • Engine: Unreal Engine 5.6 or higher

  • Module Dependencies:

    • Core - Core engine functionality

    • CoreUObject - Object system

    • Engine - Engine runtime

    • UMG - UI system (for UI integration examples)

    • Slate - Slate UI framework

    • SlateCore - Slate core functionality

Dependencies are automatically configured in DialogueSystemRuntime.Build.cs.


Last updated