Skip to main content

Setup Guide

Complete installation and setup walkthrough for ElysQuestFlow.

Installation

From FAB Marketplace

  1. Download ElysQuestFlow from the FAB Marketplace
  2. Enable the plugin in Edit > Plugins > search "ElysQuestFlow"
  3. Restart the editor

From Source

  1. Clone into your project's Plugins/ directory:
    cd YourProject/Plugins/
    git clone https://github.com/RogueParadigm/ElysQuestFlow.git
  2. Regenerate project files
  3. Build the project

Dependencies

ElysQuestFlow requires:

  • GameplayTags — Built-in UE plugin (enabled by default)
  • UMG — For widget rendering

No external dependencies.

Module Setup

Add to your game module's Build.cs if you reference ElysQuestFlow types directly:

PublicDependencyModuleNames.Add("ElysQuestFlow");

Minimal Integration

Step 1: Define GameplayTags

Create tags for your game events in Project Settings > GameplayTags, or in a GameplayTags.ini:

[/Script/GameplayTags.GameplayTagsSettings]
+GameplayTagList=(Tag="Enemy.Killed",DevComment="An enemy was killed")
+GameplayTagList=(Tag="Item.Collected",DevComment="An item was collected")
+GameplayTagList=(Tag="Area.Entered",DevComment="Player entered an area")
+GameplayTagList=(Tag="Quest.Completed.ClearTavern",DevComment="Clear tavern quest done")

Step 2: Create a Quest DataAsset

  1. In Content Browser: Right-click > Miscellaneous > Data Asset
  2. Select ERPSimpleQuestDefinition
  3. Configure:
    • Display Name: "Clear the Tavern"
    • Description: "Help the innkeeper deal with the goblin problem."
    • Objectives:
      • [0] ObjectiveId: "KillGoblins", EventTag: Enemy.Killed, Count: 5, Text: "Kill 5 goblins"
      • [1] ObjectiveId: "SecureCellar", EventTag: Area.Entered, Count: 1, Text: "Secure the cellar"
    • Sequential: true
    • Completion Event Tag: Quest.Completed.ClearTavern

Step 3: Start the Quest

In your PlayerController or GameMode:

#include "Quest/ERPQuestSubsystem.h"
#include "Quest/ERPSimpleQuest.h"

void AMyPlayerController::BeginPlay()
{
Super::BeginPlay();

UERPQuestSubsystem* QS = GetWorld()->GetSubsystem<UERPQuestSubsystem>();
if (QS && MyQuestDefinition)
{
QS->StartQuestFromDefinition(MyQuestDefinition);
}
}

Step 4: Broadcast Events

From your game code, broadcast events when things happen:

#include "EventBus/ERPEventBusSubsystem.h"

void AMyEnemy::Die()
{
UERPEventBusSubsystem* Bus = GetWorld()->GetSubsystem<UERPEventBusSubsystem>();
if (Bus)
{
FERPEventPayload Payload;
Payload.Instigator = LastDamageDealer;
Bus->Broadcast(FGameplayTag::RequestGameplayTag("Enemy.Killed"), Payload);
}
}

Step 5: Add UI (Optional)

Toast notifications work automatically — the UERPToastSubsystem listens to quest events.

For a quest tracker HUD:

#include "UI/ERPQuestTrackerWidget.h"

void AMyHUD::BeginPlay()
{
Super::BeginPlay();

UERPQuestTrackerWidget* Tracker = CreateWidget<UERPQuestTrackerWidget>(GetOwningPlayerController());
Tracker->AddToViewport();
}

Blueprint Setup

All steps above can also be done in Blueprints:

  1. Start Quest: Get ERPQuestSubsystem > call StartQuestFromDefinition
  2. Broadcast Event: Get ERPEventBusSubsystem > call Broadcast or BroadcastSimple
  3. Create UI: Create Widget of class ERPQuestTrackerWidget > Add to Viewport

Next Steps