Three other people and I are creating a game called The Dreamhack Game. It is one of the biggest competitions at Dreamhack. It is a puzzle hunt where teams compete to finish tasks like puzzles, cryptos, technical, and social tasks. It is basically a web page where the teams are presented with a task and if they finish it they get presented with the next one. Many of the tasks require you to find a place at Dreamhack. It could be as simple as a photo of a place and by going there you find a note with the next clue. The game consists of two episodes with 10 questions in each and takes about two days to finish. The team which finishes all the tasks first wins.
This time is the first time we are doing a task as an Android application. It is always an experiment to try new things so using the Android platform for a task has taken extra time to make sure it works. All you get in the task is the app. After you have installed it on your phone (or a phone you manage to borrow from someone) it says "Waiting for location". If you would like to try it you can download and install it yourself: app.apk. If you want you can try to solve the task. You do not have to be at Dreamhack. If you would like to solve the task, do so before you read further as it will contain spoilers.
The task is a maze. When you get a GPS fix on your phone you can press start. A virtual maze is created in real space. By walking around you also walk in the virtual maze. The task is to navigate to the end of the maze without going into a wall. The difficulty in the task lies in figuring out what is happening and figuring out where to put the start location of the maze. If you put it in the wrong place you might end up having to go through an actual wall in order to go the correct path in the virtual maze.
A lot of work on this task was put into making sure you cannot decompile or in other ways hack the app or server. Less time was put into making sure the app does not crash or similar. Crashes are actually fine since all players will have the same problem. We have previously for example used a printer placed at a location at Dreamhack with the task to find and print something but with the problem that the printer is constantly jamming. By finishing the maze you get a secret key which you enter on the game webpage. The secret key is stored on the server and sent when the player reaches the end of the maze. The connection to the server is encrypted and part of the key to the encryption is the CRC checksum of the application. If you change the application in any way it will not be able to communicate with the server. This is to avoid storing the key to the encryption obvious in the application if it is decompiled. There are many more small but clever checks to avoid hacking of the app but since we’ll probably do more apps in the future I can’t disclose them.
The Android app was a success. It worked as planned and to my knowledge not anyone managed to decompile and get any compromising data from the application.
The winning team was the same team that has won the previous two games. You may call them professionals at The Dreamhack Game. They attend Dreamhack with the main purpose of playing the game. There are a few of those, some of which travel a long way from places abroad just to play The Dreamhack Game. I'm sure we'll see them again next time since the prize is 10 tickets to the next Dreamhack.