Visit the server and start playing now! http://ec2-3-88-184-33.compute-1.amazonaws.com/vnc.html
We love gaming but we're very minimalist. We found it hard to be always traveling and at the same time have a gaming rig powerful enough to run the games we want to play. This is an idea we've had for a few months and MHacks gave us the opportunity to start testing it.
What it does
Anywhere Gaming is the platform that will eventually host a massive cluster of GPU's that are readily available for anyone to use via their browser. The obvious use case of these servers is for high-performance gaming for anyone anywhere, but they can also be used for big data processing and machine learning. Users can open up their browser, navigate to their GPU instance, and immediately start playing without waiting. The best part is that you pay per hour of usage, so you don't need to invent hundreds of dollars up front to try out new games. The cost comes about to be ~$0.25/hr!!
How we built it
The GPU instances that are doing the actual computations are customized AWS virtual machines specialized for graphics-intensive processes (specifically g3.4xlarge EC2 instances). Each GPU instance runs a VNC Server (TightVNC) on an open port that can be accessed anywhere in the world by a peer computer running a VNC Viewer. Anywhere Gaming removes the need for installing a VNC Viewer on your personal computer by allowing you to access the VNC Server via a browser. In a nut shell, you simply visit a website that directly connects you to the GPU instance exposed by the VNC Server.
How does this website "magically" connect you to your GPU instance? Well, the website is actually just an NGINX server running on the GPU instance that serves up some NoVNC (https://github.com/novnc/noVNC) client code to your browser. That client code is specially configured to be able to connect to the VNC Server running on that GPU instance.
Challenges we ran into
The biggest challenges we ran into were really roadblocks that were out of our control. As we found out, you must request GPU instances from Amazon more than a couple days in advance:/ We were only able to get a mediocre GPU instance with such little planning. This really restricted the types of games we could play. We were really looking forward to demonstrating super GPU intensive games such as Skyrim to run on your cell phone.
The other roadblock we ran into was a soft limit of polling cycles set by TightVNC. The TightVNC software limits you to desktop refreshes of 30ms regardless of your hardware to prevent overpolling on slow computers. Our server could easily handle a lower polling cycle based on testing with other VNC's and remote desktops. What appears to be slow processing is actually a bad polling rate by the server.
Accomplishments that we're proud of
We are really proud of the fact that this is able to be run on a cell phone with a bluetooth mouse + keyboard. Browsers are a bit different on desktops vs mobile devices, so it wasn't guaranteed that this would work on a phone. However, now that we know you can stream it on a phone, it opens up the entire world to be your gaming station!
What we learned
We learned a lot about websockets and video game drivers. Websockets were important when routing the VNC ports to the NGINX ports, and the cloud GPU's needed very specific/customized video game drivers.
What's next for Anywhere Gaming
The options are endless for Anywhere Gaming! We've already mentioned a few places places where Anywhere Gaming could expand, but here are our favorites:
- 3rd world countries where gaming is not an option due to expensive hardware and space
- nomads who travel the world and wish they could bring their gaming rig with them
- engineers and scientists working in the field but need access to large computers on the fly
- intense VR simulations/games on any phone