
Battlecode 2015 – AI Programming Competition - dvorak42
http://battlecode.org/
======
x0054
I do remember back in the day playing AT Bots, it was a similar concept, only
you would write the bots in assembly, which was kind of fun, because on top of
the strategy, you also had to figure all the ways to profile your code. Like
for instance bit shifting instead of dividing, and such. You had to keep the
code light because the speed of your bot directly correlated to the how fast
the code would be executed. So, each processor cycle counted towards making
you faster, but speed up too much by cutting down your code, and your bot
would get dumber.

It would be interesting to see a game where only the API for the bot is
exposed, and the actual computation takes place on a separate machine (or same
machine, but separate processor). That way you can experiment with all kinds
of languages, or even possible hardware combinations. For competition your
code would be loaded on a VM instance or a physical machine which has
identical characteristics to all the other competing machines, and you go at
it. This way you are not limited to a given language or a set of libraries,
and can really explore all the possibilities.

~~~
ryusage
theaigames.com does this by running the game engine and bots as console apps
and communicating by sending simple commands through their input and output
streams. They generally provide some "starter bots" for a couple languages, in
which the message parsing is already handled for you, but they accept bots in
any language.

------
sagichmal
Looks fun!

    
    
        > What are the supported programming languages?
        Java and Scala.
    

Oh. Nevermind.

What's the most interesting version of a competition like this which doesn't
place restrictions on implementation language?

~~~
dvorak42
We're not happy about the restriction either, and hopefully we'll run a
Battlecode that doesn't have a programming language restriction, but we
haven't found a way to deal with limited instruction count execution that we
are happy with that is machine independent, and counting Java bytecode has
worked for us so far.

If there are other JVM languages people want supported, we'd be happy to take
pull requests on Github once we make the new gameplay public tomorrow.

~~~
jzwinck
Can you explain in more detail what you mean by "limited instruction count
execution that is machine independent"? For example:

\- Is it measuring the count and making sure it doesn't exceed some threshold,
or is the client API designed to actually give each client a specific number
of instructions and terminate if that is exceeded?

\- Does "machine independent" mean it needs to run outside of x86/amd64?

\- Would it offend your sensibilities if CPU cycles used by C programs counted
the same as those used by JVM programs?

~~~
dvorak42
In the past we've had it where where each bot is allowed a certain amount of
"computation", with different upgrades giving you more "computation" each
turn.

Machine-independent isn't really the write word, more of that we want the same
two bots fighting on the same maps to be deterministic regardless of the
machine its being run on.

For mechanics like this, we've found that bytecode instruction counts are the
best metric we currently have, since anything that is time-based could result
in different results depending how the CPU schedules the bots, and doing
something like using PIN or another system to count assembly instructions
turns it into a competition of who can write the most optimized assembly code.

------
vertis
While some of it is open to non-MIT students, it looks like to continue
through to the finals you need at least 50% MIT students on your team.

Should be fun anyway.

~~~
dvorak42
You can also compete for the top of the scrimmage rankings, and we are
considering adding an Open tournament again to allow all teams compete for
fame and glory.

~~~
entropy_
I definitely would like to see an open tournament. My friend and I are going
to be participating but neither of us are students. Just doing it for the fun
and educational value.

------
chrishare
This looks awesome. Are the winning bots' source available after the
tournament is concluded?

~~~
dvorak42
We don't explicitly require teams to open source their bot after the
tournament, since sometimes teams have special restrictions on publishing
their code. But some of the top teams have published their code or framework
online in the past.

------
ratsimihah
Any MIT student not participating in Battlecode here?

