BattleSnake2019 - Part 1 Intro


Lets get some of the background and details out of the way before I discuss team pixels strategy and why it failed us in the final.

First what is BattleSnake?

"Starting as a small group of colleagues honing their skills has become a community of developers who compete for fun and for glory. Battlesnake grew from a single, yearly event into a global, open-source community that's active year-round. The game is a multi-player version of the classic arcade game Snake, where teams program a snake AI to compete against others. The winner is the last snake slithering.”
Source - https://events.battlesnake.io/about-battlesnake

Who am I?

At the time of this post I am a recent grad (June 2018) from the Information and Computer Systems Diploma Program from Camosun College and a Junior Web Developer for a local start-up Lauder Media Inc. A family man with three great children and a wonderful wife and love to work on my development skills in my off time playing with different languages and frameworks.

The beginning - 2017:

I was in my first year at Camosun College when I first heard of BattleSnake from a group of the event coordinators that came into our class and spoke about BattleSnake. I was hooked when they said BattleSnake AI.

Not knowing how to get started or really much in programming at all (I had zero programming knowledge prior to my enrollment at Camosun) I attended their tutorial. This in turn lead me to their event documentation and there was a link to the winner of BattleSnake 2016. I forked the GitHub repository and altered it to fit the data coming in from the requests on game day. I managed to get it working but not good enough, which leads use to the moral of 2017…..

Having no experience and trying to alter an existing snake is NOT the way to do things, I will discuss more on this later. A couple of notes on why this was not an optimal choice for me would be:

  • Little to no comprehension of what the logic was actually doing
  • Very hard to implement new logic based on previous note

Main room at Battlesnake 2019

2017 Outcome:

Although the experience and atmosphere were out of this world I did not do well in the competition and started regretting my choice immediately after I was knocked out of the running. Planning to get better by the 2018 competition.

BattleSnake 2018:

Into the second year of my program and BattleSnake2018 approaching I was feeling pretty good. I decided not to start from scratch and continue with the snake I had used in the previous year….(yeah yeah don’t worry we will get to that poor choice in a minute)

Throughout the previous summer I had some time to understand to some degree what the existing code was doing. It was enough that I could add some extra actions and “make it work”. (doh!) I know your thinking it too!

Let’s fast forward….

The day of BattleSnake2018:

Walking in head held high because I got a few extra things happening with the current snake. I was so high on my horse I entered the intermediate bracket fully believing even with the lack of understanding of what my snake was actually doing I was going to dominate.

Yep you guessed it I actually did worse that the first year and the developers in that bracket far outweighed my knowledge of development. Another loss right away ... I was officially put in my place.

Despite my second failure the event was outstanding yet again. More developers more sponsors, more networking and great times. Yet I still had that looming feeling of failure. Fool me once jokes on you, fool me twice jokes on me!

Team Pixelated

Goals for BattleSnake 2019:

  • Get involved

    • I aspired in helping out at the event and being involved for two reasons
    • Helping others allows me to further understand and gain clarity on implementation
    • Potentially be recognized by other companies that attend the event as a future prospect or just to be on the radar
  • Bring my son this year

    • My son really wanted to tag along and help out with an increasing interest in what I find so fascinating about programming
  • Start from scratch

    • This was the only feasible option to fully grasp what I was doing
  • Make it to the finals

    • If i made it to the finals then I would know that I fully understand the concepts and logic used in my snake

Achieving these goals:

  1. Get involved:

  2. Bring my son:

    • I needed a teammate he wants to learn and experience the atmosphere easy peasy!
  3. Start from scratch:

    • This was the hardest thing to stomach.
    • I had worked so hard to try and understand what I was working with only to throw it all away.
    • With sweaty trembling hands …. Delete was clicked.
  4. Make it to the finals:

    • This was another hard thing to swallow.
    • I decided based on my experience it would be best to start back at the basics. Beginner bracket it was. From there my goal was to make it to the finals and that would confirm that I understood what I was doing and working with.

Spoiler alert -> we placed 2nd!!! Would have gotten first but I’ll cover that after my looking back section later.

Part 2 - implementation