I didn't know whether to put this in Off-topic or here, but for the past 8 hours I have been thinking about developing the most realist AI Racing Sim I can. I would like to discuss it here with a few programmers because there are a few around, and there is an obvious passion for racing. My idea comes from the fact some tests I've been running in LFS, I am not mentioning them for fear of flaming since what I would have to say is purely my thoughts and opinions based on what I've witnessed. I don't have the code so I can't be sure what is happening.
Regardless. I want to make an AI that can take in only the amount of information that a human can. Information will be limited to Reference Points. Track Reference Points will be placed every 20 meters or so on the left and right side of the track. General Reference Points consist of buildings, billboards and other large / obvious points along the track, and then Detail Reference Points will consist of points close to where the AI Driver is supposed to brake, turn-in or hit for apex.
However, the driver will not get the reference point as a solid position. Instead they will a vector in the direction of the reference point and with a length of near the distance between the view and reference point - but it could be longer or shorter. The error comes into play based on how far the reference point is. Closer points are easier to judge distances, therefore are more accurate.
These reference points are also "culled" by a FieldOfView each frame, so the driver needs to turn their view to see more. This fov can change based on the drivers concentration level. Example, if the driver suddenly starts spinning and losing control they will likely have less fov, and less accurate points of reference.
Other information the driver will be able to gather:
- Reference Points
- Velocity of the vehicle
- Useful Car/Dashboard/Gauges Information: RPM, Fuel, Gear etc.
- Traction Information (FULLGRIP, NEARLIMIT, ATLIMIT, OVERLIMIT)
- G-Meter (Represents "feel of the seat")
Development has not started on this, although I have started working on a writeup of the particular AI problems I am trying to solve, and eventually how I am going to go about solving those. I am looking for a few people who are interested in the project to contact me. I will be working with Visual C++ 2008 Express Edition. I want to keep the environment simple and to the point. The physics of the racing do not need to be 100% accurate or even near it, but the AI is the thing to tackle.
This Artificial Intelligence system will not be dependant on physics. If done properly the driver should be able to drive near the limits. That is not to say that physics won't effect the AI. A bad physics system with the traction could cause issues, though with any luck some rudimentary game physics will work.
See attached file for some existing AI problems.
Youtube: AIRS: Computing the Racing Line
Youtube: AIRS: Driver Predictions
Youtube: AIRS Driving XRG at FE1 (2014)
Youtube: AIRS Playing with Genetic Algorithms
Youtube: AIRS Driver Lapping XRG at FE1 (early 2016)