Building a Personal Cloud Gaming Server

Introduction

If you talk to any of my friends, they will tell you to not get me started talking about virtualization. I have done everything I can to virtualize every computer function in my home. Everything from my home automation, web server, media server, to the game servers I host for myself and friends. So, what about the gaming computers in the home? Most things are easy to virtualize because they don’t need things like direct input from peripherals or output to a monitor. However a gaming system needs these. But, what if we could build a system that could handle the requirements to play video games for several people in one box? Shared resources, access from different kinds of devices from inside and outside the home.

Virtualization

Research

After many hours of searching online I found many people running their systems on Linux with a Windows 10 VM to play games in. One of my colleagues, Jon Allman wrote a blog post about his personal experience doing just that. But this isn’t what I wanted to accomplish. There have been a few YouTube videos produced by Linus Tech Tips as in 7 Gamers, 1 CPU and 2 Gaming Rigs, 1 Tower. But these systems were designed with all the users being in the same room as the system. I wanted something that could be tucked away in a server rack in my garage that could be remotely accessed.

Challenges

There were several things I had to consider before jumping into this project.

  1. Would it work at all with a dedicated video card? (reports online were hit or miss)
  2. How would I connect to it? (remember we want the box in another room)
  3. Jon Allman mentioned in his blog post: that anti-cheat systems in certain games block VM users from playing. (this could be a deal breaker)

Picking the Hardware & Software

I knew that I was going to need pretty decent hardware, because in the end I wanted to be able to host two to three gaming virtual machines. Your average AAA game title has a system requirement of a 4 core CPU and 16Gbs of RAM. I picked up a x299 Motherboard (to have enough I/O to support all the parts I wanted to be able to add), an Intel Core i9-7940X for its high core count (this would be enough for 3 VMs with some overhead) and the IOMMU (input–output memory management unit) function, this allows for hardware pass-through as well as enough RAM and Storage. Finally I have a NVIDIA RTX 2080TI that I plan to use for our test virtual machine. But, in the end we could go with a more mid range card like a NVIDIA RTX 2070 Super. As stated before I have a server rack in my garage, this unit will be going into a rackmount case but there isn’t any reason a normal tower wouldn’t work.

For software I will be using Windows 10 Pro for the VMs, and for the server OS, I will be using VMWare ESXi mainly because I’m familiar with it. It also has a lot of hardware support along with a nice web UI to work inside of so it’s a good choice. There are several other options you can use, but ESXi is my preferred choice.

hardware

Challenges Continued

  1. Will the video card work? There are two things to look at here. Does the video card have official pass-through support and can you game on it? NVIDIA Quadro series cards have full pass-through support but are not good to game on. At this time NVIDIA GeForce series cards don’t have official pass-through support but there is a beta driver available. However, after some extra digging there are some workarounds to get the GeForce Cards to work. So we should be good to go.
  2. How will I connect to it?
    • Software: There are many remote Desktop options but few give us a low legacy high FPS connection. For this I went with Parsec. It gives you that low latency high FPS connection that is needed along with some other nice features.
    • Hardware: The desktop isn’t in the home office anymore. For this I built a small form factor pc that takes up a very small footprint on the desk. Some of them can even be mounted to the rear of your monitor; they are so small and make for a very clean setup.
  3. What about those anti cheats? Well therein lies the rub. They are a huge deal in PC gaming and after some digging I found that there are two to be concerned with when dealing with VM gaming: Battleye and Easy Anti-Cheat. Some people say they blocked the games and others said they didn’t have any effect.

Does it Work?

After building the server, getting ESXi set up, building my test gaming VM, getting the video card to work (that one was a battle that took a few days because NVIDIA hadn’t released their beta driver that supports this yet) DOES IT WORK?

YES! Well mostly. Remember those anti-cheat tools we talked about earlier. To my dismay the claims were true. Any game I tried in my library that was protected by Battleye or Easy Anti-Cheat would not allow me to use the online function of the game. Rust couldn’t connect to servers, Tom Clancy's Rainbow 6 Siege would keep me from matches, and PlayerUnknown’s Battlegrounds would abruptly close and crash the Parsec session. After a bit of digging, I found a statement on Twitter by Batteye.

So I guess those games are out of the question for now. But all other games worked great! Minecraft, GTA Online, Killing Floor 2 and Among Us were tested and worked fine. As well as every single player title I tried, so yeah, it ‘works’.

Performance

With virtualization and hardware pass-through there is going to be a percentage of performance loss. This is just due to the overhead of the core OS (in my case ESXi). In my testing I experienced an average of 10 FPS loss in-game from what I saw on a physical gaming system. CPU performance felt on par with a normal desktop. CPU loads were around the same when playing GTA online in the VM vs my quad core gaming desktop. When running Crystal diskmark on the SSD that was passed through to the VM the scores were about 50-57Mbps slower than the same SSD in my desktop.

Final Thoughts

I’m split on how I feel about this project. On one hand, it was awesome getting everything together and really rewarding getting the video card to work. But on the other hand, once I started having problems with playing some of my favorite titles due to the anti-cheat systems it was somewhat of a bummer that I wasn’t going to be able to make this a permanent setup. But I did keep the VM with a low end video card connected so I can check back and see if those anti-cheat tools develop a solution so we can Game in Virtual.

Thank you for taking the time to read my post, Game On!