Table of contents
This project automates the set-up process for cloud gaming on a Nvidia Tesla M60 GPU on Azure Standard NV6 VM. The development of this project is heavily inspired by this excellent guide.
-
Cloud gaming technology used
- Parsec
- Steam In-Home streaming using ZeroTier VPN
- NVIDIA GameStream using Moonlight
-
Game launcher installed
- Battle.net (soon)
- Epic Games Launcher
- GOG Galaxy (soon)
- Origin (soon)
- Steam
- UPlay (soon)
-
Software installed
- 7zip
- Nvidia Tesla drivers for Windows 10
- Parsec for game streaming
- VB-CABLE driver
- ZeroTier One for VPN
This software comes with no warranty of any kind. USE AT YOUR OWN RISK! This a personal project and is NOT endorsed by Microsoft. If you encounter an issue, please submit it on GitHub.
The only issue so far is about Steam In-Home streaming. Due to a bug, you cannot return to the Windows Desktop during your game session using ALT+TAB.
A workaround could be to press ALT+ENTER to switch from fullscreen to window mode, and then return to the Desktop.
- The only requirement is to have AZ CLI installed. You can use the Azure Cloud Shell
- Do not forget to update the options values of the below example.
- At the end, you will be prompted to choose your Windows admin password
(
rm -rf ~/azure-gaming
git clone https://github.com/nVentiveUX/azure-gaming.git
cd ~/azure-gaming
# Yvesub example
./create_vmss.sh \
--subscription="8d8af6bf-9138-4d9d-a2e6-5bff1e3044c5" \
--location="westeurope" \
--rg-vnet="rg-net-shared-001" \
--vnet-name="vnt-shared-001" \
--subnet-name="snt-gaming-001" \
--subnet="10.1.0.16/28" \
--rg-vm="rg-inf-gaming-001" \
--vm-name="vm-gaming-001" \
--lb-name="lb-gaming-001" \
--dns-name="yvesgaming-001"
)
- Connect using RDP. Click on the Windows key in the bottom-left corner, type "mstsc", and open on the app.
- From powershell admin prompt, run the 1st script
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$path = "C:\azure"
New-Item -ItemType Directory -Force -Path $path | Out-Null
(New-Object System.Net.WebClient).DownloadFile("https://github.com/nVentiveUX/azure-gaming/raw/master/setup1.ps1", "$path\setup1.ps1")
powershell -ExecutionPolicy Unrestricted -File "$path\setup1.ps1"
- Reboot
- From powershell admin prompt run the 2nd script
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$path = "C:\azure"
New-Item -ItemType Directory -Force -Path $path | Out-Null
(New-Object System.Net.WebClient).DownloadFile("https://github.com/nVentiveUX/azure-gaming/raw/master/setup2.ps1", "$path\setup2.ps1")
powershell -ExecutionPolicy Unrestricted -File "$path\setup2.ps1"
On you local machine
- Install the Parsec client
- Sign In
On the VM
- Sign In to Parsec using the same account and Enable Hosting
- Close the remote desktop connection using the shortcut
disconnect.lnk
on the Desktop. - Try to connect into the VM thought your local installation of Parsec
- On the VM, tick Run when my computer starts from the minimized icon into the task bar
- Reboot the VM... and you're done.
On you local machine
- Create a dedicated ZeroTier network
- Certificate (Private Network) (Access Control)
- Enable Broadcast (ff:ff:ff:ff:ff:ff)
- Auto-Assign from Range (IPv4 Auto-Assign)
- All IPv6 stuff
- Install the client ZeroTier One, Sign In and Join the Network
- Tick Preferences.../Launch ZeroTier On StartUp from the minimized icon into the task bar
On the VM
- Open ZeroTier One, Sign In and Join the Network
- Tick Preferences.../Launch ZeroTier On StartUp from the minimized icon into the task bar
On you local machine
- Open Steam and Sign In to configure the client
- In-Home Streaming
- Enable streaming
- Beautiful
- In-Home Streaming > Advanced Client Options, and Check only the following:
- - Limit bandwidth to 30 Mbits/s (do NOT set unlimited, it does not work)
- - Limit resolution to > Display resolution
- - Enable hardware decoding
- - Display performance information (Press F6 to display it in-game)
On the VM
- Open Steam and Sign In to configure the client
- In-Home Streaming
- Enable streaming
- In-Home Streaming > Advanced Host Options, and Check only the following:
- Enable hardware encoding
- Prioritize network traffic
- Prefer NvFBC capture methode See Explanation: NvFBC, NvIFR, NvENC for more info
Now, steam should see the Streaming VM. Try to launch a game !
az group delete --name rg-inf-gaming-001
- Update VM SKU to Standard_NV6s_v2 (awaiting end of preview)
- Update OS to Windows 10 1809 (
rs5-pron
), as soon as Nvidia drivers will be supported on this version. (See Supported operating systems and drivers for more details. We are usingrs4-pron
today.
az vm image list --publisher MicrosoftWindowsDesktop --all -otable
Offer Publisher Sku Urn Version
---------- ----------------------- -------- -------------------------------------------------------- ------------
Windows-10 MicrosoftWindowsDesktop RS3-Pro MicrosoftWindowsDesktop:Windows-10:RS3-Pro:16299.904.65 16299.904.65
Windows-10 MicrosoftWindowsDesktop RS3-ProN MicrosoftWindowsDesktop:Windows-10:RS3-ProN:16299.904.65 16299.904.65
Windows-10 MicrosoftWindowsDesktop rs4-pro MicrosoftWindowsDesktop:Windows-10:rs4-pro:17134.523.65 17134.523.65
Windows-10 MicrosoftWindowsDesktop rs4-pron MicrosoftWindowsDesktop:Windows-10:rs4-pron:17134.523.65 17134.523.65
Windows-10 MicrosoftWindowsDesktop rs5-evd MicrosoftWindowsDesktop:Windows-10:rs5-evd:17763.253.67 17763.253.67
Windows-10 MicrosoftWindowsDesktop rs5-pro MicrosoftWindowsDesktop:Windows-10:rs5-pro:17763.253.65 17763.253.65
Windows-10 MicrosoftWindowsDesktop rs5-pron MicrosoftWindowsDesktop:Windows-10:rs5-pron:17763.253.67 17763.253.67
- Download and install the latest NVIDIA Capture SDK (formerly GRID SDK)