Season '99: races

For more information about the current rars season, mail to Gian-Carlo Pascutto

Race dates

7th March albrtprk.trk (Melbourne) mosport.trk here
11th April brazil.trk (Sao Paulo) ra.trk here
2nd May imola.trk (Imola) brands.trk here
16th May monaco.trk (Monaco) jerez.trk here
30th May barcelon.trk (Catalunya) indy500.trk here
13th June montreal.trk (Montreal) zandvort.trk here
27th June magnycrs.trk (Magny-Cours) tremblnt.trk here
11th July silver97.trk (Silverstone) adelaide.trk here
25th July austria.trk (A1-Ring) loudon.trk here
1st August hock.trk (Hockenheim) mlwaukee.trk here
15th August hungary.trk (Hungaroring) watglen.trk here
29th August spa.trk (Spa-Francorchamps) pocono.trk here
12th September monza-76.trk (Monza) buenos.trk here
26th September nurnburg.trk (Nurnburgring) estoril.trk here
17th October sepang1.trk
(Kuala Lumpur)
cstlcomb.trk here
31st October suzuka.trk (Suzuka) speed2.trk here
NOTE: The links present in the race results, specially those pointing to race movies, may be outdated.


Entries will be received by e-mail, directed to

The entries are of course, robot driver functions. They must be source code, either ANSI C or C++ to be compiled with GNU C/C++ for Linux. Please keep in mind that pointers and ints may not be the same size and an int is most definetely NOT 2 bytes (as it might be in DOS). They should run with version 0.74 of the RARS software available at Maximum TWO drivers per person are allowed.

Entries must be received by 8:00 GMT, the day of the race. If the net is slow, too bad, so send them as early as possible. It is better if I receive them a week early, in case there are any problems with compilation, linking, or execution. (I will inform you A.S.A.P.)

Any robots that cause run-time problems with any part of the software, including the other robots, will be disqualified. Gian-Carlo's judgement will be final here. I may take a quick try to fix things or disable the offending code, but you're obviously better off making sure everything works. In particular, check every division to ensure that the denominator will never be zero. The same applies to certain mathematical functions that can have illegal arguments, such as sqrt(). If you allocate RAM, with "new" or malloc(), be sure to do it only once, even if there are multiple races. (We can't have you accumulating more RAM with each race!) Also check for un-initialized variables that can cause seemingly random behaviour.

Robot code should not make any direct OS or BIOS calls, nor access memory in any strange ways. No peripheral hardware may be accessed, with the possible exception of disk reading during initialization (but see next paragraph). Robots may use the "extern" keyword to access any data that they can find, but may not alter such data. Any robot driver function that causes any problems with any other part of the software will simply not be used.

Your robot should be less than 200 000 bytes in size, and be reasonable about its memory and cpu usage.

Your robot may not crash into or hit other drivers on purpose. If you submit 2 robots, team tactics are allowed but strongly discouraged. I realize that teams tactics are important in AI and racing, but most collision avoidance code in RARS is simply not advanced enough to avoid disasters.

To be able to check whether your submission meets these rules, it should be human-readable (i.e. not obfuscated).

How/What to submit

Submissions should consist of a source code file with an optional data file. The source code file should contain the driver function to be entered into the contest.

There are some information requirements for the first few lines of the program file. The first few lines of every robot driver must have the following:

  1. the filename, your full name, your e-mail address, and your robot's name.
  2. What race you want to enter. You can say the track name or just the date, for example. (Just be clear.)
  3. Whether or not you want me to keep the source confidential.
  4. Tell me if your program needs to read a data file.
The robot driver function name should be identical or a reasonably close match to the name string contained in the program. Therefore, if we have a robot driver named "Charlie" the name of its function would be Charlie(), and it would be in a file named CHARLIE.CPP and if it reads a data file the file would be named CHARLIE.DAT. The filename(s) should not differ from the robot name by anything more than a sequence number at the end, and the lack of case distinctions. While the name need not be less than eight characters (it should be less than 254 however), in the interests of future compatibility, please show some restraint.

In the interest of bookkeeping, the filename must change for each new version of your software. The easiest way is just to append a sequence number, so when BURNS.CPP is changed it becomes BURNS1.CPP, and then BURNS2.CPP, etc. The robot name and the function name should not change. For example, they could remain "Burns" and Burns(). Of course you may rename all three if you want to, and then the filename should be the same as the robot name and function name.

Robots may read a data file. Hence, the entry may consist of two files, the program file and the data file. The filename for these two files must be the same, except for .dat extension on the data file. The robot file will have the extension .cpp or .c.

If your robot reads a data file it must be sent at the same time as the robot file. You must send a new data file when you send a new robot. They should always be sent in pairs to help keep me from using the wrong data file. It would be best if your data file began with its own name, and the robot checks it when it reads it, but I won't require that. You may send a new data file to go with an old robot, but also send a text file giving its file name, so that I know for certain which robot it goes with.

If possible, please zip your robots to speed up transmission and save net bandwidth.


Race points will be awarded as follows for each race:

Normal F1 races:

   1st - 10   2nd - 6   3rd - 4   4th - 3   5th - 2   6th - 1 

Extra races:

   1st -  5   2nd - 3   3rd - 2   4th - 1.5 5th - 1   6th - 0.5 

They will be accumulated after each race.

If a programmer enters 2 cars, only the best results will count.

Additional comments

All seasoned participants who wish to participate in the new season, I recommend you resubmit your robot so I am sure I have the right version.

If there are any questions, suggestions or comments, please contact Gian-Carlo Pascutto c/o