Being a part-time AI scripter, I can tell you know, the amount of calculations needed fro AI is incredible. I know that a lot of people complain, but if you all were to become programmers and modellers, you'd be singing a different tune!
Now, I completely agree that these things need to be improved and PD have had a while to upgrade them, favouring other items instead of it. But if you think about it, it does make sense.
People have been asking for sounds and PD are somewhat improving them, but that is a department I don't know well, so I cannot comment.
People have been talking about fixing up standards and PD have done some model tweaking and more importantly texture cleanups (alpha channels, higher res etc)
PD have also gone and made the game much more awesome for those of us who love to hotlap cars and compare them, which I personally do a lot! Having tyre physics, aerodynamics based of simple CFD calculations (most likely off the Large Eddy Simulations, which take the least amount of computing power), etc etc.
As an Aerospace Engineer I can tell you that working out Aerodynamic properties of cars is a pretty tough gig, even for a computer, so hats off to PD if they've succeeded in that, while still making the game look graphically very nice (barring some standard cars of course)
Now coming back to AI:
I have a feeling the AI has been dumbed down somewhat deliberately to appeal to the masses. While I would not mind having to work very very hard to get to first place (literally sit there for an hour before a race tweaking the car to the conditions so it can compete with the rest of the field), I doubt many of us would do that, especially if the race is only going to last 10 minutes. While that may be a mistake, to change it so that all the cars would be more bunched up, aggressive, accurate etc is a mean feat. What you're proposing here is something like this (albeit this is very simplified)
While (1)
If corner:
cornermode = 1
else:
cornermode = 0
EndIf
If (cornermode == 0)
Throttle = accelerate
Steering = straighten
If (RPM == revlimit*0.95)
If (gear == maxgear)
Throttle = hold
Else
Throttle = release
Gear = up
Throttle = accelerate
EndIf
EndIf
EndIf
If (cornermode == 1)
Throttle = release
Brake = apply
Steering = turn
EndIf
If (corner == approaching)
cornermode = 1
EndIf
EndWhile
This is the absolute basic of how an AI could work, and even then I'll highlight the problems with this script (if it worked)
- No idea about how sharp the turn is
- No knowledge of car (is the car automatic, what is the clutch like? Does it need to release accelerator to change gear? Which car has better brakes? Which has better grip? What about the width of the car?)
- No track awareness (What if a car spins in front? What is a racing line? What does reduced grip mean? What if I spin? Which way is forwards? Do I need to brake earlier? Can I accelerate? What happens if the car slides? What is an overtake? How do I overtake? What can I see? Where is the track edge?)
- Steering is digital (Only three states: full left, full right and center)
- Speed through corners (What's the ideal speed? Am I in the right gear? Do I accelerate? Can I brake a little in the turn? What if somene cuts me up? What is the apex? How close do I get to the wall? Do I have a runoff or is it a wall? Can I afford to push a little harder? Or my tyres screaming under the strain?)
- Condition awareness (Do I slow when its raining? What about snow? Are my tyres right for the conditions? What is my tyre condition? Night racing, do I flash my lights? What can I see? Where are the other cars? How far am I to P1? What position should I aim for? What is the state of my fuel? What is the state of my competitors? Am I faster in one part of the lap than others?)
These are just a few of many problems with that tiny script. Now just to give you an idea, if I was to fix just the very first point, it would take me at least all day to figure out how I was to code it, and I would probably end up tripling the size of the current PsuedoCode.
If I was to fix all of these, we're looking at months and months of hard work with lots of testing, reverting to old code, and thousands of lines of code. Would my AI be as good as GT6? Maybe, but would it then be compatible? Upgradable? Would it be efficient and functional or would it eat up all the system resources? There is a lot more to coding AI than just saying
BrakingPoint = Correct
Speed = Fast
Aggression = Acceptable
And unfortunately many of us on GTPlanet and in fact everywhere do not understand this. What PD have done for the game is great. It may not be what everyone is expecting, but try to see if from the perspective of one of us programmers, and you'll realise that it is difficult indeed. That being said, I am not saying that we have to be happy with what we have been given. Constructive criticism is what makes a good game great, but if and ONLY IF you know the challenges involved when you make those critical remarks. I hope that this post gives a small taster of what challeges PD face with their small team and makes us a little more appreciative of what they have acheived, while supporting them to do even more in the future, learn from mistakes they make along the way and give the fans everything they want!
👍