- This article is about the history of Robocode, for the my first robot tutorial, please visit Robocode/My First Robot.
The first publicly available bots were uploaded to the Bot Exchange beginning on August 17, 2001. The rules were slightly different, based entirely on survival, so most bots fired infrequently and some not at all. A deprecated method, getGunCharge(), was used for much firepower calculation, but merely confuses the old bots in the current Robocode.
Brute was the first upload. Based almost entirely on sample.Tracker, Brute had a primitive sort of radar locking. Unfortunately, Brute's gun was always turned perpendicular to its body and only fired when the gun was facing the opponent - which rarely happened.
Jazzbot followed a day later. Jazzbot got stuck on the walls a lot, but wasn't as inept as Brute. Jazzbot used the following code to fire:
setTurnGunRight(normalRelativeAngle(e.getBearing() + (getHeading() - getRadarHeading()));. It targetted bots who shot it when possible, and also had a "team mode". The next version of Jazzbot had an intersting circular movement.
SquigBot was next, like the original Jazzbot, its movement was most similar to sample.Crazy. SquigBot had a complicated aiming system that allowed it to his sample.Walls. The aiming was basically linear, but inadequate by today's standards.
MarkVIII followed, it was less like the sample bots than the previous three, and had a leading aim that was not quite as good as SquigBot's. It was also capable of beating all the sample bots in melee. StalkerI, which came the same day, could beat the samples by today's rule if it always fired threes, but it didn't. Stalker was a modified and fairly successful Tracker, except for a wall bug.
SmartBot was the first bot of September '01 and did nothing productive, and StalkerIII was an upgrade from StalkerI. Two more upgrades followed: SquigBot 2 and Jazzbot4_1. Both used linear fire and had a sometimes locking radar. When both are always set to
fire(3), the results are close, whereas if they are let to use their original fire control code, Jazzbot wins handidly. SquigBot's movement was still crazy like, while Jazzbot's was an interesting version of SpinBot. SquigBot was the better melee fighter of the two.
CoreBot then became the first bot with multiple "cores" and an extendable framework. It was far bulkier than it would be today and had only two "cores". It was a wall rider in melee, and a rammer in one-on-one. Because of this, it usually finished 2nd in melee competitions.
DeathSeeker was an effective tracker/rammer, it attacked its opponent while making quick pauses to change direction more effectively. BaseBot was released on the same day and wasn't very good. MovingDuck was no better.
Rotator is possibly the most significant bot of the early collection. It had successful radar locking done with little code:
double theta = normalizeAngle(bearing-getRadarHeadingRadians()); if(theta<0) setTurnRadarLeftRadians(10000); else setTurnRadarRight(10000); Of course, that could be easily reduced, but it was nevertheless small and very effective. Rotator would charge in at a 30 degree angle and then orbit around the opponent at roughly a 90 degree angle. Every successful bot today can be traced back to this concept.