Running a Battlesnake Competition

Battlesnake is a community run open source AI competition, pitting player implemented bots against each other in a multiplayer snake arena.

Bots are simple web-servers which must respond to a defined API, and so can be implemented in any language. A yearly competition brings people together from all over the world to compete in Victoria, Canada.

In my role as a development manager, we try to run events that push the team outside of their comfort zone a bit, whilst having a little fun. Previously I have successfully run a Vindinium day (a similar AI competition which sadly seems to have disappeared), and discovered Battlesnake whilst looking for a replacement.

Battlesnake is a great project, but has a couple of shortcomings when it comes to my particular use case:

  1. Bots are implemented as web servers, which would require opening ports in the company firewall in order to use the public server. Big no no from the IT department.
  2. As a team building excercise, it's desirable to run a private competition so that the devs are competing which each other, instead of internet strangers.


To meet the above needs, I created Battlesnake_ui; a light-weight Battlesnake game server aimed at internal competitions of limited size.

It can be found on Github, instructions for use will follow in another post shortly.


  • Auto match start mode for match making during development / free play
  • Manual start mode to allow full control during competition
  • TV page for showing games on big screens
  • Admin UI for configuration
  • Simple single package deployment

The Plan

Plan for the day will be as follows:

  • Intro session to describe the game
  • Forming of teams
  • Free time to develop a bot. Free access to match making during this time for testing
  • Pizza
  • Competition time
    • League
    • Knockout
    • Longest snake
  • Prizes and close

This format has worked well in the past; expect a post-mortem post once the event finishes.