Beyond running a small software company, I am also responsible for the Sofware Engineering and Distributed Computing course at the ENS Paris. For the fourth year in a row, Microsoft offered gracious support for this course (include some Windows Azure resources).
Every year, a small dozen of 1st year Computer Science students take over a sofware project. Last year, my students produced Clouster, a scalable clustering algorithm on top of Windows Azure. It was already significant achievement considering the beta status of Windows Azure at the time (student upgraded twice from a SKD version to another during the time of the course).
This year, my students went (*) for an online massively multiplayer strategy game named Sqwarea (heavy contraction of square+war+area).
You are a King battling over a gigantic map to conquer the world. Train soldiers, conquer new territories, and resist the assault of other kingdoms. The world is flat, see for yourself.
Despite my teaching methods, students managed to do really great (especially considering that we are only at 2/3 of the project at this point of time), so let's review a few salient facts about this project:
- Open source, see sqwarea.codeplex.com
- ASP.NET MVC, C#, jQuery, OpenId for the front-end.
- Lokad.Cloud for the persistence, and back-end execution framework.
- Windows Azure used as the hoster.
- Table Storage for the persistence (1 entity per map square).
- Queue Storage to spread the workload among VMs.
Then, in order to make sure, project wasn't going to be easy, I included a game rule real hard to implement:
People and soldiers have to be constantly reminded who is the King; otherwise, they just do it their own way. If, after a conquest, a part of your kingdom is no more connected to your King through a path of controlled land squares, then the disconnected area is reverted as neutral.
Apparently, students managed to implement a good (and expectedly complicated) scheme to get it this connectivity rule working in a very scalable way.
(*) Actually, every year, I choose the project to be carried on by my students. Hence, if you think the project idea is lame, blame me.