This is something I've been thinking about for a long while. I know its not on the priority list for VDrift, but I'd like to outline here why I feel it perhaps should be, and then to look at some issues to be considered in how it would be designed and implemented.
The most obvious benefit of AI drivers would be that you have someone to race against. Sure, there's multiplayer but my experience with many games is that for every person who'll go online there's 10 who won't. Driving solo around a track is fun ... but driving against a dozen opponents is a lot more fun!
Very good AI drivers already exist in Torcs and RARS and depending on the design of the API they could be ported to VDrift rather than needing to be written from scratch - which brings me to the question of implementation.
Both Torcs and RARS used C/C++ for the AI drivers, whereas it was mentioned earlier here that perhaps a scripting language like LUA could be used. I have no preference one way or the other, but there's a few issues a scripted solution would need to address.
First is performance - would the game slow to a crawl with multiple AI cars driving at the same time?
Secondly, persistent data storage - at initialization stage an AI driver needs to analyze the track, calculate the ideal racing line and braking distances etc then store it in arrays for reference while actually driving, plus information about what its doing while driving so that it remembers who its overtaking & so on. Would a scripted solution allow such data to be retained?
Third, but perhaps not as important, is the ease of porting the drivers from the other games to VDrift if the language is significantly different.
The actual API would be pretty straightforward in concept. Every iteration of the game's process loop the drivers' code would be called via an update function. The API would provide the driver code with comprehensive information about the state of all cars on the track (their location, speed, yaw, yaw-rate, accel rate, damage; the type of track segment they're on including curve type, radius, height changes, banking etc - the list goes on). From this the driver AI can populate variables saying what gear it'd like to use, what amount of clutch, brake, accelerator and of course steering. This is passed back to the game.
I really feel that this'd be a significant enhancement to the game. Although I've developed AI drivers myself for some time I don't feel qualified to create the API as I know nothing about VDrift's internals. It'd need someone who knows VDrift in depth to decide what information is available to put in the API and how best to do so.
Anyway, I hope this has stirred interest in the idea & please forgive the length of this post
regards,
locus