We really enjoyed the competition we are going next year too!
BeeSmarter #2 (2014)
BeeSmarter is a competition for developing apps for the mobile platform. We participated in the CodeCamp category for High School students.
We made a lot of thoughts about our team name because it was our first competition together (FBalazs, Tamastom and me). After a lot of debate we settled at new Team(); and Team.getInstance(); for every competition to follow. (Following the singleton design pattern)
The competition consists of two parts: the qualifier and the final.
In the first one we had to make a laser-simulation game with predefined objects. In the given one week we accomplished the predefined objects and we could even add extra features. For example the objects only needed to be rotated in 45 degrees but we did it for every angle. This way we successfully got into the next round of the competition.
As it turned out in the final round, we had to develop our app further. We had 12 hours to figure out how Multiplayer works on the phones and add it to the app. It wasn’t an easy task.
We started with limited knowledge about networking and with no experience. We settled early on using UDP for low latency (this was a bad choice in retrospect).
Alternatives were Bluetooth and Wifi P2P and of course TCP. We didn't choose Bluetooth because in the future we wouldn't have been able to extend to other platforms easily. Wifi P2P required a high Android API which wasn't widely adopted at that time.
Since the game didn't have a game loop - it only updated when something changed, user event - we sent over the network the map state every time a change had occurred.
In spite of the starting difficulties we managed to implement the networking and even a map creator. It helped a lot that we had a stable starting point. In the remaining time we made some UI changes. With this we got 950 out of 1000 points and got 1st place in competition. Not bad at all!
What went good:
- We had time for everything
- We could design a user friendly UI
What didn’t go well:
- We couldn’t share the tasks between us equally and didn’t use version control.
- We didn’t have enough time to create the optional objects