Unreal
Supported Versions: Unreal 5.1, Unreal 5.2, Unreal 5.3
How to install
Plugin Installation
The plugin is currently only available to ZeroLight partners. To become one, get in touch here. If you are a ZeroLight partner, please follow the instructions here.
Project Setup
Add the ZLCloudPlugin to your project via the marketplace or copy directly into your project folder.
Copy the ZLCloudPlugin into your project plugins folder. e.g. 'UnrealProject\Plugins\' and restart the editor
Check the plugin is enabled:
- In your project go to Editor->Plugins and enable the “ZeroLight OmniStream”
- Restart Unreal Editor
- In Unreal 5.1+ the Pixel Capture plugin will also get enabled
- The OmniStream settings menu is added to the Editor interface here:
Key Bindings
For security reasons, OmniStream does not pass through all input from the web broweser, keys have to be explciitly enabled in the plugin settings. A selection of standard keys (WASD etc.) are inclided by default, these can be removed or extra keys added in the Filtered Key List. To find out the ASCII keycode for a key you wish to use, use an online tool such as https://keycode.info/.
Blueprints
The OmniStream Blueprint nodes can be found here:
The file GameModeBase_OmniStreamExample.uasset contains an example game mode blueprint showing how to correctly use OmniStream functions.
Make sure you have "Show plugin content" enabled, this is found in the Content Browser settings.
Connected
ZeroLight Omnistream Delegates → On Connected Stream
Triggered when a user connects to a stream. This is where the experience should be started, into camera sequences triggered, onboarding information displayed etc.
Disconnected
ZeroLight Omnistream Delegates → On Disconnected Stream
Triggered when a user disconnects from a stream for any reason (e.g. browser close, connection drop). This is where any cleanup/resetting of the experience needs to be done, so the experience is ready when the next user connects. When debugging locally the OmniStream systems that normally call this do not run, to simulate this from the browser, call cloudstream.disconnect()
from the browser console.
Receive Data
ZeroLight Omnistream Delegates → On Receive Data
Where messages sent from the web page hosting the stream are received. The content of these messages is JSON data, but the schema for the data is not defined by ZeroLight and can be used for whatever data makes sense for your experience. Examples might include UI that is outside of the stream, or for the user to pass some custom text to the experience.
Send Data
ZeroLight Omnistream Send Data → Send Data
Where messages can be sent to the web page hosting the stream. As with Receive Data the content of the messages is an open JSON schema. This can be used to let the web page hosting the stream know something has happened in the experience.
State Management
ZeroLight Omnistream State → Process State
Upon receiving data from the web page the JSON should be sent into the state manage to process the state.
Once the state is processed successfully, the "Get Requested State Value" function is used to query if the string key for that command should be processed and the necessary action taken.
To find out more about how state is managed click here.