February 1st, 2008

Why All Games are Educational

During my work at the GAMBIT Games Lab, the topic of educational games came up. The question was whether or not educational games were a valid genre. That got me thinking, which led to this. My conclusion is that in fact, all games are educational. Some have a more explicit purpose, teaching concepts which are applicable outside the game realm (whether this be games like Number Munchers, Word Munchers, or Mavis Beacon Teaches Typing), but any time you are playing a game, you’re learning.
Read the rest of this entry »

October 11th, 2007

Five Minutes Five Games Episode One


Video thumbnail. Click to play
Click To Play
First episode of a potentially monthly (or bi-weekly if I get really ambitious) podcast. It was done originally for 21L.015, one of my classes, but if people like the idea, I could probably put in the effort to spend a little more time on it. This epsiode has reviews of Battlefield 2142, Medal of Honor Airborne, Pokemon Pearl, Portal, and Team Fortress 2.

April 14th, 2007

Battlecode Wrapup

I was hoping to have more information for this post, but I’ll have to settle for posting our team document. The Battlecode organizers never got around to updating the website, and so I don’t have the actual final results. You can grab the PDF at the bottom of this post. Overall our team worked out reasonably well. We needed more time to tweak and optimize behaviors, and a lot of the strategy just didn’t work out as well as it should have. Still, I’m happy to settle for winning an award and getting the credits for the class.

Battlecode Strategy Writeup

February 6th, 2007

iFind

iFind, a project of the SENSEable City Lab is an application designed for “Friendspotting”. It uses the ubiquitous Wifi coverage around the MIT campus to allow you to locate where you are pretty much anywhere on campus (minus a few buildings that we don’t have access point information for yet). The application then allows you to share it with whatever friends you want via an encrypted peer to peer link. This means that the information is shared only with who you want it to be shared with, and we as the operators of the iFind service have no information about your location (we can use a couple properties of the MIT network to guess which building you are in, but that’s it).
There are two parts to iFind. The shiny GPL licensed Java client, and the proprietary (sorta) PHP server. I was responsible for about 98% of the server code, and that’s what I’ll focus on, right after a pretty picture….
iFind Client
(yes, they were taken on a Mac. No, it’s not mine, the primary client developer uses it).
The iFind server is a relatively uncomplicated piece of code (around 25 files, and 35KB as a RAR archive), but there are a few interesting aspects. The biggest is that all communication with the server is done via XML. This creates what you could call an XML-RPC (Remote Procedure Call) system, although it isn’t nearly as flexible (aka complex) as other XML-RPC implementations. It is simply a custom defined protocol with a variety of messages that use XML to transfer the data and return the result. The entire protocol documentation is a 71KB Microsoft Word document (it does compress to 14KB as a RAR file though), which we keep somewhat private (it is available on request by sending a message to senseable-ifind [at] mit [dot] edu) to gauge interest. The server code will also be available on request for private use (pending a few agreements on release and such) for research and use at other institutions.
The other interesting aspect is the handling of requests. Once the server does some basic processing, and determines that the request is valid (well-formed XML, and including the expected method field), it passes off the request to an input handler. Input handlers extend a base class using the object oriented nature of PHP, which gives access to a variety of predefined methods and fields, such as an XML class for the output functionality. The advantage to this process is that adding a new method is as simple as adding a properly named file (the method name with no spaces and a .php extension) to the proper folder, and the server will handle requests. Any invalid requests will receive a generic error (either 100 Service Unavailable, or 104 Service Unimplemented) although the behavior is technically undefined (although it has no side-effects, and should not cause any problems or malformed output).
There are probably a few other interesting bits in the server code that I will run across while preparing it for the consumption of others (have to put in some comments and document how to extend it I suppose).

February 5th, 2007

Spring Term 2007

It is time for another term, and registration day has passed. The courses I will be doing this term are:

  • 15.301 - Management Psychology Laboratory
  • 14.01 - Microeconomics
  • 18.06 - Linear Algebra
  • 6.041 - Probabalistic Systems Analysis

Those may or may not be the exact course titles, but they’re close enough for most purposes. I’ll also likely be continuing my work at the SENSEable City Laboratory, most likely on the iFind Project. I might also try to find some other work on another lab project, but that depends on what is available, and how much time I have during term. There is also Robocup work to deal with (a big deadline is looming), and just making sure I keep up with courses.

This is a little more personal than usual, but I just wanted to get something written for today. Coming up next will probably be something about iFIND (as I haven’t discussed that yet), followed by hopefully the final Battlecode writeup (but that depends on their release of the Final Tournament matches). I’m hoping to get going on a Monday-Friday schedule for blog posts, but I may have to thin that to something like Monday, Wednesday, Friday. We’ll see how many ideas and how much time I have to keep this updated.