Cloud Gaming Setup2021-01-20
I am not an avid gamer, but I like to keep up on the state-of-the art in the game development industry. I believe the game industry drives a lot of futuristic tech. I only ever own and maintain a single laptop these days though. It's a relatively powerful laptop, with a discrete graphics card (GPU), but still not powerful enough to run modern games smoothly. I no longer want to build and maintain more physical computers than I absolutely must. I don't game enough to justify a dedicated gaming PC anyways, especially since they become obsolete so quickly.
Within the last couple years, remote servers with capable GPUs have started becoming available. Graphical remote control of servers has been possible for decades, but only recently has there been developments that allow remote control at extremely low latencies; Low enough to allow for even moderately fast games. That is the premise of "Cloud gaming", and you can read more about at it at places like /r/cloudygamer/ . I believe it is the future, assuming Internet infrastructure continues to expand and bandwidth caps allow for it. Consider that there is no initial outlay for equipment that can quickly become obsolete. It is pay-for-use, provides access to higher end components, and can be accessed from anywhere using any device along as there is a decent Internet connection.
The industry titans see the potential (with different levels of commitment and execution):
There are also some more interesting smaller players:
What I've Tried So Far
With both Paperspace and AWS G4 setups, the magic component was the Parsec technology and client:
In my experience so far, Parsec, has been an important component. Most remote desktop control solutions (including RDP and VNC) do not support low enough latencies to be useable for most games. When gaming, the display, audio, and input latencies are all important. Even when using Paperspace, which provides its own client, gaming wasn't smooth until I switched to using Parsec.
To setup Parsec on the AWS instance, I ran this script:
That script seems to do a lot around common game requirement installs, including installing latest nVidia drivers (which have a licensing component when installed on cloud GPUs), MS DirectX Runtime, XBox controller drivers, Parsec itself, etc. It's dependent on external download locations though, and some of those are currently broken due. (i.e. MS XBox controller and DirectX runtimes.) I haven't yet fully looked in to exactly what Parsec is, everything this script does, licensing, or how stable the company is. I hope there are other alternatives, simply because if not, then I think they have a lock on what is possible and yet they don't seem to be overly robust.
Nvidia GeForce NOW
I purchased an annual subscription to Geforce NOW early on (as a "founder"). That was before they started losing access to significant number of games, I assume due to publisher/developer greed.
Because GeForce NOW only allows access to certain titles in my Steam library, I haven't used it much. For instance, there is no access to my copy of X-Plane (which I didn't purchase in Steam) and no support for MS Flight Simulator (which is not available on Steam). When I have used it, it worked reliably, but the quality did not strike me as being as good as my recent experiments using Parsec with Paperspace and AWS. However, there's no official way to install and use Parsec with Geforce NOW. Perhaps it has, or will, improve over time.
Also, due to the way it works, any game selected must first be redownloaded/reinstalled during startup. That takes a few minutes for larger games.
Paperspace is primarily marketing towards Machine Learning and similar professional GPU use cases. However, they do (or did?) have a convenience "template" for gaming which had Steam preinstalled, etc. It is much more convenient to create and use Paperspace machines than AWS EC2 instances. I don't think they had quite as powerful a GPU option as the latest AWS offerings, but it was sufficient.
Paperspace wasn't good for gaming purposes until I switched to using Parsec instead of the Paperspace client.
AWS EC2 Instance (DIY)
AWS's latest AWS G4 EC2 Instances are quite powerful. However, setting up in AWS generally requires a lot of technical knowledge. I've been working with AWS for many years, and even so, AWS is constantly changing making it a consistent challenge. Two weeks ago I was able to request a spot G4 instance (at half the normal G4 hourly on-demand cost.) When I tried to do it yesterday, I was informed I could not because my account limits didn't allow for it. I had to wonder how was I able to do it two weeks ago? Turns out AWS is transitioning from "per instance limits" to "vCPU limits". There are old and new quota/limit interfaces in the AWS console simultaneously currently, and they don't seem to agree. Support doesn't seem to realize it. It took most of the day for them to approve my limit increase request. Luckily, I wasn't doing anything important.
This write-up by Richard Neil Ilagan provides a great overview and step-by-step of setting up an AWS instance with Parsec:
- Spot instances no longer seem to be available to normal accounts (afaict...I'm not yet sure about this)
- G4 instances do not seem to be available without a vCPU limit increase request
- The parsec prep script throws errors trying to download certain items (but still seems to work)
Also, nVidia finally published an updated "NVIDIA Gaming PC - Windows Server 2019" AMI in the AWS Marketplace. It comes preinstalled with the lastest nVidia drivers already licensed, so the licensing step run by the Parsec script is not required.
I haven't yet done much cost comparison. In general, I am expecting to pay ~$1.00/hr while gaming, with a very small monthly charge for instance storage. That's a rough estimate, and the actuals can be significantly lower/higher depending on the setup and service. There are many factors that go in to the final cost, especially when using AWS.
One detail with Paperspace, is that while they do not charge a fee for stopped instances, they do have a fixed monthly charge for instance storage. I believe it was ~$5 or $7 per month. At first glance, I believe that is more expensive than AWS equivalent for someone like me that will only use it a couple hours or so a month. I probably only need ~60GB EBS, stored at ~$0.10/GB. However, there are so many other factors and a full cost comparison might show up differently. Minimally, the per hour costs depend on machine size and bandwidth usage.
Using AWS two weeks ago, I was able to get a
g4dn.2xlarge (8 vCPU) as a spot instance with persistence setting. The persistence setting should have let me stop the instance when I was done using it to avoid additional charges, and then restart it whenever I wanted (assuming spot instances were available at my requested max price). It ended up that I was not able to restart due to changes in AWS limits and policy changes around spot instance handling for smaller accounts. When I had the spot instance, it was running about $0.50/hr. (There would also be some small bandwidth charges on top of that.) Now that I have to use on-demand instance, it will run ~$1.10/hr for the same size.