usr_36GP - minor tweaks re skill feature

git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@509 30fe4595-0a0c-4342-8851-515496e4dcbd

Former-commit-id: 31fe7a65a996d87355ee83266f3082b7cf36707f
Former-commit-id: fd152ea8912877e01e7e5387fea7c1a46665483e
This commit is contained in:
andrewsumner 2008-12-17 22:46:05 +00:00
parent 21cdf68da0
commit e1f1201871
14 changed files with 66 additions and 43 deletions

View file

@ -19,7 +19,7 @@
<!-- driver take more risks, while negative values make them more -->
<!-- careful about when they choose to overtake. Don't go too high -->
<!-- with the positive values! -->
<attnum name="aggression" min="-3.0" max="1.5" val="-0.2"/>
<attnum name="aggression" min="-3.0" max="1.5" val="-0.5"/>
</section>

View file

@ -32,8 +32,8 @@
<attnum name="OvertakeDebug" min="0" max="1" val="0"/>
<attnum name="IntMargin" min="0" max="2" val="1.4"/>
<attnum name="NoTeamWaiting" min="0" max="2" val="1"/>
<attnum name="IncFactor" min="0" max="5" val="0.7"/>
<attnum name="AvoidSpeedAdjust" min="-20" max="20" val="-3"/>
<attnum name="IncFactor" min="0" max="5" val="0.9"/>
<attnum name="AvoidSpeedAdjustX" min="-20" max="20" val="0.8"/>
<attnum name="AvoidBrakeAdjust" min="-20" max="20" val="-6"/>
<attnum name="LookAhead" min="1" max="5" val="2.6"/>
<attnum name="OvertakeCaution" min="-20" max="20" val="0.2"/>

View file

@ -17,7 +17,7 @@
<params name="Viper GTS-R" type="template">
<section name="private">
<!-- 2.27.30 -->
<attnum name="BaseCornerSpeedX" val="0.43"/>
<attnum name="BaseCornerSpeedX" val="0.45"/>
<attnum name="CornerSpeed" val="21.0"/>
<attnum name="CurveFactor" val="0.16"/>
<attnum name="AvoidSpeedAdjust" val="-1.0"/>
@ -28,15 +28,16 @@
<attnum name="FuelSpeedUp" val="0.7"/>
<attnum name="FuelPerLap" val="3.9"/>
<attnum name="NoTeamWaiting" val="1"/>
<attnum name="SkidCorrection" val="1.1"/>
<attnum name="SkidCorrection" val="1.3"/>
<attnum name="SteerDebug" val="0"/>
<attnum name="OvertakeDebug" val="1"/>
<attnum name="RLBrake0Div" val="1650"/>
<attnum name="RLBrake0DivEnd" val="1750"/>
<attnum name="RLBrake0" val="-7.0"/>
<attnum name="RLBrake1Div" val="950"/>
<attnum name="RLBrake1Div" val="800"/>
<attnum name="RLBrake1DivEnd" val="1080"/>
<attnum name="RLBrake1" val="-6.0"/>
<attnum name="RLBrake1" val="-7.0"/>
<attnum name="RLBrake2Div" val="2000"/>
<attnum name="RLBrake2DivEnd" val="2600"/>
<attnum name="RLBrake2" val="-6.0"/>
@ -46,22 +47,22 @@
<attnum name="RLSpeed7Div" val="1340"/>
<attnum name="RLSpeed7DivEnd" val="1600"/>
<attnum name="RLSpeed7" val="18.0"/>
<attnum name="RLSpeed7" val="17.5"/>
<attnum name="RLSpeed8Div" val="400"/>
<attnum name="RLSpeed8DivEnd" val="1850"/>
<attnum name="RLSpeed8" val="19.0"/>
<attnum name="RLSpeed0Div" val="550"/>
<attnum name="RLSpeed0DivEnd" val="650"/>
<attnum name="RLSpeed0" val="19.0"/>
<attnum name="RLSpeed0DivEnd" val="1050"/>
<attnum name="RLSpeed0" val="18.5"/>
<attnum name="RLSpeed1Div" val="1260"/>
<attnum name="RLSpeed1DivEnd" val="1335"/>
<attnum name="RLSpeed1" val="26.0"/>
<attnum name="RLSpeed2Div" val="1650"/>
<attnum name="RLSpeed2DivEnd" val="1766"/>
<attnum name="RLSpeed2" val="18.5"/>
<attnum name="RLSpeed2" val="18.20"/>
<attnum name="RLSpeed3Div" val="1767"/>
<attnum name="RLSpeed3DivEnd" val="1850"/>
<attnum name="RLSpeed3" val="19.0"/>
<attnum name="RLSpeed3" val="18.2"/>
<attnum name="RLSpeed4Div" val="2280"/>
<attnum name="RLSpeed4DivEnd" val="2550"/>
<attnum name="RLSpeed4" val="15.0"/>
@ -82,16 +83,16 @@
<attnum name="OTCaution1DivEnd" val="2449"/>
<attnum name="OTCaution1" val="0.1"/>
<attnum name="AvoidSpeed0Div" val="980"/>
<attnum name="AvoidSpeed0Div" val="730"/>
<attnum name="AvoidSpeed0DivEnd" val="1310"/>
<attnum name="AvoidSpeed0" val="-3.0"/>
<attnum name="AvoidSpeed1Div" val="1750"/>
<attnum name="AvoidSpeed1DivEnd" val="1800"/>
<attnum name="AvoidSpeed1" val="-4.0"/>
<attnum name="LaneShift0Div" val="1180"/>
<attnum name="LaneShift0DivEnd" val="1310"/>
<attnum name="LaneShift0" val="-3.0"/>
<attnum name="LaneShift0Div" val="1190"/>
<attnum name="LaneShift0DivEnd" val="1320"/>
<attnum name="LaneShift0" val="-5.0"/>
<attnum name="LaneShift1Div" val="1420"/>
<attnum name="LaneShift1DivEnd" val="1662"/>
<attnum name="IntMargin1" val="0.5"/>
@ -99,6 +100,9 @@
<attnum name="LaneShift2DivEnd" val="200"/>
<attnum name="LaneShift2" val="-1"/>
<attnum name="ExtMargin2" val="-0.5"/>
<attnum name="LaneShift9Div" val="710"/>
<attnum name="LaneShift9DivEnd" val="830"/>
<attnum name="ExtMargin9" val="1.0"/>
<attnum name="LaneShift3Div" val="900"/>
<attnum name="LaneShift3DivEnd" val="1000"/>
<attnum name="ExtMargin3" val="-1.0"/>
@ -114,6 +118,9 @@
<attnum name="LaneShift7Div" val="560"/>
<attnum name="LaneShift7DivEnd" val="620"/>
<attnum name="ExtMargin7" val="2.0"/>
<attnum name="LaneShift8Div" val="1740"/>
<attnum name="LaneShift8DivEnd" val="1810"/>
<attnum name="ExtMargin8" val="0.5"/>
</section>
</params>

View file

@ -30,7 +30,7 @@
<attnum name="OvertakeDebug" min="0" max="1" val="0"/>
<attnum name="IntMargin" min="0" max="2" val="1.4"/>
<attnum name="NoTeamWaiting" min="0" max="2" val="1"/>
<attnum name="AvoidSpeedAdjust" min="-20" max="20" val="-3"/>
<attnum name="AvoidSpeedAdjustX" min="-20" max="20" val="0.85"/>
<attnum name="AvoidBrakeAdjust" min="-20" max="20" val="-6"/>
<attnum name="LookAhead" min="1" max="5" val="2.6"/>
<attnum name="OvertakeCaution" min="-20" max="20" val="0.2"/>

View file

@ -32,8 +32,8 @@
<attnum name="OvertakeDebug" min="0" max="1" val="0"/>
<attnum name="IntMargin" min="0" max="2" val="1.4"/>
<attnum name="NoTeamWaiting" min="0" max="2" val="1"/>
<attnum name="IncFactor" min="0" max="5" val="0.7"/>
<attnum name="AvoidSpeedAdjust" min="-20" max="20" val="-3"/>
<attnum name="IncFactor" min="0" max="5" val="0.9"/>
<attnum name="AvoidSpeedAdjustX" min="-20" max="20" val="0.65"/>
<attnum name="AvoidBrakeAdjust" min="-20" max="20" val="-6"/>
<attnum name="LookAhead" min="1" max="5" val="2.6"/>
<attnum name="OvertakeCaution" min="-20" max="20" val="0.2"/>

View file

@ -17,7 +17,7 @@
<params name="Viper GTS-R" type="template">
<section name="private">
<!-- 2.26.80 -->
<attnum name="BaseCornerSpeedX" val="0.43"/>
<attnum name="BaseCornerSpeedX" val="0.45"/>
<attnum name="CornerSpeed" val="21.0"/>
<attnum name="CurveFactor" val="0.16"/>
<attnum name="AvoidSpeedAdjust" val="-1.0"/>
@ -31,8 +31,12 @@
<attnum name="SkidCorrection" val="1.1"/>
<attnum name="SteerDebug" val="0"/>
<attnum name="RLBrake4Div" val="1350"/>
<attnum name="RLBrake4DivEnd" val="1650"/>
<attnum name="RLSpeed4" val="-9.0"/>
<attnum name="RLBrake0Div" val="1650"/>
<attnum name="RLBrake0DivEnd" val="1750"/>
<attnum name="RLSpeed0" val="-2.0"/>
<attnum name="RLBrake0" val="-7.0"/>
<attnum name="RLBrake1Div" val="950"/>
<attnum name="RLBrake1DivEnd" val="1080"/>
@ -46,7 +50,7 @@
<attnum name="RLSpeed7Div" val="1340"/>
<attnum name="RLSpeed7DivEnd" val="1600"/>
<attnum name="RLSpeed7" val="18.0"/>
<attnum name="RLSpeed7" val="18.5"/>
<attnum name="RLSpeed8Div" val="400"/>
<attnum name="RLSpeed8DivEnd" val="1850"/>
<attnum name="RLSpeed8" val="19.0"/>

View file

@ -30,7 +30,7 @@
<attnum name="OvertakeDebug" min="0" max="1" val="0"/>
<attnum name="IntMargin" min="0" max="2" val="1.4"/>
<attnum name="NoTeamWaiting" min="0" max="2" val="1"/>
<attnum name="AvoidSpeedAdjust" min="-20" max="20" val="-3"/>
<attnum name="AvoidSpeedAdjustX" min="-20" max="20" val="0.8"/>
<attnum name="AvoidBrakeAdjust" min="-20" max="20" val="-6"/>
<attnum name="LookAhead" min="1" max="5" val="2.6"/>
<attnum name="OvertakeCaution" min="-20" max="20" val="0.2"/>

View file

@ -30,7 +30,7 @@
<attnum name="OvertakeDebug" min="0" max="1" val="0"/>
<attnum name="IntMargin" min="0" max="2" val="1.4"/>
<attnum name="NoTeamWaiting" min="0" max="2" val="1"/>
<attnum name="AvoidSpeedAdjust" min="-20" max="20" val="-3"/>
<attnum name="AvoidSpeedAdjustX" min="-20" max="20" val="0.8"/>
<attnum name="AvoidBrakeAdjust" min="-20" max="20" val="-6"/>
<attnum name="LookAhead" min="1" max="5" val="2.6"/>
<attnum name="OvertakeCaution" min="-20" max="20" val="0.2"/>

View file

@ -31,7 +31,7 @@
<attnum name="IntMargin" min="0" max="2" val="1.4"/>
<attnum name="NoTeamWaiting" min="0" max="2" val="1"/>
<attnum name="SteerSkid" min="-1" max="3" val="-0.02"/>
<attnum name="AvoidSpeedAdjust" min="-20" max="20" val="-3"/>
<attnum name="AvoidSpeedAdjustX" min="-20" max="20" val="0.85"/>
<attnum name="AvoidBrakeAdjust" min="-20" max="20" val="-6"/>
<attnum name="LookAhead" min="1" max="5" val="2.6"/>
<attnum name="OvertakeCaution" min="-20" max="20" val="0.2"/>

View file

@ -32,9 +32,9 @@
<attnum name="IntMargin" min="0" max="2" val="1.4"/>
<attnum name="NoTeamWaiting" min="0" max="2" val="1"/>
<attnum name="SteerSkid" min="-1" max="3" val="-0.02"/>
<attnum name="AvoidSpeedAdjust" min="-20" max="20" val="-3"/>
<attnum name="AvoidSpeedAdjustX" min="-20" max="20" val="0.75"/>
<attnum name="AvoidBrakeAdjust" min="-20" max="20" val="-6"/>
<attnum name="IncFactor" min="0" max="5" val="0.7"/>
<attnum name="IncFactor" min="0" max="5" val="0.8"/>
<attnum name="OvertakeCaution" min="-20" max="20" val="0.3"/>
<attnum name="AccelExit" min="-20" max="20" val="0.0"/>
<attnum name="AbsSlip" min="0.5" max="4.5" val="1.0"/>

View file

@ -932,10 +932,10 @@ void Driver::calcSkill()
double rand3 = (double) getRandom() / 65536.0; // whether change is positive or negative
// acceleration to use in current time limit
decel_adjust_targ = (skill/6 * rand1);
decel_adjust_targ = (skill/4 * rand1);
// brake to use - usually 1.0, sometimes less (more rarely on higher skill)
brake_adjust_targ = MAX(0.7, 1.0 - (skill/20 * rand2));
brake_adjust_targ = MAX(0.7, 1.0 - MAX(0.0, skill/10 * (rand2-0.7)));
// how long this skill mode to last for
skill_adjust_limit = 5.0 + rand3 * 50.0;
@ -1057,6 +1057,7 @@ float Driver::getSteer(tSituation *s)
{
if (lastmode == mode_normal ||
(angle_ok &&
(simtime > 15.0 || car->_speed_x > 20) &&
yr_ok &&
skid < 0.1 &&
steer_ok &&
@ -1317,6 +1318,9 @@ int Driver::checkFlying()
float Driver::correctSteering( float avoidsteer, float racesteer )
{
if (simtime < 15.0 && car->_speed_x < 20.0)
return avoidsteer;
float steer = avoidsteer;
float accel = MIN(0.0f, car->_accel_x);
double speed = 50.0; //MAX(50.0, getSpeed());
@ -1696,19 +1700,22 @@ bool Driver::canOvertake( Opponent *o, double *mincatchdist, bool outside, bool
tCarElt *ocar = o->getCarPtr();
int osegid = ocar->_trkPos.seg->id;
double otry_factor = (lenient ? (0.2 + (1.0 - ((simtime-frontavoidtime)/7.0)) * 0.8) : 1.0);
double overtakecaution = (rldata->overtakecaution + (outside ? MIN(0.0, car->_accel_x/8) : 0.0)) - driver_aggression;
double distance = o->getDistance() * otry_factor * (1.0 + overtakecaution) - (ocar->_pos > car->_pos ? MIN(o->getDistance()/2, 3.0) : 0.0);
double overtakecaution = MAX(0.0, rldata->overtakecaution + (outside ? MIN(0.0, car->_accel_x/8) : 0.0)) - driver_aggression;
double distance = o->getDistance() * otry_factor * MAX(0.5, 1.0 + overtakecaution) - (ocar->_pos > car->_pos ? MIN(o->getDistance()/2, 3.0) : 0.0);
double speed = MIN(rldata->avspeed, getSpeed() + MAX(0.0, (10.0 - distance)/3));
double ospeed = o->getSpeed();
double speeddiff = MAX((15.0-fabs(rldata->rInverse)*1000) - distance, fabs(speed - ospeed) * (8 - MIN(5.5, fabs(rldata->rInverse)*300)));
double orInv = fabs(raceline->getRInverse(o->getDistance()));
double rInv = MAX(fabs(rldata->rInverse), orInv);
double speeddiff = MAX((15.0-rInv*1000) - distance, fabs(speed - ospeed) * (8 - MIN(5.5, rInv*300)));
if (outside)
ospeed *= 1.0 + fabs(rldata->rInverse)*3;
double catchdist = (double) MIN(speed*distance/(speed-ospeed), distance*CATCH_FACTOR) * otry_factor;
ospeed *= 1.0 + rInv*3;
double catchdist = (double) MIN((speed*distance)/(speed-ospeed), distance*CATCH_FACTOR) * otry_factor;
if (catchdist < *mincatchdist+0.1 && distance < MIN(speeddiff, catchdist/2 + 5.0))
{
if (DebugMsg & debug_overtake)
fprintf(stderr,"%.1f %s: OVERTAKE! (cd %.1f<%.1f) (dist %.1f < (%.1f-%.1f)*X = %.1f caut=%.1f\n",otry_factor,ocar->_name,catchdist,*mincatchdist,distance,speed,ospeed,speeddiff,overtakecaution);
fprintf(stderr,"%.1f %s: OVERTAKE! (cd %.1f<%.1f) (dist %.1f (%.1f) < (%.1f-%.1f)*X = %.1f caut=%.1f\n",otry_factor,ocar->_name,catchdist,*mincatchdist,distance,o->getDistance(),speed,ospeed,speeddiff,overtakecaution);
*mincatchdist = catchdist;
return true;
}
@ -2044,7 +2051,7 @@ fprintf(stderr,"%s SIDE %s, NO MOVE AT ALL! %.1f\n",car->_name,ocar->_name,myoff
maxoffset = rldata->offset + rldata->rgtmargin;
#endif
//if (fabs(angle) + car->_accel_x/100 < 0.5)
if (car->_speed_x > 20.0 || simtime > 10.0)
{
double caution = rldata->overtakecaution;
@ -2497,7 +2504,7 @@ fprintf(stderr,"%s BEHIND %s (%d %d %d %d)\n",car->_name,ocar->_name,((o->getSta
#if 1
// no-one to avoid, work back towards raceline
if (mode == mode_correcting)
if (mode == mode_correcting && (simtime > 15.0 || car->_speed_x > 20))
{
double factor = (fabs(car->_trkPos.toMiddle) < car->_trkPos.seg->width/2 + 2.0 ? 0.25 : 1.0);
if (fabs(myoffset) > fabs(rldata->offset))

View file

@ -79,6 +79,7 @@ LRaceLine::LRaceLine() :
IntMargin(1.5),
ExtMargin(2.0),
AvoidSpeedAdjust(0.0),
AvoidSpeedAdjustX(1.0),
AvoidBrakeAdjust(0.0),
CurveFactor(0.14),
SecurityZ(0.0),
@ -340,13 +341,14 @@ void LRaceLine::AllocTrack( tTrack *ptrack )
MinCornerInverse = GfParmGetNum( carhandle, "private", "MinCornerInverse", (char *)NULL, 0.002f );
CornerSpeed = GfParmGetNum( carhandle, "private", "CornerSpeed", (char *)NULL, 15.0f );
CornerSpeedX = GfParmGetNum( carhandle, "private", "CornerSpeedX", (char *)NULL, 0.0f );
BaseCornerSpeed = GfParmGetNum( carhandle, "private", "BaseCornerSpeed", (char *)NULL, 0.0f ) - skill/5;
BaseCornerSpeedX = GfParmGetNum( carhandle, "private", "BaseCornerSpeedX", (char *)NULL, 1.0f );
BaseCornerSpeed = GfParmGetNum( carhandle, "private", "BaseCornerSpeed", (char *)NULL, 0.0f );
BaseCornerSpeedX = GfParmGetNum( carhandle, "private", "BaseCornerSpeedX", (char *)NULL, 1.0f ) * (0.8 + MIN(0.2, ((12.0-skill)/12) / 5));
AvoidSpeedAdjust = GfParmGetNum( carhandle, "private", "AvoidSpeedAdjust", (char *)NULL, 0.0f );
AvoidSpeedAdjustX = GfParmGetNum( carhandle, "private", "AvoidSpeedAdjustX", (char *)NULL, 1.0f );
AvoidBrakeAdjust = GfParmGetNum( carhandle, "private", "AvoidBrakeAdjust", (char *)NULL, 0.0f );
CornerAccel = GfParmGetNum( carhandle, "private", "CornerAccel", (char *)NULL, 0.0f );
IntMargin = GfParmGetNum( carhandle, "private", "IntMargin", (char *)NULL, 1.1f ) + skill/20;
ExtMargin = GfParmGetNum( carhandle, "private", "ExtMargin", (char *)NULL, 1.7f ) + skill/10;
IntMargin = GfParmGetNum( carhandle, "private", "IntMargin", (char *)NULL, 1.1f ) + skill/12;
ExtMargin = GfParmGetNum( carhandle, "private", "ExtMargin", (char *)NULL, 1.7f ) + skill/5;
TimeFactor = GfParmGetNum( carhandle, "private", "TimeFactor", (char *)NULL, 0.0f );
BrakeDelay = GfParmGetNum( carhandle, "private", "BrakeDelay", (char *)NULL, 35.0f );
@ -1231,7 +1233,7 @@ void LRaceLine::TrackInit(tSituation *p)
double avspeed = GetModD( tAvoidSpeed, i );
double cornerspeed = ((trlspeed ? trlspeed : CornerSpeed) + BaseCornerSpeed) * BaseCornerSpeedX;
if (rl == LINE_MID)
cornerspeed += (avspeed != 0.0 ? avspeed : AvoidSpeedAdjust) * BaseCornerSpeedX;
cornerspeed += (avspeed != 0.0 ? avspeed : AvoidSpeedAdjust) * BaseCornerSpeedX * AvoidSpeedAdjustX;
double TireAccel = cornerspeed * tFriction[i];
int nnext = (i + 5) % Divs;
int next = (i + 1) % Divs;
@ -1686,6 +1688,8 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
data->rgtmargin = GetModD( tRLMarginRgt, Index );
data->lftmargin = GetModD( tRLMarginLft, Index );
data->overtakecaution = MAX(OvertakeCaution, GetModD( tOTCaution, Index ));
if (data->overtakecaution < 0.0)
data->overtakecaution = MAX(-0.5, data->overtakecaution/3);
data->braking = tSpeed[LINE_RL][Index] - tSpeed[LINE_RL][Next];
data->rlangle = getRLAngle();

View file

@ -124,6 +124,7 @@ class LRaceLine {
double IntMargin;
double ExtMargin;
double AvoidSpeedAdjust;
double AvoidSpeedAdjustX;
double AvoidBrakeAdjust;
double CurveFactor;
double SecurityZ;

View file

@ -108,7 +108,7 @@
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="copy &quot;$(TargetDir)&quot;*.dll $(SolutionDir)runtime\drivers\usr_GP3601"
CommandLine="copy &quot;$(TargetDir)&quot;*.dll c:\andrew\hobbies\torcs-ng\drivers\usr_GP3601"
/>
</Configuration>
<Configuration
@ -211,7 +211,7 @@
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="copy &quot;$(TargetDir)&quot;*.dll $(SolutionDir)runtimed\drivers\usr_GP3601"
CommandLine="copy &quot;$(TargetDir)&quot;*.dll c:\andrew\hobbies\torcs-ng\drivers\usr_GP3601"
/>
</Configuration>
</Configurations>