NEW FEATURES FROM 0.74 to 0.75 (August 2000)
<Marc Gueury> <email:mgueury@skynet.be>
<Remi Coulon> <email:Remi.Coulom@imag.fr>
-
Accurate lap time asked by Remi C.
-
A way to draw the trajectory of cars asked by Marc G. (See bulle2.cpp)
-
Windows: Correction of the bug in gview2d (Windows) asked by Jussi P.
-
Windows: gview2D: improvement of the drawn of the road
-
Windows: problem with CreateDIBSection on Windows 98 solved.
-
Windows: Include directories are now in the project. VC++ does not need to be configured anymore.
-
Linux: linux_install.sh removed, and new better makefile that uses the directory structure.
-
Linux: Source files adapted for the new and better compiler on Linux "egcs 1.1.2".
-
Lot of new cars:
-
-
Apex84
-
Bug
-
Bulle2
-
DGN
-
Djoefe
-
Dodger1
-
Douge1 (new datafile)
-
Felix15
-
JOCOSA82
-
K1999V4
-
SAD01
-
Sparky4
-
Viper2hc
NEW FEATURES FROM 0.73c to 0.74 (June 1999)
<Maido Remm> <email:mremm@ebc.ee>
-
New friction model available: -s2 gives more realistic friction model, with skidding modelled at high slip speeds.
Maximum friction for this model is 1.8, which is more realistic for the race car on paved surface. Try it out. Of course, the robot
should be aware that friction is increased if surface == 2 and use shorter braking distance and higher curve speeds.
-
New situation data available for driver:
-
double fuel_mileage; // miles/lb at last lap
int laps_to_go; // laps remaining to be completed
Use that for calculating how much fuel you really need to complete the race. Consider also that the real fuel mileage
will depend on the amount of your damage. This is because the air drag is dependent from your damage.
-
New leaderboard in DOS and UNIX. More data shown. Rotate between data with 'd' and 'D' keys. Rotate between different
speeds with 'a' key. Resize the leaderboard size with constants LEADERS_A and LEADERS_B in file gi.h. Scoreboard is not necessary any
more!
-
Instrument panel (YELLOW) shows less data (only damage and fuel) at higher display speeds.
-
Skidmarks shown only for the single car - the same car that is designated for viewing at instrument panel. Skidmarks
switched on/off with capital 'S'. Skidmarking automatically jumps to next car if new designated car is chosen by UP or DOWN arrow.
Useful for evaluating trajectories and watching chosen car on track.
-
Separate record files for different surfaces: record0.dat, record1.dat, record2.dat.
NEW FEATURES FROM 0.72a to 0.73c (April 1999)
<Marc Gueury> <email:mgueury@skynet.be>
-
help.htm added in Main directory
-
Problems with long names solved
-
Windows: OpenGL, problem with car colors corrected, 3 mode: full screen, windowed, normal mode.
-
Windows: New interface for Movie: Disabled/Record/Replay
-
Windows: Resize of the Rars window
-
Windows: Rars.ini added to change the default value of the starting windows (laps, cars, ...)
-
Correction of colors in driver.cpp
-
Bug corrected in CARZ.CPP : line RACEMODE = 0 in RaceManager::AllInit() removed.
-
Bug corected in CARZ.CPP line 1057: out_count removed.
-
New directory added <movies> with a movie sample.
NEW FEATURES FROM 0.71c to 0.72a (May 1998)
<Maido Remm> <email:mremm@ebc.ee>
<Marc Gueury> <email:mgueury@skynet.be>
-
Multiple tracks in one run (and season file)
-
Race length defined in miles using -l option
-
Track records and race fastest lap
-
Some car and track data is made non-public
-
s.dead_ahead based on braking distance instead of car length
-
new active keys 'a', 'b'
-
air drag is dependent of damage
-
different scoring schemes available (F1, Indy, Nascar, BTCC)
-
improved documentation (new tutorial + java applet showing tracks)
NEW FEATURES FROM 0.71b to 0.71c (March 1998)
<Marc Gueury> <email:mgueury@skynet.be>
-
support for Visual C++
-
some memory leaks corrected in carz.cpp
NEW FEATURES FROM 0.71a to 0.71b (March 1998)
<Maido Remm> <email:mremm@ebc.ee>
-
s.starting is initialized (thanks to Kim Laurio)
-
A bug fixed in q_avgspeed calculations.
-
While qualifying, cars that wouldn't qualify are grey on leaderboard.
-
Cars that would qualify in current situation are black.
-
Race length in miles and km is reported in outfile.
-
Robots will not pit in qualifications by default.
NEW FEATURES FROM 0.71 to 0.71a (March 1998)
<Maido Remm> <email:mremm@ebc.ee>
Major changes:
-
Qualifications have cutoff value defined in car.h. It is currently set to 120%.
-
Cars that are slower than (fastest qualification speed / 120%) will not
participate in race. Also if qualification mode is 2 (this is for average
speed -q2), cars that could not finish all qualifying laps will not qualify.
-
Pitting is now allowed in both qualification and practice. Just for reality.
-
It can have some point while qualifying for fastest lap. Don't forget disable
it in your robot code if you DO NOT want to pit. And don't forget to reduce
fuel load in start of qualifying!
-
Tracks are read from subdirectory "tracks", so you don't have to copy them to main
-
directory. Results will still be printed into main directory.
NEW FEATURES FROM 0.70c to 0.71 (Feb.1998)
<Maido Remm> <email:mremm@ebc.ee>
Three major changes:
-
Qualifications
-
New structure of main program (RaceManager class etc.)
-
build_track() and drawtrack() are separated.
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:
-
For simplification, lap[] array is merged with new_data[]. This refreshes
-
leaderboard if necessary.
-
Position[] is calculated within sortem() or qsortem(), together with order[]
-
New member of track_description is double seg_dist[] - the distance from
-
SF lane to the end of each track segment.
-
Race report has a new format, including more statistical data for each car.
NEW FEATURES FROM 0.67 to 0.70c (Dec.1997)
<Maido Remm> <email:mremm@ebc.ee>
Five major changes:
-
Pits coded by track file
-
Track can be placed at any angle (SF has still to be on straigth)
-
Cars are placed from SF line, at desired number of rows and
-
the starting row can extend to previous curve(s).
-
Cars can start with any fuel load and can refuel only in pits
-
Drivers and their colors are defined in separate file: drivers.cpp
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)
PIT_ENTRY PITLANE_START
PITLANE_END PIT_EXIT
PITLANE_SPEED (fps)
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.
-
s.distance is zero at SF line (used to be at start of first segment)
-
These data (and track length) is accesible to drivers by
-
get_track_description() function.
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.
-
Track start angle and starting rows are defined by track file in:
TRK_STRT_X TRK_STRT_Y TRK_STRT_ANG (4th line)
and
FINISH START_ROWS (9th line)
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:
-
s.nearby[i].coming_from_pits (is set when car is less than 200 feets
-
from pit exit. Designed for safety purposes - you will know that this car
can soon cross your way)
-
s.out_pits (use that if you want do special calculations for speed while
-
still kept close to track wall by main program for 300 feets after exit)
I also added more public information for cars: (These are accessible through pcar[i]->.... call)
-
out // set 1 when out, 2 if in pits
-
done // 1 if finished race
-
laps // how many laps completed
-
seg_id // located at which segment
-
distance // how many feets travelled from SF line
-
started // starting position
-
pit_stops // how many?
-
last_pit_visit // at end of which lap?
-
on_pit_lane // whether car is on pit lane (disappears from s.nearby)
-
pitting //standing in pits
-
coming_from_pits //just to appear on track (shown again in s.nearby)
-
best_lap_speed // in fps
-
last_lap_speed // in fps
-
laps_lead // increases if lead at SF crossing
-
lap_time // last lap time in seconds
-
behind_leader // in seconds
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:
-
MAX_LEADERS defines number of leaders on leaderboard. See gi.h
-
draw.cpp uses sprintf() instead of make_dec_string()
-
Drivers that are out of race are marked different color (TRACK_COLOR)
-
on scoreboard and leaderboard. Leaderboard also shows cars red while
they are on pit lane
Tested on Linux and DOS.
NEW FEATURES FROM 0.65b to 0.67 (Nov.1997)
Torben Thellefsen <torben@dir.dk>
-
Added the pitting code used in Ralph Scott's tournament.
-
Added default pitting code to all drivers.
-
Fixed up the makefile.
-
Everything now compiles without errors or warnings on Linux.
-
Moved definitions of car colours to carz.cpp.
-
Fixed various little things.
Henning Klaskala <bm321465@muenchen.org>
-
Added "random track" feature - specify "random" as your track and watch...
-
Fixed several things about floodfills.
-
Speeded up floodfills in Linux considerably.
NEW FEATURES FROM 0.64 to 0.65b
-
Additions to s.nearby (5 cars seen)
-
Semielastic collisions
-
Sideview mirrors
-
Collision flash
-
Movie recording
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: