Starter Project Updates

At Battlesnake, our mission is to make it fun and accessible for anyone to become a better programmer, and with that in mind, we've spent some time in updating the Battlesnake Starter Projects, which is an important and common first step for most Battlesnake developers.

Updates to the Starter Projects Format

Something that has been incredibly fun this League is watching all the folks live streaming their Battlesnake journeys, especially people who are doing it for the first time. Watching someone else use software you have built can be nerve wracking!

A sample of the #livestreams feed in the Battlesnake Discord

Special shout out to Twitch streamers DrPolarHumenn, TheIdOfAlan and MishManners pictured above!

But the discomfort is completely worth it, as it helped us identify some friction points in the 'Getting Started' journey. We've applied some of those lessons learned to our Starter Projects.

  • Starter Projects now use the 'creating a repository from a template' GitHub feature, so that folks can get a clean copy of the code without having to make a fork.
  • Introduced a simple test harness to give folks a starting place for writing tests.
  • Added in some default 'avoid neck' behaviour to the Starter Projects, so that brand new Battlesnakes move randomly, but don't turn back on themselves and choose the forbidden move.
  • Simplification of the project ReadMe.md files, with all common information now living at docs.battlesnake.com, to make reading and maintenance easier.
  • Extra comments that demonstrate how to interact with the Battlesnake API, as well as provide suggestions and guidance on what changes to make to your Battlesnake first.

Updated set of Starter Languages

We have also switched up which programming languages we are supporting for the 'Official Starter Projects'.

The current list of Officially Supported Starter Projects are as follows:

Supported Official Starter Project languages

Python, Javascript and Go remain as core Starter Projects, but we have some exciting new additions written in TypeScript and Rust! And might I add, huge shoutout to Martin Amps who did the bulk of the work on getting the Rust Starter Project going - thank you Martin!

And if you are thinking "Hey, wasn't there a Ruby and Java Starter Project as well? Where are they?" do not despair - Ruby and Java remain, but have rotated into Community Support, and are still available for all Battlesnake Developers to use.

I really care about <CODING LANGUAGE>, what can I do?

We know that the Battlesnake community is full of amazing talent and skill, and as a collective group, we can support many many more Starter Projects beyond the official set.

If you are interested in having a Starter Project in a specific programming language, or are looking for ways to contribute and support the Battlesnake Community, please check the list of all Starter Projects where you can submit new projects, or find one to contribute to. You'll find the Ruby and Java Starter Projects already there, ready for your Open Source contributions. In fact, our Rust Starter Project could use a bit of community assistance in getting a simple testing framework put in place!

We'd be delighted if the Battlesnake Community helped keep a diverse and interesting collection of community Starter Projects up-to-date so that future developers can use them. Make sure to check individual repos for contribution guidelines!