How to Implement Pixel Streaming with Unreal Engine on Azure?

How to Implement Pixel Streaming with Unreal Engine on Azure?

How to Implement Pixel Streaming with Unreal Engine on Azure?

#GameDev

#GameDev

#GameDev

Marketing & Growth

Published on November 6, 2024

Published on November 6, 2024

Published on November 6, 2024

Table of Contents

Pixel Streaming is changing how we experience high-quality, interactive 3D content over the web, eliminating the need for powerful local hardware. Powered by Unreal Engine, Pixel Streaming delivers smooth, graphically-rich applications to users, all via web browsers. Industries from gaming to real estate and education use this technology to offer immersive experiences without requiring users to install large files or own high-end devices.

One of the best ways to leverage Pixel Streaming is by hosting it on Microsoft Azure, a robust and flexible cloud platform. By deploying Pixel Streaming on Azure, you can take advantage of scalable resources, dedicated GPU-optimized virtual machines, and comprehensive networking and security configurations. Azure supports the intensive demands of Pixel Streaming and enables businesses to scale effortlessly as user demand grows. This guide walks you through setting up Pixel Streaming on Azure, from prerequisites to deployment and optimization.

Setting up Pixel Streaming on platforms like Azure can be complex, involving various configurations such as selecting the right GPU-optimized virtual machines, establishing secure networking, and implementing effective scaling strategies. Each step requires careful attention to ensure optimal performance and security.

Alternatively, Vagon Streams simplifies this process, allowing you to start streaming your content to thousands of users within seconds. With RTX-enabled NVIDIA GPUs and worldwide coverage through 21 data centers, Vagon Streams delivers low-latency, high-performance streaming without the hassle of intricate setups.

Understanding Pixel Streaming

Pixel Streaming is a powerful feature within Unreal Engine that streams real-time 3D graphics from a remote server to any web-enabled device. By offloading rendering to a server with GPU capabilities, Pixel Streaming allows high-performance visuals on devices that otherwise lack the resources to run them.

Key Components of Pixel Streaming

Pixel Streaming consists of several essential components that work together to deliver smooth, interactive 3D content:

  • Unreal Engine Application: The application itself, built in Unreal Engine, runs on a GPU-enabled server.

  • Signaling Server: Acts as an intermediary, managing WebRTC connections between the server and the client’s web browser.

  • Matchmaker Server: Distributes user connections across multiple signaling servers, which is useful for scaling and managing high traffic loads.

Common Use Cases for Pixel Streaming

Pixel Streaming is highly versatile and beneficial across industries where interactive, high-fidelity visuals are crucial. Here are some ideal scenarios:

  • Gaming: Allows players to experience high-quality games directly in their browsers without downloading or installing software.

  • Real Estate: Enables prospective buyers to tour properties virtually, exploring details in real-time without special hardware.

  • Training and Education: Offers immersive learning experiences where users interact with 3D models and simulations on any device.

Hosting on Azure allows you to leverage these benefits and scale the experience to support more users as needed.

Prerequisites

Before diving into the setup, make sure you have the necessary tools, accounts, and foundational knowledge. These prerequisites will ensure a smooth and efficient setup process.

Required Software and Tools

You’ll need specific tools to set up Pixel Streaming on Azure:

  • Unreal Engine (version 4.27 or later):

    • Install Unreal Engine, preferably the latest version (4.27 or above) to utilize the latest Pixel Streaming enhancements.

    • Familiarize yourself with the Pixel Streaming plugin in Unreal, as you’ll need to enable and configure it.

  • Microsoft Azure Account:

    • You need an Azure account with permissions to create and manage virtual machines, network configurations, and other essential resources.

    • Ensure a clear budget or spending cap to manage costs, as GPU-optimized resources can be resource-intensive.

  • Azure CLI:

    • Set up the Azure Command Line Interface (CLI) for simplified VM management and configurations.

    • The CLI allows you to automate parts of the deployment and execute commands to manage Azure resources efficiently.

Basic Knowledge Requirements

To make the most of this guide, it’s beneficial to have a foundational understanding of the following concepts:

  • Unreal Engine Project Setup and Packaging:

    • Be comfortable setting up projects in Unreal Engine and packaging them for deployment. This includes configuring project settings, packaging for Windows, and enabling necessary Pixel Streaming settings.

  • Azure Services and Virtual Machine (VM) Configurations:

    • Familiarity with Azure services, especially Virtual Machines, virtual networks, and load balancing, will simplify the deployment process.

    • Understanding GPU-optimized virtual machines (like NV-series) will help you select resources for running your Pixel Streaming application.

With these tools and foundational knowledge, you’re ready to begin configuring Azure resources, deploying Pixel Streaming components, and testing for optimal performance.

  1. Setting Up Azure Resources

To effectively deploy Pixel Streaming on Azure, it's essential to configure GPU-optimized Virtual Machines (VMs) and establish secure networking.

Creating GPU-Optimized Virtual Machines (VMs)

To handle the demands of Pixel Streaming, choosing suitable VM sizes is critical.

Selecting Suitable VM Sizes

Azure offers a range of GPU-optimized VMs tailored for rendering tasks. NV-series VMs are particularly well-suited for Pixel Streaming due to their NVIDIA GPU capabilities. For instance, the NVadsA10 v5-series VMs are powered by NVIDIA A10 GPUs and AMD EPYC CPUs, offering a balance of performance and cost-effectiveness.

Configuring VM Settings

Here are key settings to configure:

  • Operating System Selection: Choose Windows Server, like Windows Server 2019 Datacenter, to ensure compatibility with Unreal Engine and Pixel Streaming components.

  • Resource Allocation:

    • vCPUs and Memory: Allocate resources based on your application’s needs (e.g., NV6 VM offers 6 vCPUs and 56 GiB of memory for moderate workloads).

    • Storage: Use Premium SSDs for faster data access, which benefits rendering tasks.

  • GPU Configuration: Ensure that the selected VM includes necessary GPU resources. For example, NV6 VMs come with an NVIDIA Tesla M60 GPU.

Networking Configuration

Proper networking setup is crucial for secure and efficient communication between resources.

Establishing Virtual Networks and Subnets

  • Virtual Network (VNet): Create a VNet to enable secure communication between VMs and other Azure resources, isolating resources and providing control over network configuration.

  • Subnets: Organize resources by dividing the VNet into subnets (e.g., separate subnets for application servers and database servers).

Setting Up Network Security Groups (NSGs)

Use NSGs to control traffic flow:

  • Inbound and Outbound Rules: Define rules for essential traffic, like HTTP/HTTPS for web access and specific ports for Pixel Streaming.

  • Security Best Practices: Implement least privilege principles by only opening necessary ports. Regularly review and update NSG rules to maintain security.

  1. Deploying Pixel Streaming Components

With Azure infrastructure ready, the next step is to deploy the Pixel Streaming components: the Signaling Server and, if needed, the Matchmaker Server.

Signaling Server Setup

Installing and Configuring the Signaling Server

To set up the Signaling Server, follow these steps:

  • Installation:

    • Access the Azure VM via Remote Desktop Protocol (RDP).

    • Install Node.js, as the Signaling Server is a Node.js application.

    • Obtain the Pixel Streaming Signaling Server from the Unreal Engine repository or your project build.

  • Configuration:

    • Navigate to the Signaling Server directory and install dependencies using npm install.

    • Configure config.json to set parameters like listening port and security settings.

    • Start the Signaling Server with node server.js.

Ensuring Proper Communication

  • Firewall Settings: Allow inbound traffic on the specified Signaling Server port (commonly 80 or 8888).

  • Browser Compatibility: Test connection using WebRTC-compatible browsers (e.g., Chrome, Firefox).

Matchmaker Server Implementation

If handling multiple users, deploying the Matchmaker Service is essential.

Deploying the Matchmaker Service

  • Installation:

    • Install Node.js on a separate Azure VM.

    • Download Matchmaker Server code from the Unreal Engine repository.

  • Configuration:

    • Edit config.json to define available Signaling Servers and their URLs.

    • Start the Matchmaker Server with node matchmaker.js.

Configuring Load Balancing

  • DNS Configuration: Set up a domain that points to the Matchmaker Server’s public IP.

  • Scaling: Deploy additional Signaling Servers as user demand increases, updating the Matchmaker configuration accordingly.

By following these steps, you establish a robust infrastructure on Azure to support Pixel Streaming, ensuring scalability and optimal performance.

3. Configuring the Unreal Engine Application

Now that your Azure resources are set up, it’s time to configure the Unreal Engine application itself.

Enabling Pixel Streaming Plugin

Enable the Pixel Streaming plugin in Unreal Engine:

  • Activating the Plugin:

    • Open Unreal Engine, go to Edit > Plugins, and search for “Pixel Streaming.”

    • Check the box to activate the plugin and restart Unreal Engine if prompted.

  • Configuring Settings:

    • Go to Edit > Project Settings > Pixel Streaming to adjust settings like WebRTC frame rate, video bitrate, and resolution for an optimal balance of quality and performance.

Packaging the Application

To complete the Unreal configuration, package the application for Windows with the required settings for streaming.

  • Building for Windows:

    • Go to File > Package Project > Target Platform > Windows (64-bit) to ensure compatibility with Azure VMs.

    • Select File > Package Project > Windows to package the project with Pixel Streaming.

  • Adding Command-Line Arguments:

    • Use arguments like -PixelStreamingIP=<IP_ADDRESS> and -RenderOffScreen for smooth connectivity with the Pixel Streaming server.

4. Testing and Optimization

Testing and optimizing Pixel Streaming is essential for a smooth user experience.

Performance Testing

  • Assessing Latency: Test latency between the server and client browser to minimize delays.

  • Frame Rate Analysis: Use Unreal’s Performance Profiler or Azure tools to track frame rates, aiming for a consistent 30–60 FPS.

  • User Experience: Collect feedback on video quality and responsiveness.

Resource Monitoring

Use Azure’s monitoring tools to manage resources effectively:

  • Azure Monitor: Track CPU, GPU, and memory usage.

  • Application Insights: Monitor request patterns and detect anomalies.

  • Custom Alerts: Set alerts for high CPU usage or bandwidth spikes.

Scaling Considerations

Implement Azure’s autoscaling features:

  • Azure Autoscale: Configure autoscaling rules based on VM metrics.

  • Load Balancers: Set up load balancers to distribute user requests across VMs and configure health probes to monitor availability.

8. Security Best Practices

Security is critical in cloud deployments, especially for interactive applications.

Securing Connections

  • HTTPS: Use SSL/TLS certificates for secure HTTPS connections on Signaling Servers and load balancers.

  • WebSocket Secure (WSS): Encrypt WebSocket connections to protect data between the client and server.

Access Controls

  • Role-Based Access Controls (RBAC): Use Azure RBAC to define and manage permissions for different team members.

  • Network Security Groups: Regularly update NSG rules to allow only essential traffic.

Regular Maintenance

  • Azure Resource Updates: Keep VMs updated with the latest patches for performance and security.

  • Unreal Engine Updates: Update Unreal Engine and Pixel Streaming plugins periodically for optimizations and security patches.

  • Backup and Recovery: Set up a backup plan for Azure VMs and configurations using Azure Backup.

Experience Vagon Streams Now!

Setting up Pixel Streaming on Azure requires navigating various technical configurations, from choosing the appropriate GPU-optimized virtual machines to setting up secure networking and managing scaling to handle user demand. Each step demands careful planning and execution to ensure the best performance and robust security.

For those looking for a more streamlined solution, Vagon Streams offers a fast alternative, enabling you to broadcast your content to thousands of users almost instantly. Equipped with RTX-enabled NVIDIA GPUs and a network of 21 data centers worldwide, Vagon Streams delivers top-tier streaming performance with minimal latency, all without the complexity of traditional cloud setups.

Just login, upload your application and configure your preferences — and you're good to go!

Scalable Pixel and Application Streaming

Run your Unity or Unreal Engine application on any device, share with your clients in minutes, with no coding.

Scalable Pixel and Application Streaming

Run your Unity or Unreal Engine application on any device, share with your clients in minutes, with no coding.

Ready to focus on your creativity?

Vagon gives you the ability to create & render projects, collaborate, and stream applications with the power of the best hardware.

Run heavy applications on any device with

your personal computer on the cloud.


San Francisco, California

Run heavy applications on any device with

your personal computer on the cloud.


San Francisco, California

Run heavy applications on any device with

your personal computer on the cloud.


San Francisco, California

Run heavy applications on any device with

your personal computer on the cloud.


San Francisco, California