"My son’s latest addiction is the game Minecraft, a single or multiplayer game that has a client-server architecture to it, millions of users, a newly released version (as of last week), and a vibrant community. When I first saw the game I was put off by the seemingly crude graphics (a cube-constructed world with overlaid textures on the blocks), but I quickly got over that when I saw how it was fun to play, how it sparks creativity (in the way it has you gather materials and craft things in survival mode), and how it encourages even greater creativity by letting you build structures and contraptions in creative mode. I’m also impressed by the huge and vibrant community of people playing and extending the game with plug-ins (mods), custom maps, and public server worlds (sites you can go to play, such as http://planetminecraft.net).
Setting up a Minecraft Server
With Minecraft you can play single-player on a local machine, or you can connect to remote servers. If you are a power user or someone with some IT chops, you can easily set up a server of your own for which dozens of simple tutorials are available. That involves downloading the server software, running it, disabling any intervening firewalls, and typing in a server IP address on the client machine.
Of course what comes next is “Dad, can my friends connect to my Minecraft server?”
So I went down that route and configured our home router to do port forwarding, in turn allowing open internet traffic into the Minecraft-active port on our home network. That wasn't too tough, and again dozens of tutorials are out there to help walk you through the process.
The scary part: Poking holes in the firewall. This, of course, allows the unknown (and sometimes malicious) parties onto your home network and onto a machine that may have other personal information on it. You also have the issue of connection bandwidth. This is one of the most important aspects of smooth gameplay when a host server is involved. If you don’t have a screaming-fast internet connection, or bandwidth limitations on your connection, you could really be setting up an unusable server.
Enter Windows Azure Virtual Machines
Being a Microsoft Windows Azure Insider, it naturally occurred to me that an infrastructure optimal for this kind of shared access is Windows Azure. Windows Azure has a lot of capabilities, including shared host roles, storage, access control, and what is generally referred to as PaaS – Platform as a Service. But a relatively new offering from Windows Azure is IaaS – Infrastructure as a Service – which includes virtual machine hosting.
AHH, finally, a good reason to get going with Azure VM's!
[Wait... That sounds kind of snarky... It's not meant to be. I was trying to be funny... I guess I should keep my day job... ;)]
The more I think about this, though, the more I like the idea. You can spin it down when you're done and you don't have to mess with your home firewalls. Yada, yada... hum...