For Dirt Rally we have changed how we simulate the virtual AI times you see as split times and in the results table. Rather than using an automated system to generate AI lap times over a variety of difficulties we now run a simulation per driver to calculate each split section factoring in ongoing damage events and punctures. This simulation is also used to complete finished rallycross events, and the other group and semi-final events you are not racing in.
We start with the best possible split time per section for every track and car combination. This is called the Bogey Time and we use our fastest racer on the team, Michael Robson (who you might have seen demonstrating the latest cars and tracks in our Dirt twitch shows!). This gives us a consistent starting point for calculating each drivers split time throughout a rally/hillclimb/rallycross competition. The generated AI driver split times will always be slower than the bogey times, so we know they should be beatable by skilled Players.
For Dirt Rally we currently have 75 levels of driver skill, and these are used to setup the spread of driver abilities you see in the various championship tier and custom event difficulties. As you have already figured out, our designers include a higher skilled AI driver in each tier but the spread of difficulties should vary enough to challenge you to reach a podium finish. When setting up a championship each AI driver can further modify their skill level with a bonus to reflect a specific country they are good or bad in.
Each driver skill level consists of 8 variables that can be tweaked by a designer:
Min variation Minimum percentage variation of Bogey Time.
Min variation Minimum percentage variation of Bogey Time.
Max variation Maximum percentage variation of Bogey Time.
Wet percentage Percentage change for wet stages.
Night percentage Percentage change for night stages.
Damage probability Probability per split section of a damage event.
Puncture probability Probability per split section of a puncture.
Min damage level Minimum damage level event that can be rolled.
Max damage level Maximum damage level event that can be rolled.
Once we have the final skill level for every AI driver each stage is simulated as follows:
If in service area
Check to repair punctures (Checks if driver has any spares available)
Check to repair damage (Not all damage events can be repaired fully in the time available)
For each split section in order:
If not retired and no current damage event then roll against damage probability to see if driver has damaged vehicle
If damaged
Roll a damage level between min and max from driver skill table.
Roll a random damage event type (This is the description you see in the results screen).
A retirement damage level will end the race for the AI driver here.
If not damaged then roll for puncture against the puncture probability from the driver skill table.
Calculate final split time
Set split time to current Bogey Time for that section based on car and track combination.
Add a random percentage to split time between min and max variation from the driver skill table. (This is the main difficulty modifier)
Add a percentage to split time for any wet race bonus, if applicable.
Add a percentage to split time for any night race bonus, if applicable.
Add a percentage to split time depending on number of punctures and any penalties for carrying unused spare tires.
Add a percentage to split time for any current damage event level.
With this system we can balance both the speed and the risks of higher level damage to AI drivers of different difficulties. Having a simulation for generating virtual AI driver times allows us more flexibility to model opponents over a full championship, and to add in future variables which would not be possible with a more basic database of times approach.