presented by sendwithus
BattleSnake is a programming competition held in Victoria BC.
Teams from local schools and tech companies write AI clients for the game BattleSnake.
Last snake standing wins, prizes will be awarded to the most successful teams.
For more information or to register a team, visit battlesnake.io.
Questions? Email [email protected].
Running BattleSnake game server
This will walk you through setting up a game server instance. You probably don't need to do this unless you're helping improve BattleSnake for others.
-
Install Vagrant if you don't already have it on your machine. We use vagrant to set up Mongo and Redis in a virtual machine without making a mess on your machine.
-
Once installed, in the root of the directory, run the following command. It will take a few minutes to complete so you can work on the next few python steps in the meantime.
$ vagrant up
-
We'll use pip and virtualenv to run the python game server on your machine directly. pip is distributed with all modern versions of python but you may need to install virtualenv yourself.
-
Once installed, in the root of the directory, run the following commands. This will create a virtual environment locally and turn it on.
$ virtualenv env --no-site-packages $ source env/bin/activate
-
Install the python libraries needed for the server. You may occasionally need to run this again if you run into an error complaining about a missing library.
$ pip install -r requirements.txt
Note: If you get an error that looks like
error: command 'cc' failed with exit status 1
when pip tries to install gevent, try running this instead:$ CFLAGS='-std=c99' pip install -r requirements.txt
-
The frontend uses node and react. If you don't have node V4 or above, you'll need to update your copy. First install nvm. With nvm installed, run
nvm install
inside the project folder to use the right version of this project (defined in .nvmrc). You'll need tonvm use
to activate the right version then runnpm install
(the node package manager) to install all of the required libraries. -
We use foreman to run the game server. To install, you'll use Ruby's
gem
:$ sudo gem install foreman
-
With foreman installed, the python environment set up, and the vagrant VM setup finished, we're ready to run this shit!
$ bin/run
-
If you get some messages about workers and pids, and nothing looks like an error, switch to your browser and visit http://localhost:5000/.
You should be all set. To leave the project run:
$ deactivate
$ vagrant status
And to later re-enter the project, run:
$ source env/bin/activate
$ nvm use
$ vagrant resume
$ bin/run
Admin accounts
Only the 'admin' team can make certain changes such as registering teams. The first time you run the server, you'll need to create an admin account which can be done by running bin/admin
or heroku run bin/admin
in production.
Managing database
Occasionally, you may need to drop a collection in the MongoDB database (obv not in production).
$ vagrant ssh
[Connects to VM]
$ mongo battlesnake
MongoDB shell version: 3.0.8
connecting to: battlesnake
> show collections
system.indexes
team
user
> db.COLLECTION_NAME_HERE.remove({})
> exit
bye
$ exit
[logout of VM]
2015 Source Code
2015 Starter Snakes