Unreal SDK FAQ
The Immutable SDK for Unreal helps you integrate your game with Immutable Passport.
- Can I log in using a webview instead of opening the browser?
- Why is the in-app browser used for Passport login on mobile and not a webview?
- Why is PKCE login not supported for Windows?
- On iOS, when using the PKCE login/logout function, I get an alert asking: "My Game" Wants to Use "immutable.com" to Sign in. Can I modify or remove this alert?
- Why am I getting "Access blocked: Authorization Error - Error 403: disallowed_useragent" when logging in with Google?
- Why do I need to disable the WebBrowserWidget plugin to use the BLUI plugin?
- I use a custom engine. How can I integrate with Immutable?
- Why am I experiencing issues using the Xsolla plugin with the Immutable Unreal SDK?
- My players in specific regions are encountering errors during login or while performing transfers. What regions does the Immutable Game SDK support?
Can I log in using a webview instead of opening the browser?
This is not possible due to security reasons. Vendors like Google also block login through webviews because the hosting applications can steal credentials.
See Why is the in-app browser used for Passport login on mobile and not a webview? for more details.
Why is the in-app browser used for Passport login on mobile and not a webview?
The in-app browser is specifically designed for single sign-on (SSO) purposes, making it a much more secure option. This browser runs on a separate process from the hosting game, meaning the game cannot access it, modify any content, or inject malicious code. On the other hand, when it comes to the web view, the hosting game has more control over it. For instance, the hosting game can intercept requests and inject JavaScript, making it less secure.
Why is PKCE login not supported for Windows?
Standalone Windows applications do not support window deep linking from a web browser to the application, which PKCE requires. Although UWP (Universal Windows Platform) applications support it, we do not currently support it.
On iOS, when using the PKCE login/logout function, I get an alert asking: "My Game" Wants to Use "immutable.com" to Sign in. Can I modify or remove this alert?
To securely implement PKCE, we must use ASWebAuthenticationSession
, which shows an alert. Unfortunately, this alert cannot be removed or modified as the operating system triggers it.
You'll be able to read more about this here.
Why am I getting "Access blocked: Authorization Error - Error 403: disallowed_useragent" when logging in with Google?
This error occurs because you are attempting to log in using a webview instead of a browser, which is not allowed. Refer to Can I log in using a webview instead of opening the browser? for more information.
Why do I need to disable the WebBrowserWidget plugin to use the BLUI plugin?
Both BLUI and Epic's WebBrowserWidget plugin utilize the Chromium Embedded Framework (CEF) in the background. The Immutable plugin requires CEF to run its internal libraries, including player/gamer authentication procedures. In Unreal Engine 4, the CEF libraries are outdated and cannot execute the source code of the internal libraries. Therefore, we require the BLUI plugin to be used instead of the WebBrowserWidget plugin.
I use a custom engine. How can I integrate with Immutable?
It is possible to adapt the architecture and implementation of the Unreal SDK for use in your custom engine.
There are two main components involved: Game bridge (index.uasset) and platform-specific web browser implementations. All listed methods in the Supported Functionality section simply wrap their corresponding methods in the TypeScript SDK.
Game bridge
The index.uasset serves as a bridge between the Unreal SDK and the TypeScript SDK. To avoid duplicating logic, the Unreal SDK leverages the existing functionality of the TypeScript SDK by creating an interface that facilitates communication between them. This interface within the game-bridge
package enables the Unreal SDK to interact with the necessary TypeScript SDK packages (e.g. passport
, config
, x-provider
) using string-based communication. To integrate the TypeScript SDK packages with the Unreal SDK, the required TypeScript SDK packages and the game-bridge
package are bundled into a index.js
file and then converted into Unreal Engine asset file format index.uasset
. This file is parsed and then loaded into web browser view during runtime.
Web Browser
The Unreal Engine codebase provides developers with the WebBrowser module to run websites and the WebBrowserWidget
plugin to render those websites within your Unreal Engine project across a variety of platforms. However, each platform has its own web browser technologies utilised behind the scenes. You may find it helpful to refer to the following documentation for more information:
- Android: WebView.
- macOS and iOS: WkWebView.
- Windows: Chromium Embedded Framework.
WebBrowserWidget
plugin. More on that hereIn-app browser
On Android, iOS and macOS, an in-app browser is used for the Proof Key for Code Exchange(PKCE) flow as it is designed for single sign-on (SSO) purposes, making it a much more secure option (see this for more details).
- Android: Chrome Custom Tabs.
- iOS and macOS:
ASWebAuthenticationSession
.
Native code (Android, iOS, macOS) is written for each platform to launch the in-app browser from the Unreal SDK and handle deep linking into the game.
Adapting for Your Custom Engine
- Reuse the Index File: You can reuse our index file, but you may need to rewrite how it communicates with the web browser. This involves modifying the
callbackToGame()
function in the TypeScript SDK'sgame-bridge/index.ts
file. After making your changes, you must bundle and generate the index file (refer to our README) so that you can load it into your web browser. - Use the Passport Implementation as an example: You can adopt the Unreal Engine Immutable Passport implementations if you use C++. Additionally, you must adapt the communication between your custom engine and the web browser.
- Reuse PKCE Implementation: Most PKCE implementations can be reused as they are written in the platform's native languages. However, you must adapt the communication between your custom engine and the native code.
This is a brief overview of our architecture. You are encouraged to reuse our codebase to integrate with Immutable using your custom engine.
Why am I experiencing issues using the Xsolla plugin with the Immutable Unreal SDK?
The issue is known to occur with Unreal Engine 4.26 and 4.27. If you're encountering difficulties running the Xsolla plugin with the Immutable Unreal SDK and BLUI plugins enabled, it's due to a conflict between Chromium Embedded Framework browser processes. Our Immutable plugin requires the BLUI plugin to be enabled (you can find more details here). However, the Xsolla plugin also needs Chromium Embedded Framework to run and relies on Epic's WebBrowser module for that, which results in conflicts when both the Xsolla and BLUI plugins are used together.
My players in specific regions are encountering errors during login or while performing transfers. What regions does the Immutable Game SDK support?
The Immutable Game SDK supports only the regions that Immutable Passport supports.
Passport is a globally available product. However, our wallet infrastructure is subject to the regulation of the US Department of the Treasury’s Office of Foreign Assets Control (“OFAC”). OFAC administers and enforces comprehensive and targeted economic and trade sanctions programs on multiple countries and regions.
To learn more about the U.S. Treasury and the Office of Foreign Assets Control (“OFAC”), please visit their website.
Users attempting to access Passport in any of the regions under OFAC sanction will have their access blocked and will be unable to use our product. Additionally, components of Passport's infrastructure also rely on technology provided by Magic, which maintains further details regarding unsupported regions on their website here.