Assignment One: Robocode
Questions should be emailed to jarito AT lehigh DOT edu.
Description
Robocode is an IBM product that allows you to write a AI-controlled battletank
in Java. Your tank can be as simple or as sophisticated as you would like.
Your bot will then be pitted against other bots in class in a battle to the
death to see whose bot is the best.
Installation
Head over to the IBM website here
and click on the "Click to continue" link. An applet will load to make sure you
have the required Java version on your system. Robocode should work on any OS
that contains Java support, but we have only tested it on Windows XP and Fedora
Core 1 Linux, so we suggest you use one of those systems. Once the applet is
finished you will be transferred to a page that allows you to download the
Robocode jar file. Download the jar file to your system and execute it (usually
by double-clicking). This should set up and allow you to launch Robocode on your
system. When executed, you should see something like this:
You can download the install files from Lehigh servers for
Windows and
Linux.
Starting a New Bot
There is a tutorial on the IBM website explaining how to create a simple bot.
Click here
to take a look at it. It will familiarize you with the basic bot structures and
show you how to set up competitions to test your bots. Once you have completed the
tutorial, you will need more detailed information to begin customizing your bot.
The best place to start looking is the bot API on the IBM site, which can be found
here.
Make sure to use a unique name for your bot, something like you user ID or team name
will suffice.
You can use the local version of the documentation here.
Assignment
You are tasked with creating the best bot you can. Your entry will be tested in
two ways. The first is the standard attrition ladder int the winner / loser style.
All initial match ups will be determined by random. If there is an odd number of
robots, one will be given a pass in the first round. An example ladder is below:
In this example, there are four teams. In the first round, team one and three win.
They move on in the bracket while team two and four are entered into the "Loser's Bracket".
In the next round, one and three and two and four square off. Team one wins and
moves on while team three faces the winner from the two and four match. Teams
two and three then play with team two moving on to face the winner of the winner's
bracket. The championship is the winner of the winner's bracket vs. the winner of
the loser's bracket. In this case, teams one and two duke it out with team two
being the overall winner.
As this competition will happen in one day no changes will be allowed to the bot
in between matches. The second test will be a free for all where all bots are
pitted against all other bots in the same arena. After 10 rounds, Robocode will
produce a synopsis of the battle. An example is below.
You will need to turn in your bot before the due date. There are three parts to this assignment:
- The Bot - Once your bot is complete, go under the Robot menu and select
"Package robot for upload". In the resulting dialog make sure to include all
the names of your group members. While you will not be graded on your bot's
performance in the tournament, you will be graded on the quality of your
implementation. That means the if your bot gets stuck in a corner for 10
minutes, you will lose points. This will also include a code audit for
commenting, design and other coding standards. [20%]
- Writeup - A one page write up of the ideas you used in creating your bot.
For example, how does it detect enemies? Avoid fire? Manage its energy
levels? [40%]
- Presentation - A 1-3 slide power point presentation giving the basics of
your bot design. What makes your bot different? Why will it win? This must
be short (ie. Less than 3 minutes), lengths will be strictly enforced since
we all want to get to the battles, right? [40%]
FAQ
- You cannot assume that the battlefield will be of a specific
size. Your bot must adjust to all possible sizes. See the
getBattleFieldWidth and getBattleFieldHeight methods for details.
- Team names must be short and sweet as well as not containing
any words that might offend the University. Names like
ThisBotIsTheCoolestAndWillOwnz0rAllOtherBotsInTheUniverse will be
disqualified. Use your common sense.
- You must manage your gun's heat! You can only fire your gun
when the heat == 0. You will need to use the cooling rate and energy
of each shot to manage the gun's heat.
- No overriding the onDeath method to do anything stupid. If
you die, you die. You can't respawn, or pop up a window, or play
some Windows sound. Same with onRobotDeath. Just don't interrupt the
match to taunt the guy you just killed and you will be fine.
- Inheriting from the AdvancedRobot class will be helpful in
writing an advanced bot. Your bot may write to files to improve
it's AI. However, keep the writing to a minimum. If all the bots
are spewing out tons of information, the battle will be very slow.
- Use the examples! While the
example bots are pretty useless, each one implements a feature that
might be of interest to you. Combine some of these together and you
will get some useful behavior.
- There will be one other tournaments later in the
semester. This will allow all teams to make changes in their bot's
AI and test them against the rest of the class. KEEP YOUR AI!