I proposed a slightly similar AI design in Voxel Quest. However, I only got as far as writing the compiler for the reasoning system before getting bogged down with other tasks, which can be seen here: https://www.youtube.com/watch?v=2EHKDP2_ky0
What is shown here is also available in the source code, of course.
I am still interested in pursuing this as I think it is one of the more under-explored areas in game development.
Answer: It killed counter-strike agents not based on Prolog.
A few quotes from the paper that I found especially interesting:
Prolog is a general-purpose declarative programming language, which bases strongly on a first order logic. Prolog uses notions of facts and rules, whereas execution of Prolog program is de facto a formal reasoning process. Therefore, it is very convenient to use in artificial intelligence programming.
1. C++ bot code can be rewritten to Prolog,
2. Prolog bots can be used efficiently.
And also, very importantly:
Unintended, but very positive outcome was ability to test reasoning layer independently of the game engine which was very complex system. During development of Prolog scripts standard Prolog test suites were created in order to
carry out regression tests.
This can hardly be overemphasized: Prolog is extremely well-suited for generating and writing unit tests.
Except the complement of the verb of being is nominative. "Who am I to judge?" is correct (think, "I am he (who is) to judge"). Also in old-fashioned phone etiquette, "May I speak to X?" "This is she."
Of course, OP was extremely opaque and I didn't understand what they meant either. Is the point of language to be understood, or to adhere to invented rules?
This has been a fun diversion! Only on a Prolog thread...
I suspect "Whom am I to judge" is also correct, but only because of a technicality. (It was an intentional play on words, so even moreso now, who am I to judge?)
"_Whom_ am I to judge", asking which people ought I be judgemental about, versus "_Who am I_ to judge", meaning I really ought not throw stones in glass houses.
Bots are really bad in CS. One of the issues is that they really need to have specific tactics for each map. Would be really interesting to give a bot a branching tactical tree which starts them off with a particular starting job for the round, designate smokes they need to throw and then take various actions based on how the round plays out. That is how humans do it. Only at a low level does someone go in with a generic thought process to a round. Usually you learn how to hold a position along with a team mate then work off of that. Right now bots pretty much just rush mid every time.
I am specially talking about how bots play the game. Essentially they don't. They know how to point and shoot. Changing the difficulty appears to affect how good or bad they are at that and not much else. Their actual ability to play the game is terrible. It would be like playing Madden with bots and they don't know how to go into a formation and when the whistle blows they just run down the field. They can run the ball, they can catch the ball and they know the end zone is the goal but otherwise the actual game of football is lost on them. That is essentially how the CS bots play. With that said most new players get absolutely crushed by easy bots offline so they at least provide a starting point for practice but little else. The actual strategy by valve in making bots bad in matchmaking is understandable as a disincentive from players kicking under performing teammates.
So I can tell you, when you play a matchmaking game (the ranked games) and a player drops (you get a bot) the bots are basically bad on purpose. They get random statistics in things like aim, reaction time, etc., but never very high. Also they buy somewhat random things on purpose (negev, no kit/armor, one flash, still has $7k... wut). Also, one of the random stats they get is something like obedience, meaning they are more or less likely to listen to a command ("Hold this position"). The reason for all this randomness and intentional badness is because Valve doesn't want kicking a bad player to ever be a viable strategy. Kicking players is really only reserved for toxic players (in theory).
As for DM bots, they're pretty realistic actually, they basically hold W (forward) and shoot at the first things they see, which is pretty much what humans do. Their skills are also random, but usually much worse than the average human so that they're basically just targets (DM is for practice after all).
As for a team of bots, I can't comment. I have never played against them since 1.6 and at that point I think all bots were made by 3rd party developers. Right now I think Valve just doesn't care enough to make "good" AI (good meaning human-like, not god like) since almost no one plays against only bots.
From what I can tell they're designed to be targets, not pass the CS:GO Turing test (which would be an interesting project actually).
My wife and I have been playing against the built in Source bots since years. The real issue is that the bots' tactical approach is frequently frustratingly random. The counter terrorists might be camping at the terrorist's spawn point. CTs won't check the area around the planned bomb for hiding terrorists, etc. I think what's really needed is more high level coordination.
If you kick a bad player and then have a bot that listens to the hold this position command, then one of your top frags can run and gun in to get information and play more aggressive. If they die they can pick up the bot and be more useful than the guy with 2 kills that doesn't have a mic and is playing music all game.
Which is why the bots have a random "obedience" stat meaning sometimes their likelihood of listening is extremely low. Also, it is why their buys are randomish (mostly don't get armor/kit and buy weird guns). Top fraggers are less likely to die first and if they are willing to throw their life away for info and a second chance, they might end up with no armor and your team is down a body who can at least give call outs. Bad players can at least drop guns also.
Unless the player is toxic and/or purposefully throwing it is almost never better to get a bot.
A surprising number of people play multiplayer games just against bots. Because they aren't good enough for multiplayer, or don't have Internet, or the servers have long since been shut down, or they just don't enjoy multiplayer. I have played many hours of age of empires 2 against bots. But I find the multiplayer extremely unfun and have never won a match (not to mention lag and disconnect issues.) As a kid I played tons of Star Wars battlefront entirely against bots because I didn't have Xbox live.
What is shown here is also available in the source code, of course.
I am still interested in pursuing this as I think it is one of the more under-explored areas in game development.