Getting Started

Preparing your Unreal Engine project

Scalable Pixel Streaming is compatible with the Pixel Streaming plugin shipped with Unreal Engine 4.27 onwards. Older versions of UE are not compatible with SPS.

Supported UE versions

We follow the same convention for supporting UE versions as the official Pixel Streaming Infrastructure. We ensure that SPS is compatible with the three latest major releases of Unreal Engine and their respective minor releases. Note you are still able to deploy UE projects created using older versions of the Engine with SPS, however, we will not be supporting these versions with bug fixes, or testing them for compatibility during our release schedule. Current UE schedule:

Branch Status Definition
UE5.4 Current Latest major version of UE. We are supporting this version with bug fixes.
UE5.3 Supported We are supporting this version.
UE5.2 End of life We are currently supporting this version, but only until the next major UE version releases.
UE5.1 Unsupported We are not supporting this version.
UE5.0 Unsupported We are not supporting this version.
UE4.27 Unsupported We are not supporting this version.

Enable the Pixel Streaming plugin in your project

Refer to the official Unreal Engine documentation to learn more about the Pixel Streaming plugin.

  1. Open your UE project, navigate to the Edit > Plugins tab and search for the Pixel Streaming plugin.
  2. Enable the Pixel Streaming plugin (not the Pixel Streaming Player), and click “Restart Now” to apply the changes.
Enable the Pixel Streaming plugin
Enable the Pixel Streaming plugin

Package your project

Tip: You can cross-compile projects for Linux from a Windows machine by installing and utilizing the cross-compile toolchain. This might be beneficial if you develop on a Windows machine, but your chosen cloud provider doesn’t support Windows containers.

Packaging for Linux

Follow the steps in the official UE documentation to package your project. When deploying a project to SPS for the first time, we suggest packaging in development mode, as it provides more verbose crash logs, which are useful for troubleshooting any teething issues that the project might have. Once the project is thoroughly tested and stable, re-package it in shipping mode for better performance and re-deploy.

Tip: You can enable logging in shipping mode by modifying the project target file. Note, however, that it is less verbose than development.

Your project is now ready to be containerized.

Packaging for Windows

Note that Windows containers are not supported on all cloud platforms (currently only supported on AWS).

1. Open your UE project, navigate to the Edit > Plugins tab and search for the Windows Movie Player plugin.

2. Disable the plugin and restart the project if prompted. Note this is required as Windows Media Foundation is not present in the version of Windows Server Core used for our Windows containers.

Disable Windows Movie Player plugin
Disable Windows Movie Player plugin

3. For projects in Unreal 5.0 or newer, disable CEF (Chromium Embedded Framework) and any CEF-based plugins if you use them (Note that none are enabled by default).

4. If your project is a blueprint project, you will need to convert it to a C++ project. To do this, navigate to Tools > New C++ Class > Leave type as None > Proceed to Create. Accept all prompts to restart the Editor, rebuild the project, and recompile assets. This should create the .target.cs file required in the next step.

5. Locate the YourProjectName.target.cs file in your project folder (note that this is not the YourProjectName**Editor**.target.cs) and add the following code to the public class:

		// This instructs UBT to build an additional executable with the CONSOLE subsystem
		bBuildAdditionalConsoleApp = true;
		
		// This enables log output in builds packaged in the Shipping configuration, which is handy
		// if you don't want to package in the Development configuration just to see log output
		bUseLoggingInShipping = true;

A modified file will look like this:

using UnrealBuildTool;
using System.Collections.Generic;

public class MyProjectTarget : TargetRules
{
	public MyProjectTarget(TargetInfo Target) : base(Target)
	{
		Type = TargetType.Game;
		DefaultBuildSettings = BuildSettingsVersion.V2;
		ExtraModuleNames.AddRange( new string[] { "MyProject" } );
		bBuildAdditionalConsoleApp = true;
		bUseLoggingInShipping = true;
	}
}

You can learn more about this requirement in this article: offscreen rendering in Windows containers.

5. Follow the steps in the official UE documentation to package your project. When deploying a project to SPS for the first time, we suggest packaging in development mode, as it provides more verbose crash logs, which are useful for troubleshooting any teething issues that the project might have. Once the project is thoroughly tested and stable, re-package it in shipping mode for better performance and re-deploy.

Tip: You can enable logging in shipping mode by modifying the project target file. Note, that it is less verbose than in development mode.

6. Your project is now ready to be containerized.