Game streaming server (part 4 of Debian as type 1 hypervisor)
18 Aug 2020Using my Windows VM to act as a game streaming server, both Geforce Experience and Steam.
Well I have already tried to game on Linux and for me it works perfectly, I have had no issues at all. But I rather thinker with virtualization or some other cool new technology than just playing games. So having a Windows virtual machine running all the time in the background sounds like the perfect game streaming server in my opinion, so I just had to try it out (well actually this was the plan from the beginning).
Steam Remote Play streaming
Well Steam is easiest to get going with game streaming. There is not much you need to do to get it working. But I can’t say it works perfectly, it works good though and I will continue to use it.
Raspberry PI steam link
I have setup a clean Raspberry Pi 3 with a clean install of Raspberry Pi OS (previously known as Rasbian).
Just open the Terminal on the Raspberry Pi and run those commands
sudo apt-get update
sudo apt-get install -y steamlink
Now steam link is installed. I connected a PS4 controller using Bluetooth, worked out of the box.
Before you start steam link make sure Steam is running and Remote Play
is enabled in the settings.
Steam Remote Play settings
When you start Steam link it will scan the network for computers and if Steam is running on any computer and Remote Play
is enabled it will show up. The first time you connect to the Steam server you will get a 4-pin code. This code must be entered on the Steam server to accept the connection from this device. This only has to be done once, next time you connect the server will remember the client and no pin code is needed.
This works great for me, I have played games like Ori and the Blind Forest, Hollow Knight and Portal 2 using Steam Remote Play on my Raspberry Pi using a PS4 controller.
Geforce Experience + Moonlight streaming
Well I did write that Steam Remote Play did not work perfectly and at the same time say it works great. Well for streaming to a Raspberry Pi hooked up to my TV it do work great. But for playing PC games especially non-steam games like World of Warcraft, it does not work great anymore, not in my experience.
So I had to try Nvidias Geforce Experince game streaming server. It is meant to be used for Nvidia Shield but there is an Open Source project called Moonligth.
Moonlight allows you to play your PC games on almost any device, whether you’re in another room or miles away from your gaming rig.
There is an client for lots of machines including Android and Raspberry Pi (I have not yet replaced Steam Link with it though).
The client can be found at moonlight-stream github release page but there is Snap packages for Ubuntu based distros, and Flatpak for others. I run Debian and I don’t want to install Snap or Flatpak backend for just one application so I go with the AppImage. Just download a file and chmod +x
it and then run. No need to install any backend stuff to run the application.
The client server connection of Moonlight and Geforce experience is very similar to the Steam Remote Play setup. When you connect to the server the first time you need to enter a Pin code on the server side it accept the connection.
The input lag and overall response from the mouse and keyboard is way better for my World of Warcraft playing sessions using Geforce Experience and Moonlight compared to Steam Remote Play.
Final thoughts
There is a huge penalty for streaming games like this compared to run them directly.
The FPS drop is about 40 FPS lower when I stream World of Warcraft from my Windows 10 VM to my Debian VM, compared to when I was runninging WoW using Lutris/wine on a bare metal Debian install. But I still get like 50+ FPS at 1080p on highest graphics settings in WoW. WoW is playable for my casual gaming and I have not done any optimizations to improve the framerate, it’s more a proof of concept thing.
But streaming is a lot more flexible, because you can access your game from any device capable of streaming. It would be awesome to have my gaming PC as a dedicated game streaming server. Then I could build a fan-less (or at least very quiet) PC for my Linux desktop.