Azure Marketplace - Unreal Engine Pixel Streaming

@jaspos, if you haven’t already, can you go into the Azure Portal and click on Subscriptions->[Your subscription]->Usage & Quotas left blade option, and then filter the region(s) and GPU SKU you want to increase the quota, and request the 12 cores there. If it doesn’t immediately come back with a successful message after 1-2 minutes (automated increases), can you choose the option to create a ticket and then Direct Message me here with that ticket# to help expedite you getting that quota?

Hey everyone, we just pushed a big update to Unreal Pixel Streaming on Azure. Documentation will come in the next couple weeks, but here are some of the bigger changes.

  • The folder structure of your uploaded packaged zip no longer matters. Wherever your Unreal .exe is stored in your package it will be launched automatically.

  • The name of the UE app does not need to be explicitly named. It will be automatically found.

  • This solution now supports Azure Spot VMs, which can provide significant cost savings if you’re okay having streams be evicted occasionally.

  • There was a bug that would sporadically not load some UE apps after an otherwise successful deployment. The stability of this has been improved.

  • You can now access detailed logs of all the VMs through the Log Analytics resource in the global resource group. Detailed documentation will be made for this.

  • The GPU VMs can now host up to 4 UE streams at once, although typical performance restraints still apply.

Hi, i am building server using pixel streaming.

when I connect to the traffic manager endpoint I just get; “All Cirrus servers are in use”. I zip file project: DemoProject.zip/Windows/DemoProject.exe. It is sample project of unreal engine. it run normally in local.

I don’t know the reason. I have a question. Now i have only quota in south east asia. with select region combobox, Do i need 2 quotas in 2 different regions or just choose one in south east asia?

If you have a working sample project, please send it to me. i am not unreal engine developer. Thank you everyone

Any region selected in that dropdown needs to have enough quota for the UE App VM size that was selected earlier. If you left it default, that would be a minimum of 12 vCPUs of the NVsv3 family type. If you didn’t have enough quota, you should have received a failure during deployment. It seems like something else is going on.

When you go into the resource group created for the region, it should have a “VMSS” scale set, and inside that VMSS there should be at least one instance running. You can add an RDP rule into the network security policy in order to access the instance directly and dig around.

There is also a new ability to look at logs. You can see if anything strange comes up there.

Also, make sure you’ve followed all the documentation and made sure that your app has the pixel streaming plugin enabled.

Hi .Phillips,

I deployed my server. DemoProject has pixel streaming plugin

in the log file I see they can’t connect to Cirrus. Can you tell me what could be the possible cause of these problems? I will check my system again

Thank you

Hello ,
I have the same issue, I looked at the log of the vmss creation and the creation process seems to grab WindowsNoEditor\Engine\Binaries\Win64\CrashReportClient.exe as the application for some reason than it copies it to the application root folder:
[02/03/2023 08:03:39] - Extracting App
[02/03/2023 08:04:13] - The first exe name found in the directory structure: CrashReportClient
[02/03/2023 08:04:14] - The file [c:\Unreal_1\WindowsNoEditor\CrashReportClient.exe] has been created.

That’s definitely a problem. Thank you for sharing those logs. We’ll get on a patch right away. As a temporary workaround you might be able to get away with removing all other exe’s from the zip, including the CrashReporter.

Hi everyone! I found a lot of problems with this implementation:

  1. Signalling Server is for Unreal 4.27, so all games in UE5 don’t work. If I use the config.json created with a 5.1 signalling server works fine (using TURN server .ps1).

  2. The VMSS have problems with Unreal 5.1 and DirectX 12. The drivers is old and there is a Popup advicing, but this stop the automatic runtime.

  3. Everytime the automatic procedure choice Go2Virtual-Shipping.exe instead Go2Virtual.exe to execute, so don’t launch…

Maybe you can fix this. I tried to edit the SCRIPT folder, and remplace the ZIP in my Account Storage with the idea this ZIP but seems to use a downloaded ZIP from somewhere with original files…
Please fix this problems! Some ideas to make a workarround?

Hi @LCDLV,

Thanks for reporting the issue with UE 5.1. This is due to the latest NVIDIA drivers needing to be updated for the cloud. NVIDIA has now posted these driver updates that UE5.1 requires, and the Marketplace solution will be updating the drivers to the solution in the near future. The update will be posted here when complete. Until then, you can either use UE versions earlier than UE 5.1, or you’d have to install the latest drivers on the signaling server on your own, until the base VM image is updated with the latest GRID 15.1 drivers (version 528.24). The updated drivers can be found here: https://learn.microsoft.com/en-us/azure/virtual-machines/windows/n-series-driver-setup. For the issue with the automated .exe choice, it will pick the first .exe and is sorted by name ascending alphabetically, assuming there was only one .exe to run, so in the meantime you could change the name of the wrong .exe being picked to a name that is higher in the sort, so the Go2Virtual.exe would be picked up instead. The older version used to require an exe name to be passed in, but was causing user errors for people putting in the wrong name, wrong directory, etc… and so by automatically picking the first .exe. that would naturally be in the exported folder, this was intended to make it easier with less parameters, though it sounds like some projects will have mutliple .exes required. Is the Go2Virtual-Shipping.exe used in the deployment by the Go2Virtual.exe, or as a separate exe not used to run the Pixel Streaming app?

Hello @LCDLV,

If you are looking for a solution to stream your application, you can try Vagon Streams. - Vagon | Streams - No code, interactive cloud streaming

Without the burdens of setting up a VM fleet for a pixel streaming experience, you can start streaming your application with no code.

You only need to upload your build and create your Stream link.

We also offer RTX-enabled performance options with the latest NVIDIA drivers to support the latest UE versions from 20+ regions around the world.

For more, you can check this thread, or directly contact me from serdar@vagon.io

We will be happy to help :raised_hands:

Hi! Thanks to answer.
I make a big workaround to make it work.

I created an C++ app (like a loader) and is the only EXE in the package. Other “exe” are renamed to “ex” with the idea the automated procedure don’t find and choice my laucher like the app to automaticly launch.
My c++ app launcher rename the “ex” to “exe”, then, run 3 signalling servers for 5.1 (placed in other folder). And last, run 3 instances of my ue app.
In the VMSS scale set I close the port 80-82 to avoid the 4.27 signalling servers reach the matchmaker, and open 90-92 to allow my 5.1 signalling servers reach the MM.
Eveything is working as spected, and automaticly.
When the VMSS machine starts, run my launcher, and the launcher start everything.

My problem NOW is the auto scalling. For some reason, when the 3 instances is in use, isn`t create a new VM instance.

The matchmaker is the original from the azure maketplace app. The VM with matchmaker is not tweaked at all.

In my CONFIG.JSON of every UE 5.1 Signalling Server, I edited and add some of the extra parameters from the CONFIG.JSON of 4.27 version automated created for the azure app.

What can I do to make the autoscale works??

Other problem is my Unreal App connect to my multiplayer server, and all is replicated fine, but Internet not work to see pages with Webbrowser plugin or to load the avatars from Ready Player Me…

Hope you can helpme.
Thanks!

The deployment doesn’t work for me. The item RegionalDeployment gives an error, which is too long for Azure to display. So I’m completely stuck.

Hi there.

I’m currently facing two issues while deploying my “pixel-streamed” app on azure using customized SignallingServer and MatchMakerServer frontends, and I was hoping that someone here may be able to help.

  • Issue #1 : The unreal app is not running on the VMs

When looking at the logs within C:\gaming\logs I can see the following messages inside the setupVMSS-output log file:

[04/13/2023 13:44:52] - Extracting App
[04/13/2023 13:45:31] - The first exe name found in the directory structure:  turnserver
[04/13/2023 13:45:31] - The file [c:\Unreal_1\WindowsNoEditor\turnserver.exe] has been created.

Then this in the startVMSS-output log file:

[04/17/2023 01:55:05] - startingVMSS
[04/17/2023 01:55:05] - current folder: C:\Unreal_1\WindowsNoEditor\
[04/17/2023 01:55:05] - PixelStreamerExecFile: C:\Unreal_1\WindowsNoEditor\turnserver.exe

This turnserve.exe is not part of my zipped content but it get somehow added when the app get’s initially deployed or updated. It then get executed in-place of my unreal app which is obviously not what we want. Any idea how it got added and how to avoid it ?

  • Issue #2 : Can’t update the content from the dashboard

This one is weird because I am sure that I was able to do it before, but this is the current look of my dashboard:

I can’t upload new blob and I don’t have the “Application Name” field anymore, like shown in the unreal documentation:

image

I’m fairly sure I was able to use the dashboard to update my content in previous test but somehow it doesn’t work anymore with this deployement. Is it possible that this change of behavior is coming from the fact that I checked the box “I have customized the matchmaker and signaling servers” ? Any idea would be welcomed.

Thanks !

Hi! About #1 you need to delete all EXE files except the one who launch the app. If your game developed on UE5 you will have problems with the Signalling Server (because it’s for 4.27).

Hi.
This turnserver.exe is not part of my zipped package. It gets added somehow when the zip get’s deployed to the VM’s. I don’t know how and I don’t know how to prevent it.
Sure I could remote into each VM’s and delete it and update the startup job but it’s not practical and not feasible when autoscale is enabled anyway.

#1
I’ve finally figured out where the turnserver.exe where coming from.
The setup.bat inside my SignalingServer were creating that file within its folder hierarchy.
Them the Azure’s powershell script looking for the unreal app was finding this turnserver.exe deep in the hierarchy and copied it at the Root of the project.

#2
I also managed to upload new content version through the Azure storage container directly, so that is working too.

Problem solved so far

What UE version you use?

Heya,
Firstly, thanks for the Marketplace app it’s great!

I’m wanting to set some environment variables and also install missing AWS certificates on the Azure VMs that are spun up by the Pixel Marketplace App, can I provide a custom image for the VMs that has all my required changes, or is there another recommend approach?

  • Baz

Hi @RTRBaz,

The Marketplace app has an option on the Basics tab to choose a custom image that you can use, instead of the baked image used by default. Mouse over the info icon to learn more about what needs to be on there (i.e., needs to be Windows Server 2022 for UE5 DirectX 12 Agility support, nodeJS and UE Prereqs installed, unzipped app in c:\app\ folder, etc…). This will allow you to save deployment time as you won’t need to download the zip and extract each for each deployment and scale out.

1 Like

Heya, I made a generalized Image which I stored in the Compute Gallery from a VM which has a modified EpicStudio’s “Unreal Engine” from the marketplace. I installed node, my client and the prereqs and “Capture” 'd the Image from the VM and I get the following error:

{
“code”: “DeploymentFailed”,
“message”: “At least one resource deployment operation failed. Please list deployment operations for details. Please see Deployment history - Azure Resource Manager | Microsoft Learn for usage details.”,
“details”: [{
“code”: “VMMarketplaceInvalidInput”,
“message”: "Unable to deploy from the Marketplace image or a custom image sourced from Marketplace image. The part number in the purchase information for VM ‘/subscriptions/020359ad-f57c-4572-8f45-0e51463b4700/resourceGroups/ahbuz-australiaeast-unreal-rg/providers/Microsoft.Compute/virtualMachineScaleSets/ahbuzvmss-australiaeast/virtualMachines/ahbuzvmss-australiaeast_0’ is not as expected. Beware that the Plan object’s properties are case-sensitive. "
}, {
“code”: “VMMarketplaceInvalidInput”,
“message”: "Unable to deploy from the Marketplace image or a custom image sourced from Marketplace image. The part number in the purchase information for VM ‘/subscriptions/020359ad-f57c-4572-8f45-0e51463b4700/resourceGroups/ahbuz-australiaeast-unreal-rg/providers/Microsoft.Compute/virtualMachines/ahbuz-mm-vm-australiaeast’ is not as expected. Beware that the Plan object’s properties are case-sensitive. "
}]
}

Any ideas what could be causing this? Thanks!