Playprint Docs
Dashboard Home

Unreal Engine Integration

Playprint's Unreal Engine integration will bring player profiling and Ghost AI to C++ and Blueprint games. Track player decisions, extract playstyle profiles, and generate AI opponents that mirror real player behaviour — with the performance Unreal demands.

UE unreal_status

Status: Planned. The Unreal Engine SDK is on the roadmap. Core architecture is designed; implementation will begin after the Unity SDK ships.

Planned API

The Unreal SDK will follow the same pipeline as the other SDKs, using idiomatic UE5 C++ and Blueprint support:

#include "PlayprintTracker.h"

// Create a tracker
UPlayprintTracker* Tracker = NewObject<UPlayprintTracker>();
Tracker->Initialize(FTrackerOptions{
    GameId: TEXT("my-unreal-game"),
    Storage: CreateDefaultSubobject<ULocalFileStorage>(TEXT("Storage")),
});

// Track decisions during gameplay
Tracker->StartMatch();
Tracker->Decision(FDecisionInput{ Label: TEXT("attack") });       // risk inferred
Tracker->Decision(FDecisionInput{
    Label: TEXT("flank"),
    Risk: 0.75f,
    Information: 0.6f,    // Tier 2
});

// Record outcomes
Tracker->Outcome(FOutcomeInput{ Type: TEXT("kill"), Delta: 0.8f });

// End match
FPlayprintData Profile = Tracker->EndMatch(TEXT("win"));

// Generate Ghost AI biases (8 weights — 6 core + 2 comms)
FGhostBiases Ghost = UPlayprintGhost::Create(Profile, CommsProfile);
// Ghost.Aggression = 0.72f, Ghost.Expressiveness = 0.57f, ...

Ghost AI for Unreal NPCs

Map ghost biases to your AI behaviour tree or controller parameters — including communication biases for emotes and chat:

// Map ghost biases to AI Behaviour Tree parameters
TMap<FString, FBiasMapping> Mappings;
// Core gameplay
Mappings.Add(TEXT("AttackFrequency"),  {TEXT("aggression"),      0.1f, 0.9f});
Mappings.Add(TEXT("RetreatThreshold"), {TEXT("patience"),        0.2f, 0.8f});
Mappings.Add(TEXT("FlankChance"),      {TEXT("riskTolerance"),   0.1f, 0.7f});
Mappings.Add(TEXT("PatternVariance"),  {TEXT("consistency"),     0.05f, 0.4f});
Mappings.Add(TEXT("TargetSpread"),     {TEXT("reach"),           1.0f, 4.0f});
// Communication
Mappings.Add(TEXT("EmoteFrequency"),   {TEXT("expressiveness"),  0.0f, 0.8f});
Mappings.Add(TEXT("TauntChance"),      {TEXT("provocation"),     0.0f, 0.5f});

TMap<FString, float> AIParams = UPlayprintGhost::MapBiases(Ghost, Mappings);

// Feed into your Behaviour Tree
AIController->GetBlackboardComponent()->SetValueAsFloat(
    TEXT("AttackFrequency"), AIParams[TEXT("AttackFrequency")]
);
AIController->GetBlackboardComponent()->SetValueAsFloat(
    TEXT("EmoteFrequency"), AIParams[TEXT("EmoteFrequency")]
);

Planned Architecture

ComponentTypeDescription
UPlayprintTrackerUObjectCore tracker. Can be owned by a GameInstance, PlayerController, or any Actor.
IStorageAdapterInterfacePersistence abstraction. Ships with local file storage and in-memory. Custom backends for EOS, Steam, PlayFab, etc.
UPlayprintGhostStaticGhost creation and bias mapping. Pure functions, thread-safe.
Blueprint SupportUFUNCTIONAll public API exposed to Blueprints via UFUNCTION macros.
Behaviour Tree NodesBTTask/BTDecoratorReady-made nodes for ghost-influenced AI decision-making.

Blueprint Support

Every SDK function will be exposed to Blueprints, so no C++ is required for basic integration:

  • Start/End Match — Blueprint-callable functions on the tracker
  • Decision & Outcome — Record events from any Blueprint graph
  • Ghost Creation — Convert profiles to AI parameters in Blueprints
  • Archetype Classification — Get player archetype name and description
  • Behaviour Tree integration — Custom BTTask nodes for ghost-driven decisions

Storage Options

AdapterPersistenceBest For
InMemoryStorageSession onlyTesting and prototyping
LocalFileStorageLocal save fileSingle-player, offline games
EOSStorageEpic Online ServicesCross-platform cloud saves
SteamStorageSteam CloudSteam-published titles
Custom IStorageAdapterYour choicePlayFab, custom backends

Platform Support

  • Unreal Engine 5.3+ — primary target
  • All platforms — PC, Mac, Linux, consoles, mobile
  • Zero external dependencies — pure C++, packaged as a UE plugin
  • Thread-safe — Profile extraction runs off the game thread
  • Shipping build compatible — No editor-only dependencies

Cross-Platform Profiles

PlayprintData is the same shape across all SDKs. A player profiled in Unreal produces identical data to one profiled in TypeScript, Unity, or Roblox. Ghost AI, archetypes, and friend codes all work cross-platform.

Get Notified

The Unreal SDK is planned and will begin development after the Unity SDK ships. Join the waitlist to be notified when development begins.

Current Options

While the native C++ SDK is in development, Unreal games can integrate with Playprint by:

  • Using the TypeScript SDK via a companion web service
  • Implementing the profile extraction algorithm directly in C++ (the math is documented in Core Concepts)
  • Partnering with us for early access — get in touch