NOTE: We strongly encourage you to use Unreal 4.27, but if you need to stick with 4.26 please follow the guide below.
Best Practices for Online Distribution
For all projects built in Unreal, follow these steps to ensure your project is optimized for pixel streaming distribution at scale.
- Reduce package size
- Optimize performance
- Check run state
- Test loading time
Reduce Package Size
Before preparing your project for cloud deployment it’s important to optimize your game and reduce the file size if possible. AWS instances used within the PureWeb Reality platform have limitations on the maximum file size.
Keep the file size below 50GB, ideally 5GB or less.
Smaller project files result in shorter load and startup times (the time it takes for the stream to start once a user has connected to a cloud hosted session) and transfer times (copying projects to instances as part of scaling operations), which improves the overall end user experience.
We strongly recommend following the Reducing Packaged Game Size guide by Epic Games.
The base performance of the game is the single most important factor for a high-quality streaming experience. A fine-tuned and optimized project will support a greater number of concurrent users per server which can significantly reduce costs. It will also improve the frame rate resulting in a more compelling streaming experience.
See the Performance Guidelines for Artists & Designers guide by Epic Games for suggestions on optimizing your project.
Check Run State
Ensure that your game runs from a clean state on every launch, and does not require configurations or other data to be written to the local file system.
In a cloud streaming environment, different users will be accessing a game on a given cloud instance. To ensure that each user has the same experience, it is necessary that the game does not make any changes on the local file system as this may impact the experience of successive users.
Test Loading Time
Ensure the project enters the Default Loading Phase within 60 seconds or less.
To provide your on-line users with a good experience you ideally want the project to load to an initial screen in under 20 seconds. This will also ensure that various system/network timeouts are not reached when loading the project.
For more information about loading phases see the ELoadingPhase::Type | Unreal Engine Documentation.
Prepare Your Unreal Project For Cloud Deployment
- Install & enable the PureWeb plugin
- Enable & Configure Pixel Streaming settings
- Configure the in-game mouse pointer
- Disable Motion blur
- Enable “Hardware Video Decoder” (optional)
- Package your game
Install & Enable 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
Open your project in Unreal Editor and click Edit > Plugins from the menu bar. The PureWeb Platform Plugin should now show up in the list of installed plugins. Make sure that the box next to Enabled is checked.
Enable & Configure Pixel Streaming Options
While still in the Plugins window, find the Pixel Streaming plugin under Built-In\Graphics and make sure that the box next to Enabled is checked.
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
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 several C++ files in your project, then no changes are required. If you do not have any C++ files, creating a single empty C++ class from within the Unreal Editor will be sufficient.
Package your project for Windows only, and please do not use spaces in your folder or file names.
The folder structure of the zip file should look as follows:
Now that your project is configured and packaged you’re ready to: