Two summers in a row, I've implemented the same adventure game. Just to make sure I got it right.
I learned a lot the second time. Freed from having to make up the scenery and the plot, I could focus entirely on the way I wanted to implement the game. I chose to make the game mechanics completely event-based.
Most people have heard about events in the context of GUI programming, but it's wider than that. Rather than focusing on the current state of the application, events hold the history of the entire application. This meshes quite well with an adventure game.
I spent a little time every day re-writing the game, blogging daily about my experiences. I'm happy about the result. Still, there were some surprises along the way, and some of lessons learned. This talk is about all those things.