Overview

Prerequisites

  • A game developed in Unreal Engine 5.0
  • PureWeb React web client template and SDK version 3.13.5 or later

NOTE: If you are using Unreal 4.27, click here.

Limitations

The release of UE5 has introduced some challenges related to resizing and collaboration in Pixel Streaming. Unfortunately, due to these changes, the resizing capabilities provided by our Unreal 5 plugin are not equivalent to what is present in our Unreal 4.27 plugin.

Resizing: Epic’s Pixel Streaming plugin in Unreal 5 has dropped support for dynamic resizing of the pixel stream.  The underlying mechanism that our plugin called to resize the game (PixelStreamingWebRTCDisableResolutionChange) no longer works.  We've been in touch with the dev team at Epic and learned that they removed this functionality due to instability. They're working on an improved API for resizing which should ship with UE 5.1.  Until 5.1 is released, the game will stream to the browser at whatever resolution the game was initialized at.

  • While Epic does provide their own r.setres command, this does not work correctly in our on-demand environment.  In order to aid in this, we’ve introduced two new sizing command line arguments in our Unreal plugin:
    -PixelStreamingResX=1920 -PixelStreamingResY=1080.
  • These arguments will allow you to set the initial size of your stream when your model launches.  However, because UE5 only propagates resolution changes into Pixel Streaming one time (during initialization), subsequent calls to resize the pixel stream (i.e. from the browser) do not currently work.
  • You can add these command line arguments under the Runtime Customizations section of your Model Details screen in the PureWeb console.

SDK & Collaboration: Changes in UE5 have necessitated a new platform SDK (v3.13.5) to ensure that streaming works for hosts and collaborators correctly, so upgrading your client SDK to this version or higher will be required.

For full details on our UE5 plugin please refer to our release notes page.

Prepare Your Unreal Project For Cloud Deployment

Create a C++ Class If Necessary

Currently, the PureWeb plugin will only successfully be built into your project if your project contains at least one C++ file. If you already have some in your project, then you can skip to the next step.

If you do not have any C++ files in your project, creating a single empty C++ class in the Unreal Editor will be sufficient.

From the menu bar, click Tools/New C++ Class, then give your class a name and click the "Create Class" button.

NOTE: You will likely need to close and reopen the project and allow the Unreal Editor to rebuild the project before continuing with the next step.

Add the PureWeb Plugin

In order to properly stream your game through PureWeb Reality, you’ll need to download the latest version of the PureWeb Platform Unreal plugin.

Browse to the project folder for your game, and in the folder that contains [ProjectName].uproject create a folder called Plugins if one doesn’t already exist.

Unzip the PureWeb Platform plugin, putting the PureWeb folder into the Plugins folder from the previous step. You should have a folder structure that resembles the following:

[ProjectFolder]\
	[ProjectName].uproject
    Plugins\
    	PureWeb

The PureWeb Platform Plugin should now show up in the list of installed plugins. Make sure that the box next to Enabled is checked. You may need to close and reopen your project for the PureWeb Platform Plugin to become visible.

NOTE: When you add our plugin, it will also enable Unreal's built-in Pixel Streaming plugin.

Add the PureWeb actor to your scene

In the Content Browser, click on PureWeb Platform Plugin Content and drag the PureWebActor into the scene.

Note: If you do not see the PureWeb Content in the Content Browser, click on "Settings" in the top right of the content browser and enable "Show Plugin content".

Configure the in-game mouse pointer

Pixel Streaming through the PureWeb Platform works best when the cursor is rendered locally only. The default used by the Unreal Pixel Streaming Plugin is to render a remote software cursor, but we want to set this cursor to None in the Pixel Streaming Configuration before packaging.

Open the Project Settings window and scroll down to PixelStreaming under the Plugins heading. Change the setting for Pixel Streamer Default Cursor Class Name to None.

For most projects, you will want to configure your Viewport to only capture during mouse down. The Default Viewport Mouse Capture Mode setting is found under Engine - Input\Viewport Properties in the Project Settings window.

Disable Motion Blur

Motion blur affects the performance of the stream negatively, putting unnecessary load on the server without little or no gain on the client side so we recommend disabling it.

The Motion Blur setting can be found under Engine - Rendering\Default Settings in the Project Settings window.

Enable “Hardware Video Decoder”

When playing back full motion video (FMV) in your project you may want to activate Hardware Accelerated Video Decoding. Although currently experimental, enabling this feature reduces the strain on the CPU.

To use this, enable the Hardware Accelerated Video Decoding (Experimental) setting in the Plugins - WMF Media section of the Project Settings window.

Package Your Project

Package your project for Windows only, and please do not use spaces in your folder or file names.

We recommend using the default Windows compression tool to zip your game package prior to uploading it to your console account.

The folder structure of the zip file should look similar to this:

[ProjectName.zip]
	Engine/
    Source/Programs/PixelStreaming
	[ProjectName]/
    [ProjectName.exe]
Unreal Package Folder Structure
Note: In some cases the Source/Programs folder might not be created and the PixelStreaming folder will be created elsewhere (such as Samples). Provided the PixelStreaming folder is present, the game package should function correctly on our platform.

Next Steps

Now that your project is configured and packaged you’re ready to: