Pixel Streaming allows users to interact with Unreal Engine apps through the web browser. No need to install anything on desktop or mobile. Just send a web link to someone, and they can access the app. Here is an example I prepared for Architectural Visualization. 3D models are from the Marketplace. The pixel streaming server is running on AWS:

Advantages and Disadvantages of Pixel Streaming

Advantages:

  • Accessibility. No need to download and install an app. Just send a web link, and a user can interact with the app. Even low-end devices can interact with graphics intensive apps.
  • Compatibility. Apps can be accessible to multiple platforms without the need to make separate builds for each.
  • Scalability. On managed cloud platforms such as AWS, you can configure pixel streaming instances to open and shutdown according to the user demand.

Disadvantages:

  • Latency. Some apps that require quick interactions such as competitive games are not suitable for pixel streaming.
  • Network Bandwidth. You need a reliable connection to transmit high-quality graphics data across.
  • Costs. In my example, running a g4dn instance on AWS Asia Pacific region costs $0.92 (₱54.00) or more per hour. Having a large number of users interacting with separate pixel streaming instances can be very expensive. Might be best to find alternatives to AWS.

Industries that involve 3D visualization and simulation can take advantage of pixel streaming. My example in the video showcases ArchViz. You can also use this for product visualization, interior design, automotive customization, client presentations, etc.

Pixel Streaming on AWS

Below are steps to set up Pixel Streaming on a Windows EC2 server. For Linux, check the end of this post.

There’s also Pixel Stream Unreal Engine 5.2 on AWS (Windows) by Eagle 3D Streaming. if you prefer a video format.

Choosing an AWS EC2 Instance Type

The recommended instances are G4 and G5 under Accelerated Computing. G4 instances that are optimized for machine learning and graphics-intensive workloads. G4dn uses NVIDIA T4 GPUs while G4ad uses AMD Radeon Pro V520 GPUs. On the other hand, G5 instances are a tier higher than G4. They use NVIDIA A10G Tensor Core GPUs than can, according to AWS page, “deliver up to 3x better performance than G4dn”. However, PassMark benchmarks tell a different story:

benchmarks
PassMark – G3D Mark

As you can see, Tesla T4 performs the same as an RTX 3050 6GB (which is like a GTX 1060) while an A10G is somewhere between a 3060 and a 3060 Ti.

It is recommended to use G4dn for Unreal Engine Pixel Streaming because:

  • It strikes the balance between performance and cost
  • NVIDIA GPUs have optimized support for features like Raytracing, Nanite, and Lumen.
  • Better availability than G5 in certain regions of the world.

Try experimenting with G5 instances as well if available in your region. Use online tools to check which AWS regions offers the least latency for your target location [1] [2] [3] [4].

RegionOSInstance nameOn-Demand
hourly rate
US East (Ohio)Windowsg4dn.xlarge
g4dn.2xlarge
g5.xlarge
g5.2xlarge
$0.71
$1.12
$1.19
$1.58
US East (Ohio)Amazon Linux 2023g4dn.xlarge
g4dn.2xlarge
g5.xlarge
g5.2xlarge
$0.526
$0.752
$1.006
$1.212
US East (Ohio)Ubuntu Prog4dn.xlarge
g4dn.2xlarge
g5.xlarge
g5.2xlarge
$0.533
$0.766
$1.013
$1.226
Asia Pacific (Singapore)Windowsg4dn.xlarge
g4dn.2xlarge
g5g.xlarge
g5g.2xlarge
$0.92
$1.42
Unavailable
Unavailable
Asia Pacific (Singapore)Amazon Linux 2023g4dn.xlarge
g4dn.2xlarge
g5g.xlarge
g5g.2xlarge
$0.736
$1.052
$0.5877
$0.778
Asia Pacific (Singapore)Ubuntu Prog4dn.xlarge
g4dn.2xlarge
g5g.xlarge
g5g.2xlarge
$0.743
$1.066
$0.5947
$0.792
Amazon EC2 On-Demand Pricing (Nov. 2024)

A few more notes:

  • Using Linux over Windows reduces costs.
  • There are no g5 instances available in Singapore. Instead, there are g5g instances that are powered by AWS Graviton2 processors and NVIDIA T4G Tensor Core GPUs. These appear to be cheaper than the g5 counterparts but are optimized for Android game streaming.

Request G and VT instances quota increase

Newly created AWS accounts cannot create g4dn instances because the default quota is 0 vCPUs. You need to go to the Service Quotas section of the console and request an increase from AWS Support. Try 4-8 vCPUs as a starter.

Installing NVIDIA drivers

Documentation link. Two options: GRID drivers or NVIDIA gaming drivers. Let’s use the GRID drivers.

Download the drivers and the NVIDIA GRID Cloud End User License Agreement from Amazon S3 to your desktop using the following PowerShell commands:

$Bucket = "ec2-windows-nvidia-drivers"
$KeyPrefix = "latest"
$LocalPath = "$home\Desktop\NVIDIA"
$Objects = Get-S3Object -BucketName $Bucket -KeyPrefix $KeyPrefix -Region us-east-1
foreach ($Object in $Objects) {
$LocalFileName = $Object.Key
if ($LocalFileName -ne '' -and $Object.Size -ne 0) {
    $LocalFilePath = Join-Path $LocalPath $LocalFileName
    Copy-S3Object -BucketName $Bucket -Key $Object.Key -LocalFile $LocalFilePath -Region us-east-1
}
}

Add a new profile

In the Using AWS Credentials docs, go to Managing Profiles to add a new profile:

Set-AWSCredential `
                 -AccessKey AKIA0123456787EXAMPLE `
                 -SecretKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY `
                 -StoreAs MyNewProfile

Running the Pixel Stream

  1. Add TCP and UDP port Inbound Rules in Windows Defender Firewall with Advanced Security.
  2. Run get_ps_servers.bat in Samples > PixelStreaming > WebServers
  3. Run Start_WithTURN_SignallingServer with PowerShell in Samples > PixelStreaming > WebServers > SignallingWebServer > platform_scripts > cmd
  4. Run the Unreal Engine .exe with arguments -PixelStreamingIP=localhost -PixelStreamingPort=8888 -RenderOffScreen.

Use an Elastic IP Address

The instance’ Public IP address keeps changing when you stop/start it. You need to get allocate an elastic IP address to remedy this. Don’t forget to release it after testing because elastic IPs have a cost per hour.

Custom Domain Name and SSL Certificate

So you’ve got the pixel streaming set up, but now you want to use a custom domain name and get HTTPS working. There are several ways to go about this. For testing, I use a domain I purchased from Namecheap, and I also use Namecheap BasicDNS, AWS Certificate Manager, and EC2 Load Balancer as instructed in this video. Another approach is to use Route 53 for DNS Management. Look here.

namecheap-basic-dns

AWS Gives a free SSL certificate if you use the Load Balancer.

Pixel Streaming on Linux

A Linux server has better price/performance ratio than a Windows server.

Use Cross-compilation to work on Windows while targeting Linux. Be sure to restart your computer after installing the toolchain. Make sure to include LinuxArm64 under TargetPlatforms in the .uproject file if you’re planning to deploy on Graviton2 instances. Otherwise, the option to package a build for LinuxArm64 will be missing.

"TargetPlatforms": [
	"Android",
	"IOS",
	"Linux",
	"LinuxArm64",
	...
        ...
]

Ubuntu

Read this Ubuntu guide from the Amazon Game Tech Team.

Amazon Linux 2023

As of this writing, Amazon Linux 2023 does not support GUIs, but might do so in the near future. As an alternative, Amazon Linux 2 has an AMI with MATE desktop environment pre-installed [link] and is also supported by Amazon DCV [link]. Manual installation here.

VR Pixel Streaming

It is possible to pixel stream VR by following the instructions in the docs, but I do not recommend it given that it is still an experimental feature. Furthermore, the latency is too high. I personally felt sick after doing a few tests. Previously, VR pixel streaming had an HMD convergence issue [link] [link], but this seems to have been fixed in the latest UE 5.4 version.

-PixelStreamingIP=localhost -PixelStreamingPort=8888 -RenderOffScreen -PixelStreamingEnableHMD

Don’t forget to close remote desktop when testing. This affects the stream performance and can cause latency.

What next?

The next steps depend on your project. You can set up a frontend server that receives user requests, call a matchmaker server, and spin more pixel streaming servers based on demand.


Send me a message.


Recent posts: