A Sylo data access plugin for Unreal Engine, by Futureverse
The Sylo SDK is an Unreal Engine plugin for accessing off-chain decentralized data using Sylo DIDs (Decentralized Identifiers). It provides a simple interface for loading Sylo data via Blueprints or C++, with built-in support for authentication and asynchronous requests.
For more on Sylo and the broader Futureverse developer ecosystem, visit the Futureverse Documentation Hub.
Sylo is a protocol for accessing off-chain decentralized data associated with a DID (Decentralized ID). A Sylo DID looks like:
did:sylo-data:0xfFFFffFF0000000000000000000000000000052f/ed38c341-a26a-4426-aed9-4f8f362b70bf
This structure breaks down as follows:
did:
→ Declares this is a decentralized identifier.sylo-data:
→ Specifies the method used, in this casesylo-data
.0xfFFFffFF0000000000000000000000000000052f
→ The owner address of the data.ed38c341-a26a-4426-aed9-4f8f362b70bf
→ A unique ID for the data being accessed.
- ✅ Load Sylo DID data using Blueprints or C++
- ✅ Uses a subsystem pattern for easy integration into game instances
- ✅ Supports token-based authentication
- ✅ Built-in support for asynchronous Futures and delegates
Add the UnrealSyloPlugin
to your project's plugins folder and enable it in the Plugins tab in Unreal.
The USyloSubsystem
is automatically created by Unreal if your GameInstance inherits from UGameInstance
. You can access it like this:
USyloSubsystem* SyloSubsystem = GetGameInstance()->GetSubsystem<USyloSubsystem>();
Before loading a DID, you must configure an Access Source which provides bearer tokens.
TSharedPtr<ISyloAccessSource> MyAccessSource = MakeShared<FMyCustomAccessSource>();
SyloSubsystem->SetSyloAccessSource(TEXT("MyResolverID"), MyAccessSource);
Your custom class must implement the ISyloAccessSource
interface, providing methods for retrieving and refreshing access tokens.
SyloSubsystem->LoadSyloDIDFuture(TEXT("did:sylo-data:..."))
.Next([](FSyloLoadResult Result)
{
if (Result.bSuccess && Result.Data.IsValid())
{
// Process data
}
});
Returned by all data load methods:
Property | Type | Description |
---|---|---|
bSuccess | bool |
Whether the data load was successful |
Data | TSharedPtr<TArray<uint8>> |
Binary data, null if load failed |
- Unreal Engine 5.3+ (Subsystems, Async/Future support)
This SDK is released under the Apache License 2.0.