Azure Marketplace - Unreal Engine Pixel Streaming

Hey @Stephen.Phillips , wondering if there is any progress with the UE5.1 issues posted by @LCDLV? @DigitalHamptons mentioned an update was on the way, is there any progress on this?

Did you ever fix this? I was getting the same error then I tried a different image as a base for creating mine now I’m getting the error: “Creating a virtual machine from a non-Marketplace image does not need Plan information. Please remove the Plan information from VM ‘XXX’. (Code: VMMarketplaceInvalidInput)”

@Darcy_vdD nope I didn’t manage to resolve it, I spent awhile trying different images with no luck. We’ve had to apply a workaround to install AWS certificates in the SignallingSever code.

We also spoke to Microsoft about the issue and they said “Ask Epic”

Hello,

All of our VMs recently spawned seems to ignore our custom domain settings. Older VMs in the same VMSS seems to work just fine.
After investigation, it looks like the newer VMs use a new azure-cli version which is incompatible with some commands inside the startVMSS.ps1 script.

This is quite a pressing issue as we can’t deploy with custom domains anymore !

One command causing issue is at line 142 in startVMSS.ps1
az vmss nic list --vmss-name $vmssName -g $resourceGroup --query "[].ipConfigurations[?privateIpAddress=='$privateIpAddress'].[publicIpAddress.id][0][0]" | ConvertFrom-Json where the publicIpAddress got renamed publicIPAddress in newer version of azure-cli.
The breaking changes seems to have come with azure-cli 2.46.0.

It is worth noting that the workaround we are planning is gonna be unnecessary complicated, mainly because:

  • We can’t easily update those azure scripts. It would be very convenient to be able to use custom scripts the same way we can provide custom servers.
  • ‘Use a custom image’ don’t seems to work, or at least we and other people on this forum haven’t been able to use it.

Hi everyone. Thanks for your patience. We have updated the marketplace products to support 5.1 and 5.2 now. We will work on properly documenting the Custom Image workflow, but hopefully in the meantime it is no longer necessary for most users.

We’ve also improved detection of the .exe to avoid some errors when the app was not inside a “Windows” subfolder. There may be an outstanding issue with Shipping builds where the wrong .exe is grabbed (ProjectName-Win64-Shipping.exe), so it’s safest to use a development build.

Thanks for bringing this to our awareness. We will take a look.

This is great news! This is live in the marketplace now?

Yes, the VM image and the template used to launch from the marketplace have both been updated. Doing a new deployment will reflect all changes.

You may have received a notification that the VM image being used in the current deployment is deprecated. Users with active deployments should do a fresh deployment before August to make sure the deprecation goes smoothly and you can leverage the latest changes.

I have made a deployment with the updated template, however I am getting the “Starting connection to server, please wait” message/screen and it never progresses. In the console I am continually getting new “logged aggregated metrics to Application Insights” console logs and that’s it, eventually it times out and resets/restarts connection.

Is there something I may have done wrong in my app that could cause this?

Here is the documentation on how to check those logs. I recommend using the search function for “zip” or “exe” and making sure it was able to correctly identify and unzip the app.

You can also add an RDP rule to the Network Security Group so you can remote desktop into the problematic instance and see what it looks like locally. If it appears to be operating okay but the stream doesn’t connect, you definitely need to set up a TURN service and provide the credentials for that in the Networking tab. Many corporate networks don’t allow WebRTC connections to be made directly, which is the default behavior.

Hi Stephen. Thanks for the update.
Do you have a preference for the way we report bugs and issues related to the Azure Marketplace PixelStreaming ? We have a couple of workaround for bugs that would probably benefits everybody if fixed on your side.
I’m happy to list and details them here if that’s preferable for you, but it’s not super convenient for tracking on our side.

Hi @Stephen.Phillips ! Today I created a new enviroment and the signalling server stay in 4.27:

From log:
Running Cirrus - The Pixel Streaming reference implementation signalling server for Unreal Engine 4.27.

Also, I noted my game is rebooting, even I tick the checkbox Allow commands, but still rebooting…

And the most important, it’s not working:

Starting connection to server, please wait…

The dot is in green, but never show image, I assume is for the signalling server in 4.27 and my game in 5.2…

I was packaging in SHIPPING, but with the problem with the EXE, I package in DEVELOPMENT, but is the same, didn’t work.

@aaroille if you know what can I do, please throw me a hand!

Hi Everybody! I made some advances.
I made it work checking the box in creation configuration “I have made custom modifications to the Matchmaker and Signalling Web Server.”

Download the file, and extract on Windows folder of you project. After that, zip the folder Windows and upload to Azure and then create all the infrastucture.

I copied/pasted myproject.exe and rename it as “a.exe”. Also I renamed prerequisite.exe and epicwebhelper.exe to .ex avoiding the script confuse and get that files as the app launch exe.

This pack contain the Signalling Server for 5.2 but the Matchmaker is the Azure default for 4.27. I also modified ps1 file, to load the server propertly. Azure will update config.json with the data of you infrastucture, and will work… at least it worked for me.

UE5.2_SignallingServerAzure.zip (9.3 MB)

Hi everyone, we’ve rolled out another update to the Unreal Pixel Streaming product that should address the Azure CLI issues such as the “PublicIpAddress” error.

Reporting issues in this thread is currently the best method.

@LCDLV Can you elaborate on this rebooting issue? It sounds like you’ve solved it by using different Pixel Streaming infrastructure, but I have not heard this reported before.

This error could be a couple things, but the most common one I see these days is the requirement of a TURN server to broker the connection, especially if you’re working from a VPN or corporate network.

This solution does not currently take into account which version of UE you are using and is still operating on the Signalling Server shipped with 4.27. We have tested apps up to 5.2 without issues, but in some cases it could be missing a feature or patch. We will be looking into an upgrade in the future.

Hi! The reboot stoped, maybe was a bad export…
My only problem now is the internet inside the game. The VMSS has internet, but the game isn’t.
I noted when Electra or WebM player plugin is ENABLED, the internet isn’t working, but if I disable those, the internet back… I don’t understand why!! I check firewall, everything, but the problem are the plugins.

My problem was the extrange EpicWebHelper.exe… I was renaming it to avoid the script take it as my launch exe. I keeped it has it comes and Internet works fine in my game.
My next steep is point a domain to get a Secure Site and then enable my microphone will work.

1 Like

Hey @Stephen.Phillips I am running into an issue where the instances in the VM Scale Set aren’t scaling down, despite users being disconnected overnight. When we setup the scaling rules on the template, is there any rules we need to be following? IE if we use Instant Count buffer policy, should we set the Percent Buffer policy to 0% because they conflict?

EDIT: This seems to have resolved now.

When using custom domains you enter the public and private base64 keys, when the certificate expires/gets renewed, is it as simple as adding new versions to the https-publickey and https-private key in the key vault that gets created during deployment?

And to add 1 more question, can you provide some insight on how we would modify this deployment to enable the minimum VM instance count to be set to 0?

Edit:
I am also trying to upload a new app version through the dashboard app service, however it isn’t working. I select a .zip from the blob through the add new version UI in the dashboard, however after selecting there is no visual feedback I have selected anything? And when I submit the new version, no new entries are added to the version list, and no new versions are deployed to the matchmaker or signalling servers. I did notice in the console, when the page loads I get these errors:

Blockquote
Access to manifest at ‘login.windows.net/ … manifest.json’ (redirected from ‘…-dashboard.azurewebsites.net/manifest.json’) from origin ‘https://…-dashboard.azurewebsites.net’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
login.windows.net/

    GET https://login.windows.net/.......manifest.json net::ERR_FAILED 302 (Found)

The VM’s draw from that key vault each time they are created, so if you can update it there, it should be okay. However, we have not had any coverage on that for testing, so I can’t guarantee that right now.

Can you set Idle to 0 in the dashboard? If not, the way to spin down all instances is to go into the VMSS in each region, go to Scaling, and set your number manually there. But that also disables scaling up. We may have not accounted for truly “on-demand” usage since the wait time to spin up one single instance is quite long.

As for other errors in the dashboard, the last time I tested that feature was in June. I will put it on my list to look into.

Thanks for the reply Stephen, we just redeployed the solution and unfortunately the issue of not being able to upload new app versions is persisting. This leaves us either having to completely redeploy (need to send out new links to all customers and also re-add all logins/users to the dashboard) or remote into the VMs and update the app (not sure if this even works but definitely not an optimal solution either).

Please let me know as soon as you know if you can repro this on your side or not. Would love to know if it is an issue with the template or our enterprise environment.

Thanks again for your time @Stephen.Phillips