Hi friends. Quick question for you.
Does your setup look like this?
Mine does. Like many other humans on this green earth, I do not own a gaming PC.
I wish I did! But I also don’t want to spend 3K. But I’m fancy and don’t want to compromise quality on a cheap rig either.
Why not get a PS4/xbox/whatever? Again, don’t want to spend the money on a console…plus a game (ka-ching!)..plus another game (ka-ching!) …plus this other game I want which only works on this other thing (ka-ching, ka-ching, ka-ching!)
I just want to play the Witcher 3 in peace.
Luckily for me, I was working with AWS a while ago and thought to myself, “Hey. These virtual machines are pretty powerful. Maybe I can custom make an EC2 instance that can run games I like and not pay a zillion dollars.”
And so, I did. And a zillion dollars were in fact, not paid. I did it all for a few bucks and some change.
GET AN AWS ACCOUNT
First things first, get an AWS account if you don’t already have one. They are free, but you have to provide a credit card (more on that later). Good ol’ basic, free plan w/ root user access should be fine.
GET THE BEST PING RATE
Find your region in the top right-hand corner, and select the one closest to you. You can use also CloudPing to see what has the lowest latency and select accordingly. The data center in Oregon has the lowest latency for me, at 43 ms.
AMI TYPE (AKA OS SELECTION)
Head over to the “Launch a Virtual Machine with EC2” section, which will take you to a screen where you will select what’s called an “AMI”, or an Amazon Machine Image. This is essentially a pre-configured Windows install that copies to a general all-purpose Amazon Elastic Block Store. When you terminate your instance, the storage is deleted, so make sure you have a way to sync your data to the cloud somehow as you game. (Steam, GoG, etc). The AMI is up to you, but for the purposes of this article, select the Microsoft Windows Server 64 bit 2019 Base.
Now you’ll be taken to a screen that asks what kind of instance you want. Think of an instance as a virtual server that has the bundled bells and whistles of a regular computer: storage, RAM, CPU, and networking capacity. The cool thing is here you can choose a setup that fits your individual projects needs more aptly depending on what you want to do, and for us, we’ll go ahead and choose a GPU instance that is g3s.xlarge.
Now, after this, you are taken to a nice feature of AWS called “spot instances”. This is a great way to save money, especially if you’re running a large project and don’t want to accidentally go way over budget. Spot instances help you put a cap on how much you want to spend to run your instance, sort of like putting a bidding cap on an item at an auction. So, if I don’t want to pay, say, more than 50cents an hour to run my VM, the instance will terminate if the price to run it goes higher than 50cents. You can also check and see what the prices in your region are at that particular time and work off that, as I’ve done in the picture below. I set my maximum price to 50 cents an hour, as the regions near me all cap out at around 41 cents.
This does have the downside, though, of turning off your VM mid-gaming session if the price DOES exceed my set amount (and prices do change!), so, unless you’re incredibly concerned about cost, I’d go ahead and skip it.
Alright, time for storage. To recap, you have your AMI (aka virtual OS) selected, the GPU size picked out, and optionally some spot instances configured to give you a bit of control over what this all ends up costing. Now ya gotta pick storage! I started this whole journey with 30gb thinking I would not need any more, and I was VERY wrong. My disk space filled up quickly because the storage has to also account for the OS (oops) as well as any games you want to play. Go for gold and get 100gb or so. Now, this is REALLY important. The root storage is set by default to delete on termination, so, have your game data pushing to a cloud!
Next, add a tag for your instance. This info is just for you so that you don’t have to build your AMI every time you want to boot it up. Name it a key/name pair you can remember.
This was the hardest part for me to figure out. I started by allowing either: all TCP/all UDP practices, but at the end of the day, I just said to allow all traffic. The good news is Amazon auto-generates a key/pair for you in the next step to encrypt your admin password at least in the next step, but it is honestly best to configure this to only accept traffic from known IP addresses. I’ll update my blog here when I figure out the best way to do this, but right now, its a work in progress.
Alright, we’re ready to launch! Click “review and launch”, and make sure all your specs are what you wanted. You will then get a chance to create a new key/pair that encrypts your admin password. Give it a name, download it, and don’t lose the .pem file! Then hit launch instances!
Now AWS has to build your instances. This can take an hour, it can take a couple of minutes, it can take a day. It just depends on network traffic and the particular config options you chose throughout the process.
Once all that is done and your instance is up, check out part two of the process (I’ll publish a post on that soon!) to connect w/ Microsoft remote desktop if you’re on a map and get all the drivers configured!