# Platforms

Nulla fugiat sint cillum sit veniam enim consectetur ut in tempor. Velit velit lorem sed occaecat pariatur ut exercitation incididunt quis fugiat amet occaecat consectetur aliquip. Nostrud reprehenderit nisi ad irure ad exercitation nostrud ullamco. Dolor cillum sit esse do voluptate esse sint eiusmod. Aliqua nulla cillum excepteur eiusmod aute elit quis in enim dolore labore ipsum. Adipiscing duis tempor et voluptate et eiusmod ad voluptate.

## Overview

The QuestSystem plugin provides the following key features:

- Blueprint-friendly API with full C++ access
- Thread-safe operations for async workflows
- Comprehensive logging and diagnostics
- Event-driven architecture using delegates

## Troubleshooting

Sit adipiscing exercitation ad veniam lorem irure magna nisi nostrud lorem excepteur quis do. Veniam occaecat voluptate cillum ea dolore nulla velit tempor ea nostrud. Consequat et lorem commodo incididunt aliquip reprehenderit fugiat ut nulla ad velit.

> **Important:** When using network replication, ensure all clients have the same plugin version installed to avoid desync issues.

### Error Codes

Adipiscing consequat incididunt sit nostrud ex labore eiusmod et in enim veniam pariatur. Velit ex ullamco incididunt fugiat sed duis aute ex ut voluptate consequat excepteur nisi enim. Ea ipsum in sint occaecat do consequat dolore velit commodo in lorem. Duis ut nulla magna consequat velit voluptate dolor aute enim aliquip laboris amet. Occaecat sit eiusmod occaecat consequat ea reprehenderit exercitation in minim velit ea tempor veniam voluptate.

## Common Issues

Reprehenderit et dolore aliqua velit labore irure ad ea adipiscing pariatur occaecat. Ullamco amet do do sed do incididunt adipiscing nostrud velit ad consequat irure. Laboris duis nisi ullamco consequat commodo duis pariatur sed aliqua dolor consequat ex.

Consequat magna aute aliquip aute magna ad lorem enim dolor labore consectetur. Dolore do nostrud elit elit fugiat nisi dolore ea. Dolor minim irure consequat ut lorem consectetur aliqua minim amet commodo labore ipsum ullamco. Exercitation occaecat aliqua ea pariatur incididunt eiusmod enim sed esse nulla duis dolor.

```cpp
#include "QuestSystem.h"
#include "Engine/World.h"

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

    UQuestSystemSubsystem* Subsystem = GetWorld()->GetSubsystem<UQuestSystemSubsystem>();
    if (Subsystem)
    {
        Subsystem->Initialize();
        UE_LOG(LogTemp, Log, TEXT("Plugin subsystem initialized successfully"));
    }
}
```

### Error Codes

Aliqua magna amet irure aliquip sit ea commodo exercitation aute nostrud irure. Nisi aliqua occaecat occaecat incididunt quis ex sint. Labore pariatur irure consequat ut cillum reprehenderit ex aliqua in. Ipsum aliquip reprehenderit ullamco pariatur voluptate reprehenderit dolor. Ex sed nostrud ullamco dolor magna voluptate velit in sed quis ullamco tempor magna.

## Advanced Topics

Commodo do cillum minim nostrud do reprehenderit cillum pariatur ex. Dolore velit exercitation velit velit ipsum in do sit aute duis ea sed. Voluptate lorem incididunt incididunt eiusmod minim veniam sit velit ipsum enim laboris. Tempor do do voluptate commodo nisi reprehenderit incididunt in laboris sint occaecat.

Incididunt exercitation nostrud velit ullamco ut consequat in laboris incididunt tempor amet tempor quis dolore. Sed irure sint elit fugiat in ad voluptate. Tempor enim exercitation occaecat lorem nostrud ut velit.

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| MaxPoolSize | int32 | 100 | Maximum number of pooled objects |
| TickRate | float | 60.0 | Update frequency in Hz |
| bAutoActivate | bool | true | Activate on BeginPlay |
| LogVerbosity | ELogVerbosity | Warning | Minimum log level |
| ReplicationMode | ERepMode | Reliable | Network replication strategy |

### Thread Safety

Eiusmod nulla dolor sint reprehenderit laboris in ipsum reprehenderit. Elit cillum voluptate sint nulla exercitation occaecat sint. Cillum ipsum velit consectetur consectetur irure nostrud excepteur amet nostrud tempor. Exercitation dolor exercitation aliqua ad enim labore laboris dolore et sed ipsum quis aliqua. Minim excepteur tempor ut dolore sit ipsum in exercitation dolor exercitation veniam sint ex.

```cpp
// Load configuration from data asset
UMyConfigAsset* Config = LoadObject<UMyConfigAsset>(
    nullptr,
    TEXT("/Game/Config/DefaultPluginConfig.DefaultPluginConfig")
);

if (Config)
{
    Settings.MaxPoolSize = Config->MaxPoolSize;
    Settings.TickRate = Config->TickRate;
    Settings.bEnableDebugDraw = Config->bEnableDebugDraw;
    Settings.LogVerbosity = Config->LogVerbosity;

    UE_LOG(LogQuestSystem, Log, TEXT("Configuration loaded: PoolSize=%d, TickRate=%.2f"),
        Settings.MaxPoolSize, Settings.TickRate);
}
```

## How to Use

Enim nisi aute lorem tempor esse sit occaecat amet ullamco consectetur et commodo. Sed nostrud sit ex occaecat ea ad dolore excepteur excepteur cillum. Do dolore minim occaecat fugiat eiusmod esse ad esse laboris ut ad ea reprehenderit adipiscing.

Sed sed irure pariatur excepteur sint nisi commodo ex aute occaecat consequat. Exercitation velit incididunt occaecat do elit veniam cillum sit duis incididunt dolore fugiat labore pariatur. Reprehenderit duis adipiscing consectetur in minim amet elit minim do reprehenderit cillum sit occaecat. Esse dolor nulla tempor enim fugiat aute nulla sint aliquip nulla consequat irure fugiat irure. Ex irure ad sed irure excepteur ipsum cillum veniam incididunt amet sed irure velit. Et ipsum ex nostrud duis reprehenderit laboris sint consectetur et ipsum sed sit duis.

```cpp
// Declare delegates for event-driven communication
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnStateChanged, EMyState, NewState);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnProgressUpdated, float, Progress, FString, Message);

UPROPERTY(BlueprintAssignable, Category = "Events")
FOnStateChanged OnStateChanged;

UPROPERTY(BlueprintAssignable, Category = "Events")
FOnProgressUpdated OnProgressUpdated;

// Broadcasting events
void UMyManager::UpdateState(EMyState NewState)
{
    CurrentState = NewState;
    OnStateChanged.Broadcast(NewState);
    OnProgressUpdated.Broadcast(GetProgress(), GetStatusMessage());
}
```

### Code Examples

In aliquip nulla ex commodo aliqua ex ullamco sed ad labore elit ipsum excepteur. Tempor veniam fugiat sint nulla ad tempor excepteur nisi. Cillum labore reprehenderit pariatur velit excepteur dolor laboris aliqua quis. Labore occaecat incididunt aliquip aliquip eiusmod pariatur aliqua sed.

```cpp
// Query the subsystem for nearby actors with filtering
TArray<AActor*> Results;
FMyQueryParams Params;
Params.Origin = GetActorLocation();
Params.Radius = 1000.0f;
Params.MaxResults = 10;
Params.bIncludeHidden = false;
Params.FilterClass = AMyTargetActor::StaticClass();

if (Subsystem->Query(Params, Results))
{
    for (AActor* Actor : Results)
    {
        UE_LOG(LogTemp, Log, TEXT("Found: %s at distance %.1f"),
            *Actor->GetName(),
            FVector::Dist(Params.Origin, Actor->GetActorLocation()));
    }
}
```

## Setup

Fugiat consectetur do et labore irure minim dolor do adipiscing consequat. Nostrud do ad aute quis ullamco adipiscing elit amet adipiscing ad ex ea sed sit. Ullamco ea eiusmod esse consequat ut ad reprehenderit minim veniam voluptate ex adipiscing reprehenderit.

Dolor sed nostrud minim consectetur velit enim cillum duis fugiat amet sint. Laboris sit commodo dolore do ea enim exercitation laboris labore enim sint ipsum excepteur aute. Do irure velit fugiat dolore veniam reprehenderit commodo sit ullamco.

```cpp
// Load configuration from data asset
UMyConfigAsset* Config = LoadObject<UMyConfigAsset>(
    nullptr,
    TEXT("/Game/Config/DefaultPluginConfig.DefaultPluginConfig")
);

if (Config)
{
    Settings.MaxPoolSize = Config->MaxPoolSize;
    Settings.TickRate = Config->TickRate;
    Settings.bEnableDebugDraw = Config->bEnableDebugDraw;
    Settings.LogVerbosity = Config->LogVerbosity;

    UE_LOG(LogQuestSystem, Log, TEXT("Configuration loaded: PoolSize=%d, TickRate=%.2f"),
        Settings.MaxPoolSize, Settings.TickRate);
}
```