NEW FEATURES FROM 0.74 to 0.75 (August 2000)
<Marc Gueury> <>
<Remi Coulon> <> NEW FEATURES FROM 0.73c to 0.74 (June 1999)
<Maido Remm> <> NEW FEATURES FROM 0.72a to 0.73c (April 1999)
<Marc Gueury> <> NEW FEATURES FROM 0.71c to 0.72a (May 1998)
<Maido Remm> <>
<Marc Gueury> <> NEW FEATURES FROM 0.71b to 0.71c (March 1998)
<Marc Gueury> <> NEW FEATURES FROM 0.71a to 0.71b (March 1998)
<Maido Remm> <>  NEW FEATURES FROM 0.71 to 0.71a (March 1998)
<Maido Remm> <>

Major changes:

NEW FEATURES FROM 0.70c to 0.71 (Feb.1998)
<Maido Remm> <>

Three major changes:

Qualifications have two modes: cars ordered by fastest lap time
(-q1 is mode 1) or by average speed (-q2 is mode 2).

Qualifying can have many separate sessions, controlled by -qs# value.
Qualifying lap count is chosen by -ql# value. Only one of those three
on command line is sufficient to trigger qualifivcation mode.

Default is mode 1, one session for 7 laps. Starting grid is based on
qualifying results. Qualifying speeds are written to report file.

If both practice and qualifications are requested, practice session is
hold before qualificatoions. This would allow practice for learning-capable
cars on unknown or randomly generated track.

Main loop of the program is restructured using ideas of Marc Gueury's
version for Visual C++. See the end of carz.cpp and car.h. I hope this
structure is more logical, easier to understand and modify, if necessary.

 Track data is read and computed by build_track() and track_setup()
in track.cpp. This is called only once in RARS initialization. All drawing
functions are defined void, using global variables from track.cpp.

Minor changes:

NEW FEATURES FROM 0.67 to 0.70c (Dec.1997)
<Maido Remm> <>

Five major changes:

All cars should have something like that in their con_vec():
if (s.starting) result.fuel_amount = MAX_FUEL;  // to define initial fuel load
result.request_pit = 0;                          // normally we do not go to pits
if (s.damage > 25000 || s.fuel < 10) {           // if necessary:
  result.request_pit = 1;                        // enter pit road
  result.repair_amount=s.damage;                 // repair all
  result.fuel_amount = MAX_FUEL;                 // refuel full tank!
Pit location is defined in track file on lines 10-13:
PIT_SIDE (+1 is right, -1 is left)
The pit location is defined in feets from START-FINISH lane (like s.distance).
Car is driven to the pits by main program and stopped in its pit stalls
for refueling and repair. Repair is done at 200 points/sec and refuel at
20 lb/sec. You can see both values on instrument panel. Car does not take
damage from grass while pitting but still takes damages from collisions.
It disappears from s.nearby when completely on pitlane and appears again
200 feets before coming out pits. A special flag is set in s.nearby for
car coming out from pits (see minor changes). After exiting, car is kept
close to wall by main program for 300 feets until it accelerates. See track.cpp for new track structure. It can be used for calculation of
minimal time spent in pits and adjust your pitting tactics according to that.
Different number of start rows can also be defined on command line
by -sr4 or -sr3 or -sr1 if you want.

As Ralph suggested, trackin and trackout structures are renamed to
lftwall and rgtwall, accordingly. Remember that track file defines
rgtwall! Old robots will work with trackin and trackout if they get
track description through get_track_description().

Wappucar needed a slight 'repair'.

Minor changes

For drivers important changes are in situation structure:

I also added more public information for cars:  (These are accessible through pcar[i]->.... call) Most of these can be also used for statistics showed in report file or
on-line. I suggest putting behind_leader at IP, it is correctly
showing even if the car is lap or many down the leader. You can find
the time difference to any car out of that! I used a new array
SF_crossing[car][lap nr.] for storing all start-finish lane crossing times.
This data is now printed out by report_lap_times() function to
trackfile.osf file at end of race. It is possible to restore the race
lap by lap (some substitute to movie). If you do not need this - comment
line at end of carz.cpp (last page) where report_lap_times() is.

BTW, there was a bug in older versions that spoiled s.distance values.
As s.distance was used in s.nearby also, this caused some strange
errors in collision avoidance functions, some close cars not being
reported while at different segment than our car.

Another bug was repaired average speed was sometimes not correlated with
car positions because time was calculated from moment when given car first
time crossed SF lane (start_time). It is now calculated from race start
(time_count = 0), which is the same for all cars.

All physical constants, including maximum friction (MYU_MAX), are now
defined in car.h and accessible to all cars. This comes handy if we want
to change them or make different leagues for F1, BTCC, Indy, rally. I also
put the suggested F1 values on comment line (friction being 1.8g from tyres
only, downforce can add 2-2.5g to that). I would like to see lighter
and more powerful cars with higher max fuel load. This would make fuel
strategy more important. But this needs major recoding in all cars.

May be we should just keep that in mind and include those physical
definitions in our curvespeed and brakedistance calculations.

STARTING SPEED is reduced to 20 fps because many cars now start on curve.

Length is again calculated as average of inner and outer rails.
Length calculation is removed from draw.cpp to track.cpp where it
naturally belongs.

Number of pit stops are reported in report file.

Instrument panel now shows also damage, fuel and behind leader values.

Race number is shown on scoreboard.

Cars are shown 1.5 x larger than actual size. All changes for that are
in drawcar() in draw.cpp.

Some ideas of Henning Klaskala included:

Tested on Linux and DOS.

NEW FEATURES FROM 0.65b to 0.67 (Nov.1997)
Torben Thellefsen <>

Henning Klaskala <> NEW FEATURES FROM 0.64 to 0.65b NEW FEATURES FROM 0.5 to 0.64

The following are new features of, or changes in, version 0.64 as compared with version 0.50: