Description of possible Parameters in GDB File

Discussion in 'Track Modding' started by MerlinC, Aug 21, 2014.

  1. MerlinC

    MerlinC Registered

    Joined:
    Nov 3, 2012
    Messages:
    282
    Likes Received:
    3
    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: Aug 21, 2014
    DA and Mulero like this.
  2. Nuno Lourenço

    Nuno Lourenço Registered

    Joined:
    Oct 19, 2010
    Messages:
    593
    Likes Received:
    65
  3. Tosch

    Tosch Registered

    Joined:
    Oct 5, 2010
    Messages:
    1,872
    Likes Received:
    51
    Here is my Nordschleife GDB file. I have inserted all explanations I've found in other gdb files.

     
  4. MerlinC

    MerlinC Registered

    Joined:
    Nov 3, 2012
    Messages:
    282
    Likes Received:
    3
    @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.
     
  5. Jka

    Jka Member Staff Member

    Joined:
    Jan 31, 2011
    Messages:
    954
    Likes Received:
    213
    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!
     
  6. Jka

    Jka Member Staff Member

    Joined:
    Jan 31, 2011
    Messages:
    954
    Likes Received:
    213
    Each DRS zone is configured inside { } - brackets.
     
  7. MerlinC

    MerlinC Registered

    Joined:
    Nov 3, 2012
    Messages:
    282
    Likes Received:
    3
    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: Aug 21, 2014
    Vance Le Garde likes this.
  8. RoboCAT10

    RoboCAT10 Registered

    Joined:
    Oct 18, 2014
    Messages:
    639
    Likes Received:
    114
    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.
     
  9. AlexNordic

    AlexNordic Registered

    Joined:
    Feb 25, 2018
    Messages:
    56
    Likes Received:
    11
    Any idea of what unit is this? 2.5 meters? Inches?
    CutLeavingThresh = 2.5 // Threshold for leaving track
     
  10. Gijs van Elderen

    Gijs van Elderen Registered

    Joined:
    May 1, 2014
    Messages:
    1,393
    Likes Received:
    469
    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.
     
    rigodon, Emery, ECAR_Tracks and 3 others like this.
  11. AlexNordic

    AlexNordic Registered

    Joined:
    Feb 25, 2018
    Messages:
    56
    Likes Received:
    11
    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?

    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.


    This is amazing info, thanks!
     
  12. Gijs van Elderen

    Gijs van Elderen Registered

    Joined:
    May 1, 2014
    Messages:
    1,393
    Likes Received:
    469
    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

    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.
     
    PaZill, Vance Le Garde and AlexNordic like this.
  13. AlexNordic

    AlexNordic Registered

    Joined:
    Feb 25, 2018
    Messages:
    56
    Likes Received:
    11
    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.
     

Share This Page