Current Situation

Recently, as I’m sure you are aware, Fallout 4 was released into the world, this was a highly anticipated game and I was eagerly awaiting it. However, I do the vast majority of my gaming on the PC and my gaming rig was beginning to show its age, I’d built it about 7 years ago and only given it a couple of minor upgrades since then (Bit more RAM, new GPU at one point and a SSD most recently) but it had still been able to play everything I threw at it (albeit at low settings).

PC Specs

  • Q6600 – Quad 2.8ghz
  • 4gb DDR3 RAM
  • ATI Radeon 5670
  • 120gb SSD

When the Minimum System Requirements for Fallout 4 were released I knew my rig had finally met its match and I was faced with a dilemma, I could either spend a reasonable chunk of change upgraded/replacing my rig or not be able to play Fallout 4.

Solution

Clearly I didn’t want to not play Fallout 4 and when I came across this blog post I knew I’d come across a solution and a very satisfying solution at that.

Playing games in the Cloud!

Not only would I not have to spend a reasonably amount of money, I’d also get to geek out and play with AWS which is something I’d been wanting to do for a while as it would be a great skill to have.

I’ll go over the rough steps for how this is achieved now but if you want to know more details then read the blog post linked above, it was written by someone much more knowledgable than me and will be necessary if you want to achieve this yourself.

Step 1:

Spin up an EC2 instance of type g2.2xlarge running Windows

Basically this gives me access to a very high spec machine.

Step 2:

Remote Desktop into this machine and install Steam (and Fallout 4) and OpenVPN

Steam must host their games very close to the data centre this server was in (Ireland) as the whole game was downloaded within minutes!

Step 3:

Connect client machine to OpenVPN 

This needs to be done to trick the server and the client machine into thinking they are on the same LAN, this allows us to stream the game using Steam’s In-Home Streaming feature.

Step 4:

Ensure you are logged into Steam on both machines, if you are correctly connected to the VPN then Fallout 4 will show in your clients game list as available for streaming.

Step 5:

Enjoy!!

IMG_20151129_134417

(I know that clearly isn’t my PC, I went for double nerdy-ness by streaming Fallout 4 at Ultra settings to a platform is isn’t even released on!)

Latency

This worked a lot better than I was expecting, when using Steam’s In-Home Streaming you can display a chart of the latency experienced and its broken down into 3 phases.

  • Rendering and encoding the frame on the EC2 machine
  • Transfer the frame from EC2 to the client
  • Decoding and displaying the frame.

On average I was getting about 40-50ms total latency (with 30-35ms of that being the transfer) and game was fully playable at that!

Costs

All in USD as that is what AWS prices are in.

Now you are probably wondering how much this costs and this is a bit tricky to answer without breaking it down a bit, but its more than likely going to be cheaper than you think! So AWS charges for there services in various ways.

First you have to pay hourly for the EC2 instance. The cheapest way to do this is by bidding on Spot Instances, these are EC2 instances that are provided at a drastically reduced price to ensure they aren’t left unused. Amazon wants their systems to be running as close to capacity as possible to make them as much money as possible. On a good day I was able to pay 15c/hour for the instance I need. However these spot prices can fluctuate heavily so keep an eye on them! More info on this in the improvements section.

Then you have to pay for any data traffic that goes out of the EC2 instance at the cost of 9c/GB. The amount of traffic you generate will vary hugely depending on what game you are playing but as a rough guide, for the 22hours of EC2 I used one month I used 38GB and was charged $3.38 so that works out at about 15c/hour

Finally you have to pay for EBS storage, this is used to save the OS drive when you aren’t running the EC2 instances, this stops you have reconfigure the machine every time you boot it up. This is a flat price so I’ll quote it by the month. My OS drive was 35GB and at the EBS price of 9.5c/GB/month this works out at $3.30/month

So, say you use this method for 10hours a week. Lets estimate your monthly costs…

  • EC2 – 40hr * 15c = $6
  • Traffic – 40hrs * 15c = $6
  • EBC – $3.30
  • Total $15.30 or £10.55

Not bad considering a high end PC that would give you the equivalent performance could easily cost £1000 or more. That £1000 would get you nearly 8years of gaming using this method!

Improvements to the original blog post

The original blog included some scripts to automate the above process, these saved a lot of work but I had two issues with them. First, my spot instance requests were getting rejected as they were too low. Secondly, and much more importantly, there was no price cap built in. The script grab the current spot instance price, adds a cent and then makes a bid. However the spot instance prices have been known to spike, the graph below shows the spot price history of the instance this uses (g2.2xlarge).

Screen Shot 2016-02-06 at 18.00.15You can see that at one point the prices spiked to over $4/hour, this is far more than I would be willing to pay however the script wouldn’t care. It would just add a cent to this price and make a bid which isn’t ideal.

So I took the original scripts and made some improvements to solve these two problems, the amount the script bids above the current rate is now configurable and you can set a maximum bid amount. If the current spot price is above your maximum it doesn’t do anything.

I’ve made these available on Github.

David