The new adaptive AI

Discussion in 'General Discussion' started by Paradox Agi, Apr 18, 2016.

  1. Winzarten

    Winzarten Well-Known Member

    Joined:
    Jun 15, 2016
    Ratings:
    +166 / 0 / -0
    This is a very informative topic, thanks a lot guys for the research :)

    Just a simple question from a new player. In first time races with a car/track combo, what does the adaptive AI use as baseline for difficulty?
    Does it have some value set, or is it trying to estimate som kind of avarage AI difficulty based on other tracks/cars?

    I'm asking because I started playing yesterday and selected adaptive AI.
    The first race, at the raceroom racetrack, was easy and beat the AI by a large margin (40+ second after doing a non-mandatory pit stop), according to the .xml file the AI strength was 90
    I then moved to slovakia ring and was around -2 seconds off the pace from the lead. The AI was at 102, so I'm wondering how it ended up with that number? Was is a random from an interval, or it looked at the previous result and adjusted according to that?
     
  2. CheerfullyInsane

    CheerfullyInsane Well-Known Member

    Joined:
    Oct 24, 2015
    Ratings:
    +344 / 0 / -0
    Okay, that's a new one..... o_O
    Bear in mind that I'm not in any way included behind the scenes. All I know is from what I found in my own testing, so there is as always every chance that I'm monumentally wrong....again. :D

    However, with that caveat in place, the adaptive AI only writes indexes* during race conditions.
    Fixed AI levels will write ONE index at that level, while adaptive AI will keep adjusting the levels in the XML file until it reaches the limit (six or seven entries, depends a little on the track for some weird reason).
    Every car/track combo starts at 80. If the AI got creamed in the first race, it'll then go to 90 for your next start.
    (Btw, in your example the AI wasn't running at 90, that's just the index that got written after the race. It ran at 80, your NEXT race will be at 90.)
    If that still isn't enough it'll then go to around 100, but that depends a little on your own level.
    The closer the AI comes to your actual level, the shorter increments it'll increase by so it doesn't suddenly overshoot you.
    Example: Say your own level is approximately 115. The AI, on a fresh XML file, will start at 80. Then it'll go to 90. Then let's say 100, 107, 112, 113, etc.
    The exception is that if it hasn't reached a competitive level by the time it reaches the last entry available in the XML, it'll jump to 120. After the index has been filled it'll then start to replace the unused AI levels in it with entries closer to your level.
    Eventually ending up with a tightly grouped set of indexes around your personal level.
    The 'eventually' bit being why @pixeljetstream and myself are working (well sorta...) on how to get it competitive faster.

    If you only have one entry at 102, the only reason I can think of is that you at some point ran against fixed AI at level 102.
    That is the only way that I know of that will write a single index out of adaptive context.
    If that for some reason can't possibly have happened, then I'm completely stumped.
    One thing is for sure, the AI does NOT use entries from other car/track combos. Each combo is its own little world.

    *At some point someone will have to tell me the plural of index. :D
     
  3. CheerfullyInsane

    CheerfullyInsane Well-Known Member

    Joined:
    Oct 24, 2015
    Ratings:
    +344 / 0 / -0
    Whoops....Another one I missed. :oops:
    I honestly don't know. When running against he AI I always have track-limits off.
    The AI doesn't respect them anyway, and I'll be hornswoggled if I'm going to be the only car on track running by the rules. :D

    I would however assume that invalid laps aren't counted in the calculations, just so you don't get a jump in the AI level due to one cut corner. But that's all it is, an assumption.
    But from what I know it shouldn't make any difference. The AI levels in the XML file are weighted after each race, so if you have 8 consistent laps the two invalid ones shouldn't enter into it.
    Same procedure as when you e.g. have a spin on one lap.
     
  4. Dawks

    Dawks New Member

    Joined:
    May 15, 2016
    Ratings:
    +3 / 0 / -0
    Indices. (I usta to technical docs for a living. Sorta like being a trivia geek.)
     
    • Like Like x 1
  5. Winzarten

    Winzarten Well-Known Member

    Joined:
    Jun 15, 2016
    Ratings:
    +166 / 0 / -0
    That's weird, because on my first race on slovakia ring the ai definitely was not 80, it wiped the floor with me and was making lap times around 2:07.
    I just finnished another race at slovakia ring with ai set to 100 (this was the first time I ran the AI with set difficulty) and the ai was laping around 2:11...
    Kinda curious what will I see when I move to another track :)
     
  6. Winzarten

    Winzarten Well-Known Member

    Joined:
    Jun 15, 2016
    Ratings:
    +166 / 0 / -0
    I've just done my first race on Brands Hatch, and the AI was laping around 49s, definitely not 80difficulty. I wonder if it is because I'm using the same car (Cougar C14-2).
     
  7. CheerfullyInsane

    CheerfullyInsane Well-Known Member

    Joined:
    Oct 24, 2015
    Ratings:
    +344 / 0 / -0
    Huh......
    Just tried that, and got a 104 AI.
    Well, well, well.....The plot thickens.

    I wonder if the AI starts out at the average AI in your XML thus far.
    If that's the case, this whole training thing becomes rather moot.
    Thus far I've only figured out how to train it for each track, and then simply repeated the process for each combo.
    Never occurred to me that it might start somewhere else than 80 if there were other values in the XML.
    Time to go testing again, it seems.
     
  8. Winzarten

    Winzarten Well-Known Member

    Joined:
    Jun 15, 2016
    Ratings:
    +166 / 0 / -0
    I wonder that too, what does take into acocunt? Is it a simple average, or do values for the same car or track have bigger weight? :)

    The training might still be usefull when the average is skewed againts you, i.e. when you are starting with a new class. Then, especially paired with the app you guys are working on, it might be the faster way to get you adaptive AI to your relative level.
     
  9. CheerfullyInsane

    CheerfullyInsane Well-Known Member

    Joined:
    Oct 24, 2015
    Ratings:
    +344 / 0 / -0
    @Winzarten Yep, you're absolutely correct. @pixeljetstream , you may want to see this as well. :D
    The initial level of each car/track combo does depend in some way, shape or form on whatever else is in your XML.
    Three different tests, all running Silhouettes@Brands with adaptive AI:
    Test 1. Clean XML, AI level written was 90, so it ran at 80.
    Test 2. I plugged in my times from Aquilas@Spa which ran107-112. AI level written was 112, so it ran at approx. 114.
    Test 3. Switched over to my 'real' XML (where the average level sure as hell isn't 114!). AI level written was 110.

    Not much of a database to come to any real conclusions, but I would assume that it's a straight average.
    My 'real' XML runs from around 104 to 118 depending on the combo, so a start of 111 or thereabouts seems to be right.
    Well, whaddaya know. :)

    Yes, a list of AI lap-times for each combo would still be handy, but unless my logic is wrong (yet again :D ), if you have a fair number of entries in your XML, a single entry at your desired level should be sufficient for the adaptive AI to go from there.
    But at any rate, the higher number of entries you have, the faster the AI will adapt to you.
    Nice find. :)

    EDIT: Actually, the AI training is still important, albeit a little less so.
    Yes, the XML average will get you to your starting level quicker, but you still need a number of entries bracketing that level in order for the AI to vary its speed depending on each lap.
     
    Last edited: Jun 16, 2016
  10. Winzarten

    Winzarten Well-Known Member

    Joined:
    Jun 15, 2016
    Ratings:
    +166 / 0 / -0
    Yep. just came to the same conclusion. I got a few more races on Brands Hatch, and while the AI started around my level, it then proceeded to increase the difficulty at the next race, which I lost by quite a margin. I then expected that it will roll back a little... But no, it increased difficulty even more... The next race I was dead last, without any chance to catch even the last one. The only reason why I finnished the race was to see how the AI would react in next race. ;)
    Thankfully it toned the difficulty back to my level. But I wonder why it increased the difficutly the second time, even If it was clear that I'm not able to hold its pace.

    So, while the AI will start around your level, it can then increase the difficult quite a lot in order to populate the index table. It might be more effective do a single race with the adaptive ai on your average difficulty and then train it manualy around your level. Or, much more effective it would be to do some laps in practice and generate the .xml file based on your times from the AI database you guy are collecting.

    This is the ai setting for Brands Hatch:
    <key type="uint32">106</key>
    <custom>
    <custom type="float32">51.68785095</custom>
    <custom type="uint32">1</custom>
    </custom>
    <!-- Index:1 -->
    <key type="uint32">107</key>
    <custom>
    <custom type="float32">50.74385834</custom>
    <custom type="uint32">1</custom>
    </custom>
    <!-- Index:2 -->
    <key type="uint32">111</key>
    <custom>
    <custom type="float32">49.48831558</custom>
    <custom type="uint32">7</custom>
    </custom>
    <!-- Index:3 -->
    <key type="uint32">120</key>
    <custom>
    <custom type="float32">47.31885910</custom>
    <custom type="uint32">1</custom>
    </custom>
     
  11. CheerfullyInsane

    CheerfullyInsane Well-Known Member

    Joined:
    Oct 24, 2015
    Ratings:
    +344 / 0 / -0
    Well, one thing I noticed from my earlier experiments is that once the number of indexes start to fill up it'll jump to 120.
    The following is pure guesswork, but it might be because the AI doesn't actually know how fast it is under each AI level, and it's looking for the upper limit. After that it'll then start to adapt to your actual level.
    Much the same as when it started at 80, only in reverse (if that makes any sense).

    But until we get a semi-complete database collected, I guess it'll help in establishing your initial level when trying new combos.
    Run one lap against adaptive, and see what level it writes. After that you can then 'design' a set of indices to match your level.
    If nothing else, it'll take some of the guesswork out of the equation.
     
  12. Eagle28

    Eagle28 New Member

    Joined:
    Oct 2, 2016
    Ratings:
    +2 / 0 / -0
    Indeed a very informative thread giving a user some "must know" information about this sim. To be honest I was getting really frustrated with the AI in this sim, constantly getting rammed from the rear and no it was not because I was braking to hard at the wrong time as some users have suggested. Another issue being is that you would also come out of any touching (AI cars) far worse off, basically it will be the end of your race with the AI racing off into the distance as though nothing had happened.

    The reason why I am still here is because the game is so great in almost every other area and in my opinion currently the best there is by some way...Project cars is good and I do fire it up from time to time but for me its a game (yes a very good one) and not a sim.
    So I was so pleased when I came across this thread, although I do race in multiplayer I also very much like to race against AI so its a very important aspect for me. @CheerfullyInsane I know you already mentioned that you don"t want any thanks but the point being you made the time and effort to share your information, so many many thanks.

    I am away now to train the AI ...
     
  13. Eagle28

    Eagle28 New Member

    Joined:
    Oct 2, 2016
    Ratings:
    +2 / 0 / -0
    "Name": "RaceRoom Raceway",
    "Id": 262,
    "layouts":

    "Name": "Grand Prix",
    "Track": 262,
    "MaxNumberOfVehicles": 25,
    "Id": 263

    "Name": "Bridge",
    "Track": 262,
    "MaxNumberOfVehicles": 25,
    "Id": 266

    "Name": "Classic",
    "Track": 262,
    "MaxNumberOfVehicles": 25,
    "Id": 264

    "Name": "Classic Sprint",
    "Track": 262,
    "MaxNumberOfVehicles": 25,
    "Id": 265

    "Name": "National",
    "Track": 262,
    "MaxNumberOfVehicles": 25,
    "Id": 267

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

    "Name": "Monza Circuit",

    "Id": 1670,

    "layouts":

    "Name": "Grand Prix",
    "Track": 1670,
    "MaxNumberOfVehicles": 25,
    "Id": 1671

    "Name": "Junior",
    "Track": 1670,
    "MaxNumberOfVehicles": 25,
    "Id": 1672

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

    "Name": "Mid Ohio",
    "Id": 1673,

    "layouts":

    "Name": "Full",
    "Track": 1673,
    "MaxNumberOfVehicles": 24,
    "Id": 1674

    "Name": "Chicane",
    "Track": 1673,
    "MaxNumberOfVehicles": 24,
    "Id": 1676

    "Name": "Short",
    "Track": 1673,
    "MaxNumberOfVehicles": 24,
    "Id": 1675

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

    "Name": "Circuit Park Zandvoort",
    "Id": 1677,
    "layouts":

    "Name": "Grand Prix",
    "Track": 1677,
    "MaxNumberOfVehicles": 32,
    "Id": 1678

    "Name": "National",
    "Track": 1677,
    "MaxNumberOfVehicles": 32,
    "Id": 1680

    "Name": "Club",
    "Track": 1677,
    "MaxNumberOfVehicles": 32,
    "Id": 1679

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

    "Name": "Lakeview Hillclimb",
    "Id": 1681,
    "layouts":

    "Name": "Full Run",
    "Track": 1681,
    "MaxNumberOfVehicles": 36,
    "Id": 1682

    "Name": "Reverse",
    "Track": 1681,
    "MaxNumberOfVehicles": 36,
    "Id": 2181

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

    "Name": "Circuit Zolder",
    "Id": 1683,
    "layouts":

    "Name": "Grand Prix",
    "Track": 1683,
    "MaxNumberOfVehicles": 32,
    "Id": 1684

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

    "Name": "Nürburgring",
    "Id": 1690,
    "layouts":


    "Name": "Grand Prix",
    "Track": 1690,
    "MaxNumberOfVehicles": 25,
    "Id": 1691

    "Name": "Short",
    "Track": 1690,
    "MaxNumberOfVehicles": 40,
    "Id": 2011

    "Name": "Sprint",
    "Track": 1690,
    "MaxNumberOfVehicles": 40,
    "Id": 3377

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

    "Name": "Hockenheimring",
    "Id": 1692,
    "layouts":

    "Name": "Grand Prix",
    "Track": 1692,
    "MaxNumberOfVehicles": 34,
    "Id": 1693

    "Name": "National",
    "Track": 1692,
    "MaxNumberOfVehicles": 24,
    "Id": 1763

    "Name": "Short",
    "Track": 1692,
    "MaxNumberOfVehicles": 24,
    "Id": 1764

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

    "Name": "RaceRoom Hillclimb",
    "Id": 1705,
    "layouts":

    "Name": "Full Run",
    "Track": 1705,
    "MaxNumberOfVehicles": 36,
    "Id": 1709

    "Name": "Reverse",
    "Track": 1705,
    "MaxNumberOfVehicles": 36,
    "Id": 2214

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

    "Name": "Portimao Circuit",
    "Id": 1771,
    "layouts":

    "Name": "Grand Prix",
    "Track": 1771,
    "MaxNumberOfVehicles": 25,
    "Id": 1778

    "Name": "National",
    "Track": 1771,
    "MaxNumberOfVehicles": 25,
    "Id": 1783

    "Name": "Club",
    "Track": 1771,
    "MaxNumberOfVehicles": 25,
    "Id": 1784

    "Name": "Club Chicane",
    "Track": 1771,
    "MaxNumberOfVehicles": 25,
    "Id": 1785

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

    "Name": "Suzuka Circuit",
    "Id": 1840,
    "layouts":

    "Name": "Grand Prix",
    "Track": 1840,
    "MaxNumberOfVehicles": 46,
    "Id": 1841

    "Name": "East Course",
    "Track": 1840,
    "MaxNumberOfVehicles": 24,
    "Id": 2012

    "Name": "West Course",
    "Track": 1840,
    "MaxNumberOfVehicles": 34,
    "Id": 2013

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

    "Name": "Bathurst Circuit",
    "Id": 1845,
    "layouts":

    "Name": "Mount Panorama",
    "Track": 1845,
    "MaxNumberOfVehicles": 36,
    "Id": 1846

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

    "Name": "Indianapolis",
    "Id": 1851,
    "layouts":

    "Name": "Grand Prix",
    "Track": 1851,
    "MaxNumberOfVehicles": 46,
    "Id": 1852

    "Name": "Moto",
    "Track": 1851,
    "MaxNumberOfVehicles": 46,
    "Id": 2014

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

    "Name": "Sonoma Raceway",
    "Id": 1853,
    "layouts":

    "Name": "WTCC",
    "Track": 1853,
    "MaxNumberOfVehicles": 52,
    "Id": 1854

    "Name": "Sprint",
    "Track": 1853,
    "MaxNumberOfVehicles": 52,
    "Id": 2016

    "Name": "Long",
    "Track": 1853,
    "MaxNumberOfVehicles": 52,
    "Id": 3912

    "Name": "IRL",
    "Track": 1853,
    "MaxNumberOfVehicles": 52,
    "Id": 3913

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

    "Name": "Mazda Laguna Seca",
    "Id": 1855,
    "layouts":

    "Name": "Grand Prix",
    "Track": 1855,
    "MaxNumberOfVehicles": 25,
    "Id": 1856

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

    "Name": "Hungaroring",
    "Id": 1865,
    "layouts":

    "Name": "Grand Prix",
    "Track": 1865,
    "MaxNumberOfVehicles": 25,
    "Id": 1866

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

    "Name": "Salzburgring",
    "Id": 2020,
    "layouts":

    "Name": "Grand Prix",
    "Track": 2020,
    "MaxNumberOfVehicles": 32,
    "Id": 2026

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

    "Name": "Shanghai Circuit",
    "Id": 2021,
    "layouts":

    "Name": "Grand Prix",
    "Track": 2021,
    "MaxNumberOfVehicles": 24,
    "Id": 2027

    "Name": "Intermediate (WTCC)",
    "Track": 2021,
    "MaxNumberOfVehicles": 24,
    "Id": 4041

    "Name": "West Long",
    "Track": 2021,
    "MaxNumberOfVehicles": 24,
    "Id": 4042

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

    "Name": "Slovakia Ring",
    "Id": 2029,
    "layouts":

    "Name": "Grand Prix",
    "Track": 2029,
    "MaxNumberOfVehicles": 24,
    "Id": 2064

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

    "Name": "Macau",
    "Id": 2122,
    "layouts":

    "Name": "Grand Prix",
    "Track": 2122,
    "MaxNumberOfVehicles": 41,
    "Id": 2123

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

    "Name": "Motorsport Arena Oschersleben",
    "Id": 2383,
    "layouts":

    "Name": "Grand Prix",
    "Track": 2383,
    "MaxNumberOfVehicles": 24,
    "Id": 2384

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

    "Name": "EuroSpeedway Lausitz",
    "Id": 2467,
    "layouts":

    "Name": "Grand Prix",
    "Track": 2467,
    "MaxNumberOfVehicles": 24,
    "Id": 2468

    "Name": "Automobilsport",
    "Track": 2467,
    "MaxNumberOfVehicles": 24,
    "Id": 3291

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

    "Name": "Moscow Raceway",
    "Id": 2472,
    "layouts":

    "Name": "Sprint",
    "Track": 2472,
    "MaxNumberOfVehicles": 24,
    "Id": 2473

    "Name": "Full",
    "Track": 2472,
    "MaxNumberOfVehicles": 24,
    "Id": 3383

    "Name": "FIM",
    "Track": 2472,
    "MaxNumberOfVehicles": 24,
    "Id": 3683

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

    "Name": "Norisring",
    "Id": 2517,
    "layouts":

    "Name": "Grand Prix",
    "Track": 2517,
    "MaxNumberOfVehicles": 24,
    "Id": 2518

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

    "Name": "Brands Hatch",
    "Id": 2519,
    "layouts":

    "Name": "Indy",
    "Track": 2519,
    "MaxNumberOfVehicles": 34,
    "Id": 2520

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

    "Name": "Red Bull Ring Spielberg",
    "Id": 2521,
    "layouts":

    "Name": "Grand Prix",
    "Track": 2521,
    "MaxNumberOfVehicles": 36,
    "Id": 2556

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

    "Name": "Nordschleife",
    "Id": 2812,
    "layouts":

    "Name": "Nordschleife",
    "Track": 2812,
    "MaxNumberOfVehicles": 48,
    "Id": 2813

    "Name": "VLN",
    "Track": 2812,
    "MaxNumberOfVehicles": 100,
    "Id": 4975

    "Name": "Tourist",
    "Track": 2812,
    "MaxNumberOfVehicles": 48,
    "Id": 5093

    "Name": "24 Hours",
    "Track": 2812,
    "MaxNumberOfVehicles": 100,
    "Id": 5095

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

    "Name": "Paul Ricard",
    "Id": 2866,
    "layouts":

    "Name": "Solution 3C",
    "Track": 2866,
    "MaxNumberOfVehicles": 44,
    "Id": 2867

    "Name": "Solution 1A",
    "Track": 2866,
    "MaxNumberOfVehicles": 44,
    "Id": 4246

    "Name": "Solution 1C-V2",
    "Track": 2866,
    "MaxNumberOfVehicles": 44,
    "Id": 4247

    "Name": "Solution 2A short",
    "Track": 2866,
    "MaxNumberOfVehicles": 44,
    "Id": 4248

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

    "Name": "Sachsenring",
    "Id": 3537,
    "layouts":

    "Name": "Grand Prix",
    "Track": 3537,
    "MaxNumberOfVehicles": 42,
    "Id": 3538

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

    "Name": "Spa-Francorchamps",
    "Id": 3869,
    "layouts":

    "Name": "Grand Prix",
    "Track": 3869,
    "MaxNumberOfVehicles": 56,
    "Id": 3870

    "Name": "Classic",
    "Track": 3869,
    "MaxNumberOfVehicles": 48,
    "Id": 4542

    "Name": "Combined",
    "Track": 3869,
    "MaxNumberOfVehicles": 100,
    "Id": 4543

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

    "Name": "Chang International Circuit",
    "Id": 4252,
    "layouts":

    "Name": "Full Circuit",
    "Track": 4252,
    "MaxNumberOfVehicles": 40,
    "Id": 4253

    "Name": "D Circuit",
    "Track": 4252,
    "MaxNumberOfVehicles": 25,
    "Id": 4944
     
  14. CheerfullyInsane

    CheerfullyInsane Well-Known Member

    Joined:
    Oct 24, 2015
    Ratings:
    +344 / 0 / -0
    You're welcome. :)
    Although it should be said that many of the problems you mention still persist after the AI got 'dumbed down' in the last patch.*
    I never had a problem with getting rammed in the back in braking-zones, but sideways AI attention is more or less gone right now.
    They will quite happily turn into you if you sneak up on their inside.
    And the collision physics quite frankly still need some work. :D

    * And yes, I know the reason behind the AI getting less attentive. Bigger grids means more processing-power and thus less for the AI. I'm not critiquing the decision to do so, merely stating a fact.
     
  15. Eagle28

    Eagle28 New Member

    Joined:
    Oct 2, 2016
    Ratings:
    +2 / 0 / -0
    It has made a huge difference for me though ...so far only trained the AI on two circuits and the racing is much closer ..I got a second and a third ...But yes have to agree with you more work is needed with the AI. Basically you have to try and stay well clear of them, they are like tanks on wheels, you will always come of far far worse than them....don"t even think about giving them a nudge, for sure you will regret it ...

    I drove into the rear of one at around 100mph, the AI must have been doing around 40mph at the time, slowing down for a sharp bend...it was like nothing had hit them, the AI even managed to get around the bend and carried on racing like nothing had happened, of course my race was over.

    So yes for sure a lot more work is required with the collision physics..This is a great sim though and in many ways top of its class, if they manage to sort the collision physics out nothing would touch it.
     
    • Like Like x 1
  16. pixeljetstream

    pixeljetstream Well-Known Member Beta tester

    Joined:
    Jan 29, 2015
    Ratings:
    +385 / 0 / -0
    Is it really processing power limited? We got lots of cores, and weak systems should not expect same quality with big grid vs high end system. Maybe introduce AI detail level setting.
    But somehow not sure this is really the reason.
     
  17. Andi Goodwin

    Andi Goodwin Moderator Beta tester

    Joined:
    Jan 16, 2015
    Ratings:
    +470 / 0 / -0
    coughs

    Andi
     
  18. CheerfullyInsane

    CheerfullyInsane Well-Known Member

    Joined:
    Oct 24, 2015
    Ratings:
    +344 / 0 / -0
    Need a mint? :D
     
    • Like Like x 1
  19. Andi Goodwin

    Andi Goodwin Moderator Beta tester

    Joined:
    Jan 16, 2015
    Ratings:
    +470 / 0 / -0
    i am mint , for a knackered, slightly blind ,balding , knock kneed 49year old ...

    Andi
     
    • Funny Funny x 1
  20. Supermini

    Supermini Member

    Joined:
    Mar 31, 2016
    Ratings:
    +21 / 0 / -0
    Apologies if this has been mentioned before...

    I was thinking why doesn't the adaptive AI work like this: start at 100. After the first race if needed, adjust +/-10. After the second race, adjust +/-5. After the third, +/-3. After the fourth, +/-2. After the fifth, +/-1. It seems to me that would find the right AI level for any player within 6 races (and now of course you can just make those 1 lap races).

    This wouldn't necessarily save time over @CheerfullyInsane 's training method, but it would let the game take care of the training automatically.