Skip to main content



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.

Add to project

Copy the ZLCloudPlugin into your project plugins folder. e.g. 'UnrealProject\Plugins\' and restart the editor

Check the plugin is enabled:

  1. In your project go to Editor->Plugins and enable the “ZeroLight OmniStreamUnreal Edit menuUnreal Plugins menu
  2. Restart Unreal Editor
  3. In Unreal 5.1+ the Pixel Capture plugin will also get enabled
  4. The OmniStream settings menu is added to the Editor interface here: Pmnistream settings menu

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

Pmnistream settings menu


The OmniStream Blueprint nodes can be found here:

Unreal Blueprints menu

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. Unreal Blueprints menu


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.


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.

ZLStream connection status delegates

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.

ZLStream receive data delegate

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.

ZLStream send data trigger

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.

ZLStream 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.

ZLStream State Events

To find out more about how state is managed click here.