November 19, 2012

Tetris

On Saturday I was competing in an artificial intelligence competition. The objective of the game was to play head to head against other people at Tetris. The game is played with two teams, each team has a program running directly against the opponent teams program. The game is designed around needing to survive as long as possible while working to add lines to the opponents board, and thus forcing them to lose. To add a line to the opponents board you need to score two or more lines in a single move. The lines added to their board will typically have 5 holes, but could be as few as 1 hole, or a full empty line being added to the bottom.

The event was sponsored by Pason which is a very interesting company and from my initial impressions it appears to have a great work atmosphere. For the competition, each team can be either one or two people. I believe in total there was 48 teams registered. However, only bit more than 20 teams competed on the game day, which is still a fairly decent sized group. The morning round started off as a round robin with the main focus on getting a ranking for the elimination round. I ended up starting off in second position for the elimination round and was feeling pretty confident about my program. I made my way up to the finals and was pleasantly surprised by my opponent who wrote an excellent program. I lost the final round 34 to 72 in a match which started off with my program winning, but roughly halfway through the tables turned and I started to get dominated. A surprise, but a very respectable match and I congratulate my opponent on a wonderful challenge.

I had a blast and enjoyed the challenge of coding up a Tetris game and then designing and building an AI to play it better than I ever could. It was a good experience and I finally got to play around with Gson and JCommader. They are two libraries I am very impressed with and hopefully I will be able to work with them in the future. Gson offers an interesting version of serialization which is extremely easy to use but also a viable candidate for cross-language serialization. I personally like JSON significantly more than XML, but sometimes complex cyclic relationships are required and JSON isn't going to help you there. However, cyclic relationships are typically a bad practice anyways... The only places I use them are typically not candidates for serialization.

I guess second place on its own doesn't sound very exciting, but it does mean I won $1250 and I also got a $100 gift card for beating Pason's AI at Tetris. I have been asked what I will be doing with the money, my first thoughts are school and saving it up for tuition. I am also thinking to simply save the money for now as I'm sure in graduate school I will need extra money. As I mentioned before, I am currently taking a break from Combatics Evolution, but I am also making some good progress on Paint Party. While the application is still in its infancy, things are coming along smoothly and I'm hoping my team is up to the challenge and ready to dig into a decently complex project.

Next week I'll be attending an award luncheon for an Engineering Internship Merit Award. I'm extremely excited to have been awarded for my hard work at Autodesk. To top it all off, I have also been informed I've been recommended for the NSERC Scholarship by the University of Calgary. This has been a very exciting month!

No comments :

Post a Comment