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. 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.
Below are references to Pixel Stream Unreal Engine 5.2 on AWS (Windows) by Eagle 3D Streaming. For Linux, check out this Ubuntu guide from the Amazon Game Tech Team.
Choosing an AWS EC2 Instance Type
The recommended instances are G4 and G5 under Accelerated Computing. G4 instances which 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 and can deliver up to 3x better performance than G4.
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.
Region | OS | Instance name | On-Demand hourly rate |
US East (Ohio) | Windows | g4dn.xlarge | $0.71 |
US East (Ohio) | Windows | g4dn.2xlarge | $1.12 |
US East (Ohio) | Linux | g4dn.xlarge | $0.526 |
US East (Ohio) | Linux | g4dn.2xlarge | $0.752 |
Asia Pacific (Singapore) | Windows | g4dn.xlarge | $0.92 |
Asia Pacific (Singapore) | Windows | g4dn.2xlarge | $1.42 |
Asia Pacific (Singapore) | Linux | g4dn.xlarge | Not available |
Asia Pacific (Singapore) | Linux | g4dn.2xlarge | Not available |
On-Demand Pricing here. Using Linux over Windows reduces costs.
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
- Add TCP and UDP port Inbound Rules in Windows Defender Firewall with Advanced Security.
- Run
get_ps_servers.bat
in Samples > PixelStreaming > WebServers - Run
Start_WithTURN_SignallingServer
with PowerShell in Samples > PixelStreaming > WebServers > SignallingWebServer > platform_scripts > cmd - Run the Unreal Engine .exe with arguments
-PixelStreamingIP=localhost -PixelStreamingPort=8888 -RenderOffScreen
.
Further reading
- Deploy Unreal Engines Pixel Streaming at scale on AWS (2023) by Jishnu Dasgupta and Aditi Bhargava [link]