Skip to main content
Native C++ and Blueprint support for Passport authentication, wallet operations, and blockchain data queries.
Who is this for? Game developers using Unreal Engine who want to integrate web3 features, NFTs, and blockchain functionality into their games.

Platform Compatibility

Unreal Engine VersionWindowsmacOSiOSAndroid
5.5.x✅ Full support✅ Full support⚠️ Beta⚠️ Beta
5.4.x✅ Full support✅ Full support⚠️ Beta⚠️ Beta
5.3.x✅ Full support✅ Full support⚠️ Beta⚠️ Beta
5.2.x and below❌ Not supported❌ Not supported❌ Not supported❌ Not supported
Platform Requirements: Requirements depend on your Unreal Engine version. Use the version selector in Unreal’s documentation to view requirements for your engine:
Legacy Versions (4.26, 4.27, 5.0): These versions are not officially supported and require the BLUI plugin workaround. We strongly recommend using UE 5.3+ for new projects. See the Legacy Versions accordion below.
Mobile Platforms (iOS & Android): Not officially supported.

Prerequisites

  • Unreal Engine: 5.3 or later (5.4 and 5.5 recommended)
  • Git LFS: The SDK repository uses Git Large File Storage to manage .uasset and .umap files. Install Git LFS before cloning or the plugin may fail to download binary dependencies correctly.

Installation

  1. Install Git LFS
    Git LFS must be installed before adding the SDK. The SDK contains .uasset and .umap files stored in Git LFS that won’t download correctly otherwise.
  2. Add the SDK to your project’s Plugins directory:
From your project’s root directory:
git clone https://github.com/immutable/unreal-immutable-sdk.git Plugins/unreal-immutable-sdk
  1. Restart the Unreal Editor
    Legacy Unreal Engine Versions (4.26, 4.27, 5.0): Additional BLUI plugin installation required. See Legacy Versions Setup in the overview.
Your project structure should look like:
Root/
└── Plugins/
    └── unreal-immutable-sdk/
  1. Enable the Immutable module in your Build.cs:
Source/YourGame/YourGame.Build.cs
PublicDependencyModuleNames.AddRange(new string[] {
    "Core", "CoreUObject", "Engine", "InputCore",
    "Immutable"  // Add this
});
For mobile platforms, see Platform Setup.
Not Officially Supported: Unreal Engine 4.26, 4.27, and 5.0 are not officially supported. We strongly recommend using UE 5.3+ for new projects.
For Unreal Engine 4.26, 4.27, and 5.0, you must install the BLUI plugin because Epic’s WebBrowserWidget uses an outdated CEF version incompatible with the SDK.
More on why we use BLUI plugin can be found in the FAQ.
1. Download BLUIDownload or clone from immutable-BLUI to your project’s Plugins folder.2. Rename the folderRename immutable-BLUI to BLUI. Your plugins directory should look like:
MyGame/
└── Plugins/
    ├── BLUI/
    └── unreal-immutable-sdk/
3. Disable WebBrowserWidgetEdit unreal-immutable-sdk/Immutable.uplugin and set WebBrowserWidget to disabled:
{
  "Plugins": [
    {
      "Name": "WebBrowserWidget",
      "Enabled": false
    }
  ]
}
4. Configure Hub
Hub Configuration Required: In Immutable Hub, you MUST add file://* to the Web Origin URLs field in your Passport client configuration. Without this, the BLUI embedded browser cannot communicate with the Passport SDK and authentication will fail.
  1. Navigate to your project in Immutable Hub
  2. Go to PassportClients → Select your client
  3. Add file://* to the Web Origin URLs field
  4. Save changes

Platform-Specific Configuration

Unreal Engine 5.3+: This version uses the Modern Xcode workflow with per-project configuration files. Follow the platform-specific instructions below for your target platforms.

Platform Requirements

  • Windows: 10 or later
No additional configuration required for Windows builds.
The SDK handles deep links automatically. Ensure your redirect URIs match your configured URL scheme.
Your redirect URIs (like mygame://callback) must use the same URL scheme that you configure in your platform settings:
  • iOS: Only the scheme needs to match (e.g., mygame in mygame://callback)
  • Android: Both the scheme AND host must match (e.g., mygame and callback in mygame://callback)
See Initialize Passport for authentication setup.
auto InitData = FImmutablePassportInitData
{
    TEXT("YOUR_CLIENT_ID"),
    TEXT("mygame://callback"),
    TEXT("mygame://logout"),
    TEXT("sandbox"),
    ...
};

Passport->Initialize(InitData, ...);

Next Steps

Getting Started

Additional Resources