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: