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.
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
| Component | Type | Description |
|---|---|---|
| UPlayprintTracker | UObject | Core tracker. Can be owned by a GameInstance, PlayerController, or any Actor. |
| IStorageAdapter | Interface | Persistence abstraction. Ships with local file storage and in-memory. Custom backends for EOS, Steam, PlayFab, etc. |
| UPlayprintGhost | Static | Ghost creation and bias mapping. Pure functions, thread-safe. |
| Blueprint Support | UFUNCTION | All public API exposed to Blueprints via UFUNCTION macros. |
| Behaviour Tree Nodes | BTTask/BTDecorator | Ready-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
| Adapter | Persistence | Best For |
|---|---|---|
InMemoryStorage | Session only | Testing and prototyping |
LocalFileStorage | Local save file | Single-player, offline games |
EOSStorage | Epic Online Services | Cross-platform cloud saves |
SteamStorage | Steam Cloud | Steam-published titles |
Custom IStorageAdapter | Your choice | PlayFab, 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