Description of possible Parameters in GDB File

MerlinC

Registered
After searching for hours to find a document where all possible Parameters in an rF2 GDB file are contained and briefly explained I did start this thread. Thanks to Tosch there was a good starting point. Further Information was allready JKA.

I will further update this thread based on the information which will be available. At some point of time there will be hopefully some documentation from ISI available and this thread is no longer needed

If a parameter is not fully understood I'll add a remark and put the text in between question marks. Please be aware that this document is WiP - if you see any failures or wrong statements please feel free to comment as needed.

Basefile was the GDB file from Nordschleife as provided by Tosch. I did not change all the names to standard names - just consider "Nordschleife" as a placeholder for your track name ;-)


--------------------------------------------------------------------------------

Nordschleife_Tourist_Summer //Base File
{
Filter Properties = GTWEC rFRS F2_2012 RCC ISIFM IndyCar TMOD
Attrition = 30
TrackName = Nordschleife Tourist // Name of Track
EventName = Tourist drives summer
GrandPrixName = Tourist drives summer //this must be the same as event name in order to sort circuit info correctly.
VenueName = Nordschleife_Tourist
VenueIcon = Nordschleife_Tourist\Nordschleife_TouristIcon.dds
Location = Nuerburg, Germany
Length = 20.832 KM / 12.944 Miles
TrackType = Permanent Road Course
Track Record = Stefan Bellof, 371.130
FormationAndStart=2 // formation lap with rolling start (safety car leads the field and peels off into the pits)
//RollingStartLoc=1 // Start from alternate grid
TerrainDataFile=..\Nordschleife_Tourist.tdf // terrain file override
HeadlightsRequired = true // whether headlights are required at night
Max Vehicles = 39

NumStartingLights=5

///////////////////////////Pit Groups///////////////////////////////////////////////
// format is: PitGroup = <# of vehicles sharing pit>, <groupname>
PitGroupOrder
{
PitGroup = 2, Group14
PitGroup = 2, Group13
PitGroup = 2, Group12
PitGroup = 2, Group11
PitGroup = 2, Group10
PitGroup = 2, Group1
PitGroup = 2, Group2
PitGroup = 2, Group3
PitGroup = 2, Group4
PitGroup = 2, Group5
PitGroup = 2, Group6
PitGroup = 2, Group7
PitGroup = 2, Group8
PitGroup = 2, Group9
}
PitOrderByQualifying = TRUE //?Does this change the Pit-Order depending on Qualifying result?

SafetyCarAvailable = 0 // 0=no Safety Car ; 1=Safety Car depending on threshold multiplier (see SafetyCarRoadMult)
MinimumYellowLaps = 1
LeadYellowLaps = 2
RacePitKPH = 60
NormalPitKPH = 60
PitlaneBoundary = 1 // 0 = no clear boundary between track and pits, so this requires a request in order to take a pitstop
GarageDepth = 2.0 // distance, which AI car must drive straight before turning into pitlane (how deep car is placed in garage). If AI has problems to exiting garage safely, adjusting this might help
TestDaystart = 7:00
Practice1Start = 8:00
Practice2Start = 9:00
Practice3Start = 10:00
QualifyStart = 10:00
RaceStart = 14:00
RaceLaps = 6
// Safety car threshold multipliers, in other words an adjustment for the sensitivity of the game to calling
// full-course cautions. These can be different for road vs. oval courses. Lower numbers result in more
// full-course cautions; default=1.0, possible values are 0.01 (very sensitive) and up. Values more than
// 5.0 will probably result in no full-course cautions being called by the game (note that there are now
// multiplayer admin commands to call cautions).
SafetyCarRoadMult=5.00

// Whether full-course cautions may be called for a spin more than 90 degrees where the driver keeps going.
// These can be different for road vs. oval courses. Higher values will result in more full-course cautions
// due to these temporary spins; default=0.0, possible values are 0.0-2.0.
SpinRoadSeverity=0.1



///////////////////////////Time-of-day lighting//////////////////////////////////////
ShadowMinSunAngle=15.0
ShadowMinDiffusion=-0.6 // min diffusion when sun is 100% occluded by clouds (range -1.0 to 1.0)
ShadowMaxDiffusion=0.2 // max diffusion when sun is 0% occluded by clouds (range -1.0 to 1.0)
ShadowSplitRatio=1.0
NightLightThreshold=0.5
SunApeture=0.06 // fov in radians of sun camera for computing cloud cover
LocalCloudIntensity = 0.25 // intensity adjustment for cloud lighting 0.0: amb = diff; 1.0: amb/diff same as scene

Latitude = 50.3 // degs from Equator (range: -90 to 90, positive is Northern Hemisphere)
Longitude = 6.95 // degs from GMT (-180 to 180, positive is East)
Altitude = 600.0 // meters above sea level
RaceDate = July 14, 2014 // default date for the race
TimezoneRelativeGMT = 1.0 // hours compared to Greenwich Mean Time (should be negative to the West)
DSTRange=(88.0, 298.0, 2013, 2014) // (start day 1.0-367.0, end day 1.0-367.0, start year, end year); multiple lines allowed
// U.S. example, where DST changed in 2007 (previous and future changes not simulated here):
// DSTRange=(94.8, 301.3, 1987, 2006) // approximation of 1st Sunday in April to last Sunday in October
// DSTRange=(70.8, 308.3, 2007, 9999) // approximation of 2nd Sunday in March to first Sunday in November

////////////////////////////////////////////////////////////////////////////////////
// Variables to control behavior when Cutting the track and/or going wrong direction
////////////////////////////////////////////////////////////////////////////////////
CutLeavingThresh = 2.5 // Threshold for leaving track
CutJoiningThresh = 1.0 // Threshold for re-joining track
CutPassPenalty = 0.40 // Penalty for each driver we pass (this is an inaccurate indicator)
CutTimeRatioMax = 0.95 // Start penalizing even if we lose 5% of time
CutTimeRatioPenalty = 0.35 // Penalty for fraction of time savings
CutSecondsSaved = 0.75 // Penalty for each second saved
CutWorstYawPenalty = 1.5 // Penalty for staying under control
CutDirectionalPenalty = 1.0 // Penalty (actually reward) for being in wrong direction
CutWarningThresh = 1.6 // Threshold for warning (or disallowance of lap)
CutStopGoThresh = 3.0 // Threshold for immediate stop/go penalty

///////////////////////////Setup Information//////////////////////////////////////////
SettingsFolder = Name_of_Track // Sub-folder to store Setups; typical value "TrackName"
SettingsCopy = Name_of_Track.svm // ?Standard Setup?
SettingsAI = Name_Of_Track.svm // Setup to be used by AI


////////////////////////////////////////////////////////////////////////////////////
RearFlapZone // DRS for race sessions, actual data is wrapped inside brackets { and }
{
MinimumCrossings=3 // how many times you must cross the detection before it is allowed
TimeThreshold=1.0 // how many seconds behind another car for it to be allowed
DetectionLapDist=111.1 // distance around track from s/f line where time threshold is detected
ActivationLapDist=222.2 // beginning of DRS zone
DeactivationLapDist=333.3 // end of DRS zone (DRS zones can be wrapped around s/f line and you can have multiple DRS zones)
}
// Remark: Clarification how multiple DRS Zones (RearFlapZones) can be configured needed


///////////////////////////SCORETOWER DATA////////////////////////////////////////////

ScoreboardFont=Malaysia_SCOREFONT.tga // default is scoreboardfont.bmp
ScoreboardBackground=SCORETOWERBKG.tga // default is scoreboardbkg.bmp

ScoreboardMaxEntries=10 // how many car numbers can be displayed on tower (default is 32)
ScoreboardStartX=0.0 // x-position in texture to write first car number (default is 0)
ScoreboardStartY=0.0 // y-position in texture to write first car number (default is 10)
ScoreboardIncX=0.0 // increment in x-position for each new car number (default is 0)
ScoreboardIncY=51.2 // increment in y-position for each new car number (default is 16)
ScoreboardScaleX=4.140 // scale multiplier for x (default is 1.0)
ScoreboardScaleY=1.040 // scale multiplier for y (default is 1.0)


///////////////////////////LOOSE OBJECT DATA///////////////////////////
//<mass>, <inertia x>, <inertia y>, <inertia z>, <spring>, <damper>, <friction>
sign_HayBayle=(70, 25.0, 25.0, 20.0, 7000.0, 420.0, 0.8 )
sign_KmMarkerA=(20, 7.0, 7.0, 6.5, 2000.0, 120.0, 0.4 )
sign_TurnMarkerA=(24, 8.5, 8.5, 8.0, 2400.0, 144.0, 0.4 )
post_reflectorA=(12, 4.0, 4.0, 3.5, 1200.0, 72.0, 0.5 )
post_FPostB=(10, 3.3, 3.3, 3.0, 1000.0, 60.0, 0.7 )
sign_FenceB=(20, 7.0, 7.0, 6.5, 2000.0, 120.0, 0.8 )
}
 
Last edited by a moderator:
Here is my Nordschleife GDB file. I have inserted all explanations I've found in other gdb files.

Nordschleife_Tourist_Summer
{
Filter Properties = GTWEC rFRS F2_2012 RCC ISIFM IndyCar TMOD
Attrition = 30
TrackName = Nordschleife Tourist
EventName = Tourist drives summer
GrandPrixName = Tourist drives summer //this must be the same as event name in order to sort circuit info correctly.
VenueName = Nordschleife_Tourist
VenueIcon = Nordschleife_Tourist\Nordschleife_TouristIcon.dds
Location = Nuerburg, Germany
Length = 20.832 KM / 12.944 Miles
TrackType = Permanent Road Course
Track Record = Stefan Bellof, 371.130
//FormationAndStart=2 // formation lap with rolling start (safety car leads the field and peels off into the pits)
//RollingStartLoc=1 Start from alternate grid
TerrainDataFile=..\Nordschleife_Tourist.tdf // terrain file override
HeadlightsRequired = true // whether headlights are required at night
// Max Vehicles = 39

// DefaultScoring overrides
// SafetyCarAvailable = 0
// MinimumYellowLaps = 1
// LeadYellowLaps = 2
RacePitKPH = 60
NormalPitKPH = 60
PitlaneBoundary = 1 // 0 = no clear boundary between track and pits, so this requires a request in order to take a pitstop
GarageDepth = 2.0
TestDaystart = 7:00
Practice1Start = 8:00
Practice2Start = 9:00
Practice3Start = 10:00
QualifyStart = 10:00
RaceStart = 14:00
RaceLaps = 6
// Safety car threshold multipliers, in other words an adjustment for the sensitivity of the game to calling
// full-course cautions. These can be different for road vs. oval courses. Lower numbers result in more
// full-course cautions; default=1.0, possible values are 0.01 (very sensitive) and up. Values more than
// 5.0 will probably result in no full-course cautions being called by the game (note that there are now
// multiplayer admin commands to call cautions).
SafetyCarRoadMult=5.00

// Whether full-course cautions may be called for a spin more than 90 degrees where the driver keeps going.
// These can be different for road vs. oval courses. Higher values will result in more full-course cautions
// due to these temporary spins; default=0.0, possible values are 0.0-2.0.
SpinRoadSeverity=0.1

NumStartingLights=5

// Time-of-day lighting
ShadowMinSunAngle=15.0
ShadowMinDiffusion=-0.6 // min diffusion when sun is 100% occluded by clouds (range -1.0 to 1.0)
ShadowMaxDiffusion=0.2 // max diffusion when sun is 0% occluded by clouds (range -1.0 to 1.0)
ShadowSplitRatio=1.0
NightLightThreshold=0.5
SunApeture=0.06 // fov in radians of sun camera for computing cloud cover
// LocalCloudIntensity = 0.25 // intensity adjustment for cloud lighting 0.0: amb = diff; 1.0: amb/diff same as scene

Latitude = 50.3 // degs from Equator (range: -90 to 90, positive is Northern Hemisphere)
Longitude = 6.95 // degs from GMT (-180 to 180, positive is East)
Altitude = 600.0 // meters above sea level
RaceDate = July 14, 2014 // default date for the race
TimezoneRelativeGMT = 1.0 // hours compared to Greenwich Mean Time (should be negative to the West)
DSTRange=(88.0, 298.0, 2013, 2014) // (start day 1.0-367.0, end day 1.0-367.0, start year, end year); multiple lines allowed
// U.S. example, where DST changed in 2007 (previous and future changes not simulated here):
// DSTRange=(94.8, 301.3, 1987, 2006) // approximation of 1st Sunday in April to last Sunday in October
// DSTRange=(70.8, 308.3, 2007, 9999) // approximation of 2nd Sunday in March to first Sunday in November

///////////////////////////////////////////////////////////////////////

CutLeavingThresh = 2.5 // Threshold for leaving track
CutJoiningThresh = 1.0 // Threshold for re-joining track
CutPassPenalty = 0.40 // Penalty for each driver we pass (this is an inaccurate indicator)
CutTimeRatioMax = 0.95 // Start penalizing even if we lose 5% of time
CutTimeRatioPenalty = 0.35 // Penalty for fraction of time savings
CutSecondsSaved = 0.75 // Penalty for each second saved
CutWorstYawPenalty = 1.5 // Penalty for staying under control
CutDirectionalPenalty = 1.0 // Penalty (actually reward) for being in wrong direction
CutWarningThresh = 1.6 // Threshold for warning (or disallowance of lap)
CutStopGoThresh = 3.0 // Threshold for immediate stop/go penalty

SettingsFolder = Nordschleife_Tourist_Summer
SettingsCopy = Nordschleife_Tourist_Summer.svm
SettingsAI = Nordschleife_Tourist_Summer.svm
}
 
@Tosch: Thanks for the very good starting point. I'll start a list of all Parameters at the beginning of this thread, include new information and keep it updated.

@All: If you have further information just post the new information at the end of this thread.
 
Few items, what comes to my mind...

RearFlapZone => DRS for race sessions, actual data is wrapped inside brackets { and }
{
MinimumCrossings=3 => how many times you must cross the detection before it is allowed
TimeThreshold=1.0 =>how many seconds behind another car for it to be allowed
DetectionLapDist=111.1 => distance around track from s/f line where time threshold is detected
ActivationLapDist=222.2 => beginning of DRS zone
DeactivationLapDist=333.3 =>end of DRS zone (DRS zones can be wrapped around s/f line and you can have multiple DRS zones)
}

GarageDepth = 1.0 => distance, which AI car must drive straight before turning into pitlane (how deep car is placed in garage). If AI has problems to exiting garage safely, adjusting this might help.

You can specify loose object data in gdb file like this:
sign_HayBayle=(65, 20.0, 20.0, 15.0, 6900.0, 420.0, 0.8 ) => <mass>, <inertia x>, <inertia y>, <inertia z>, <spring>, <damper>, <friction>

Also scoreboard data is specified in gdb, but I cannot remember correct format right now... :) Most likely they can be found on ISI tracks Silverstone and/or Malaysia.

Pitgroup order is specified also in gdb. I think at least Silverstone uses them. Cannot remember correct format, need to check that out.

Cheers!
 
RearFlapZone // DRS for race sessions, actual data is wrapped inside brackets { and }
{
MinimumCrossings=3 // how many times you must cross the detection before it is allowed
TimeThreshold=1.0 // how many seconds behind another car for it to be allowed
DetectionLapDist=111.1 // distance around track from s/f line where time threshold is detected
ActivationLapDist=222.2 // beginning of DRS zone
DeactivationLapDist=333.3 // end of DRS zone (DRS zones can be wrapped around s/f line and you can have multiple DRS zones)
}
// Remark: Clarification how multiple DRS Zones (RearFlapZones) can be configured needed

Each DRS zone is configured inside { } - brackets.
 
Each DRS zone is configured inside { } - brackets.

Meaning that two DRS Zones could look like this? Looked for the entry in available Silverstone and Malaysia tracks - both tracks had just one RearFlapZone (DRS Zone defined) but Formula1 GP had 2 DRS Zones on both tracks?!

RearFlapZone // DRS Zone 1
{
MinimumCrossings=3
TimeThreshold=1.0
DetectionLapDist=111.1
ActivationLapDist=222.2
DeactivationLapDist=333.3
}

RearFlapZone // DRS Zone 2
{
MinimumCrossings=3
TimeThreshold=1.0
DetectionLapDist=444.4
ActivationLapDist=555.5
DeactivationLapDist=666.6
}
 
Last edited by a moderator:
Have you been able to get the 'pit stop strategies' line to work in any tracks GDB? I haven't managed to get it working, but it worked fine on rf1.
 
First important thing is to clean up the Cut corridors with dev mode: the cut corridor should only cover the legal surface.
Protrusions from the auto generated corridors need to cleaned up. According FIA regulations Curbs are not part of the legal surface.


- Trigger point is the cars center pivot point (not the wheels)
- Orange line: CutLeavingThresh defines the legal borders. CutLeavingThresh = 1/2 car width (1,2 - 1,3 meters)
- Yellow Line: CutJoiningTresh-line (in meters) is less then the CutLeavingThresh
- Blue Line: Cut detection start when the cars center pivot point crosses the CutLeavingThresh-line and stops when it crosses the CutJoiningTresh-line

GRAB_002.jpg


- Time Calculations are compared with an AIW laptime: (Fast Path).
CutTimeRatioMax = 0.95 // Start penalizing even if we lose 5% of time

CutTimeRatioPenalty = 0.375 // Penalty for fraction of time savings
CutSecondsSaved = 0.675 // Penalty for each second saved

If the cut path is slower as the CutTimeRatioPenalty (slower as 95% AI Speed): then there is no penalty calculation.
if the result of the CutTimeRatioPenalty + CutSecondsSaved is bigger then the CutWarningThresh, then there you get a warning.
After 2 warnings you'l get a Stop and Go.

- These seem to be the same for all tracks
CutWorstYawPenalty = 1.5 // Penalty for staying under control,
CutDirectionalPenalty = 1.0 // Penalty (actually reward) for being in wrong direction

- Fine tuning:
CutWarningThresh = 1.6 // Threshold for warning (or disallowance of lap) (lower value = more sensitive, higher = less sensitive)

- Immediate S/G
CutStopGoThresh = 3.0 ==> 3.0 seems to be the max value.
 
First important thing is to clean up the Cut corridors with dev mode: the cut corridor should only cover the legal surface.
Protrusions from the auto generated corridors need to cleaned up. According FIA regulations Curbs are not part of the legal surface.

S397's AIW creation tutorial doesn't clearly specify the difference between corridor and cut areas, so I assume they are the same? I define the cut areas by changing the white and red lines of the corridor?

- Trigger point is the cars center pivot point (not the wheels)
- Orange line: CutLeavingThresh defines the legal borders. CutLeavingThresh = 1/2 car width (1,2 - 1,3 meters)

so I'd write:
CutLeavingThresh = 1.3 // for 1.3 meters?

For example I saw a track (Monza) where that number is 100 and effectively you can cut any corner and would never get a warning.


- Yellow Line: CutJoiningTresh-line (in meters) is less then the CutLeavingThresh
- Blue Line: Cut detection start when the cars center pivot point crosses the CutLeavingThresh-line and stops when it crosses the CutJoiningTresh-line

This is amazing info, thanks!
 
S397's AIW creation tutorial doesn't clearly specify the difference between corridor and cut areas, so I assume they are the same? I define the cut areas by changing the white and red lines of the corridor?

No, they are not the same:
- AI corridors are the Blue/White lines.
- Collision corridors are the Red lines.
- Cut corridors are the Cyan (light blue) lines

You can toggle these in the Show/hide menu.
20181101162451_1.jpg



You can select 1 or more waypoints to adjust the corridors. (shift+arrowkeys or shift+alt arrowkeys)
When working on the Cut corridors or any other corridor: hide all other stuff. ;)

20181101162458_1.jpg


so I'd write:
CutLeavingThresh = 1.3 // for 1.3 meters?
Yes, the value is in meters and it should be +/- 1/2 the cars width. For a karting track this will be a bit less then 1.3 meters.
 
Thanks, will try again tonight. I did select a waypoint but shift + arrows wasn't doing anything, maybe because I was using the right shift.
 
Back
Top