
Prolog-Based Reasoning Layer for Counter-Strike Agents (2012) [pdf] - nickpsecurity
http://ceur-ws.org/Vol-928/0170.pdf
======
gavanwoolery
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](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.

~~~
solotronics
huge fan of your work! always neat to see you post around here

------
zmonx
Whom killed Prolog?

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.

Thank you for sharing!

~~~
mLuby
Who. He killed Prolog, not him killed Prolog.

~~~
zmonx
No, whom! Prolog killed him, not Prolog killed he.

To get the reference, you have to follow some HN submissions on Prolog...

~~~
Twisol
Reference aside, OVS is a very rare word order in English. Most would expect
"Prolog killed whom".

Then again, "Prolog killed who" is broadly considered acceptable, so whom am I
to judge?

~~~
fusiongyro
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...

~~~
Twisol
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.

~~~
fusiongyro
I think you and the OP are very unlikely to be understood using that
construction.

------
83457
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.

~~~
skizm
> Bots are really bad in CS

What do you mean by this specifically? Also in what context? (5 bots vs. 5
humans, 1 bot in a MM server, bots in DM servers, etc.)

There is actually some interesting logic behind why some bots are
intentionally "bad" or why sometimes bots ignore all commands.

~~~
83457
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.

~~~
skizm
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).

~~~
weaksauce
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.

~~~
skizm
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.

~~~
weaksauce
Don't get me wrong... they have to be pretty bad in order for me to kick them.

