Forum

Bots, the pros and cons, what are they for you?

Discuss Artificial Intelligence and Bot programming.

Moderator: InsideQC Admins

Bots, the pros and cons, what are they for you?

Postby Electro » Mon Aug 01, 2011 12:15 am

I'm looking to develop a rather extensive bot, with the goal of being as human-like as possible.

I thought I'd put the questions out there... what do people look for in a bot to make it really distinguish itself as being more than other bots they've seen, something that can truely impress and make you doubt you're playing a bot, and give the illusion of being human.

In short... what do YOU think makes a good bot?
What are some bots that you've seen that do these things well as examples? It can be anything from features to specific behaviours.

This also doesn't need to necessarily be limited to existing bots in any way. What do you think you'd like to see in a bot that you haven't yet?

On the other end of the spectrum, what sucks and is obvious a deal breaker?

Be as detailed or as vague as you like (but if it's vague to the point where it doesn't make sense, expect me to ask for more info :) )
Benjamin Darling
http://www.bendarling.net/

Reflex - In development competitive arena fps combining modern tech with the speed, precision and freedom of 90's shooters.
http://www.reflexfps.net/
Electro
 
Posts: 312
Joined: Wed Dec 29, 2004 11:25 pm
Location: Brisbane, Australia

Re: Bots, the pros and cons, what are they for you?

Postby daemonicky » Mon Aug 01, 2011 9:01 am

Electro wrote:In short... what do YOU think makes a good bot?

This also doesn't need to necessarily be limited to existing bots in any way. What do you think you'd like to see in a bot that you haven't yet?

On the other end of the spectrum, what sucks and is obvious a deal breaker?


Advice : I would not do it in Quake C, but if You want to make it an excersise ..

+ To be fun to play against.
+ To suprise me. Jump from the roof, land with 20 hp, shoot me in the back and heal with near medkit (he jumped because medkit was near). Kick some barrel into my face because he knows it would hurt me, and shoot into this barrel first because he knows it will blow later
(into my face) and it is safe to shoot into it now. Hunt me, don't just attack/retreat, but get for his comrades ... use shortcuts in level because he suspects I am heading somewhere (he usually knows the level, he is like in home here). Stuff like this.

- When he is blocked at place. I know, when game is hard and such, it is cool to have shitty AI because I can kill monsters because of bugs, but then again what is the point in it (only to finish the game and see story) ... Blocking happens AFAIK because of he can't decide between alternatives or waypoint system.
- When he kills himself. "there's lava between two waypoints"
- When he attacks weird way.
- 3 bullets into head and he is not dead (Kingpin)?
Think, touch, movetype, solid, traceline ...
User avatar
daemonicky
 
Posts: 185
Joined: Wed Apr 13, 2011 1:34 pm

Postby Spirit » Mon Aug 01, 2011 11:01 am

Not what you are asking but not requiring third-party waypoints is a must for me. I must be able to load any map and have the bot make the best of it.
Improve Quaddicted, send me a pull request: https://github.com/SpiritQuaddicted/Quaddicted-reviews
Spirit
 
Posts: 1028
Joined: Sat Nov 20, 2004 9:00 pm

Postby daemonicky » Mon Aug 01, 2011 12:07 pm

Forget waypoints, use Navmesh. Or combination of both. :)
Think, touch, movetype, solid, traceline ...
User avatar
daemonicky
 
Posts: 185
Joined: Wed Apr 13, 2011 1:34 pm

Postby daemonicky » Mon Aug 01, 2011 12:29 pm

Inspiration for AI

* You can check leaked Thief 2 source code, ... look for files with SCR extension
* Thief 2 postmortems on Gamasutra from TTLG
* Thief design docs
* Thief dev articles
* some other links
* explanation of Thief sensory system
* AFAIK Thief uses waypoints, then it propagates suspicious things trough waypoints so enemies find them (I guess there is some decay and also some information what was suspicious, for related algorithm see Collaborative Diffusion); for example it may even be sound of Garret stomping on metal floor
Think, touch, movetype, solid, traceline ...
User avatar
daemonicky
 
Posts: 185
Joined: Wed Apr 13, 2011 1:34 pm

Postby daemonicky » Mon Aug 01, 2011 12:34 pm

You can also ask there http://gamedev.stackexchange.com/ , a server specialized to answer questions on game development.
Think, touch, movetype, solid, traceline ...
User avatar
daemonicky
 
Posts: 185
Joined: Wed Apr 13, 2011 1:34 pm

Postby Spirit » Mon Aug 01, 2011 2:07 pm

Please do not use URL shorteners, they are obfuscation.
Improve Quaddicted, send me a pull request: https://github.com/SpiritQuaddicted/Quaddicted-reviews
Spirit
 
Posts: 1028
Joined: Sat Nov 20, 2004 9:00 pm

Postby frag.machine » Mon Aug 01, 2011 2:12 pm

Spirit wrote:Not what you are asking but not requiring third-party waypoints is a must for me. I must be able to load any map and have the bot make the best of it.


^^^ this.
I know FrikaC made a cgi-bin version of the quakec interpreter once and wrote part of his website in QuakeC :) (LordHavoc)
User avatar
frag.machine
 
Posts: 2069
Joined: Sat Nov 25, 2006 1:49 pm

Postby Electro » Mon Aug 01, 2011 11:56 pm

daemonicky: Why not QuakeC? With all the engine extensions available, I don't see why it's not viable.

I prefer to hear your personal opinions from what you would expect, thanks for the links though.

Routing that takes into account nearby sub-goals, cool :)
Different strategies, agreed.
Anticipation of enemy movement... this is tricky, very tricky. I have some ideas using a kind of influence map though, can kind of make assumptions that people are heading towards a key item(s)/popular areas if they've been travelling towards them for long enough.


No bugs, cool. hehe
No stupidly falling in lava or non-human-like behaviour for aiming.
Same rules as humans.


Spirit/frag.machine: This is one that keeps coming up time and time again. Unfortunately, I'm yet to see any ai behave better with automatically generated data than manually made data. I had something called nodegen going in shockbot (see demos @ http://forums.inside3d.com/viewtopic.php?t=1717) but the results do leave a lot to be desired. I don't know if this is because my expectations are too high, or if it was actually usable.

Bots would navigate levels fairly basically, and try to use lifts/teles. It wouldn't know where to make jumps well. It would have a heap of wasted nodes that probably aren't positioned ideally.

So it takes a lot of development time, is worse for performance, and isn't as good quality as manually making navigational data.

I'm not saying that I'm ruling it out, I'm just trying to justify investing time into one area of the bot, when I could be improving so many other aspects in the meantime (such as good navigation data making tools).

I'm currently investigating using a hybrid navmesh/node based system. Not only will navmesh be better for performance reasons, but it will also let the bots know the full extents of a room they can move for with regards to combat, avoiding ledges, nearby items, and lots of other things.

I'm currently planning an in-game editor for navmesh and it will allow arbitrary shapes (if what you immediately though of is the hl2 engine based in-game navmesh editing, then it'll be a lot more flexible than that... think topogun/3dcoat for the kind of toolset i'm thinking of).

I don't believe that the AAS generating tools of Gladiator/Q3 bot are acceptable for the kind of human-like behaviour I want to reach. There's just SO much that can't be detecting and handled automatically, the number of special cases in maps because mappers can obviously make whatever... is huge)
Benjamin Darling
http://www.bendarling.net/

Reflex - In development competitive arena fps combining modern tech with the speed, precision and freedom of 90's shooters.
http://www.reflexfps.net/
Electro
 
Posts: 312
Joined: Wed Dec 29, 2004 11:25 pm
Location: Brisbane, Australia

Postby Team Xlink » Wed Aug 03, 2011 7:06 pm

daemonicky wrote:Inspiration for AI

* You can check leaked Thief 2 source code, ... look for files with SCR extension
* Thief 2 postmortems on Gamasutra from TTLG
* Thief design docs
* Thief dev articles
* some other links
* explanation of Thief sensory system
* AFAIK Thief uses waypoints, then it propagates suspicious things trough waypoints so enemies find them (I guess there is some decay and also some information what was suspicious, for related algorithm see Collaborative Diffusion); for example it may even be sound of Garret stomping on metal floor


Wow, small world! The Theif source code was fun on a Dreamcast dev kit from a member at Dreamcast-Talk.com

http://dreamcast-talk.com/forum/viewtop ... &start=110

http://dreamcast-talk.com/beta/

Anyways:

Spirit wrote:Not what you are asking but not requiring third-party waypoints is a must for me. I must be able to load any map and have the bot make the best of it.


Natural bot navigation would be amazing too have but it will never be as good as manually made way-points or something similar.


If the bot is going to have multiple difficulties it would be cool too have the *option*, of choosing a difficulty that will automatically move up too a higher or lower difficulty based on the players current status in game.

Unreal Tournament (1999) had this I think.


Another thing that has always intrigued me, is the *potential* a chat or bot-to-player communication system has.
Team Xlink
 
Posts: 368
Joined: Thu Jun 25, 2009 4:45 am
Location: Michigan

Postby daemonicky » Thu Aug 04, 2011 12:12 pm

Electro wrote:daemonicky: Why not QuakeC? With all the engine extensions available, I don't see why it's not viable.


1. It is too simplistic language, so You will have hard time doing more complex stuff. There are variants of QC though wchich can do it.
2. It is imperative language. I know it can be hacked and it was fun hacking it but I really don't want to reinvent the wheel (make Prolog or LISP in QC and I was heading that direction).

Electro wrote:Anticipation of enemy movement... this is tricky, very tricky. I have some ideas using a kind of influence map though, can kind of make assumptions that people are heading towards a key item(s)/popular areas if they've been travelling towards them for long enough.


Oblivion used simple prediction : "shoot where he will be based on his current movement" == "player.actual_position + player.velocity * time of flight of projectile = point I will now shoot at".
It was fun when it You had more than one mage against You. Otherwise it was not bad.

Electro wrote: I don't believe that the AAS generating tools of Gladiator/Q3 bot ...


What is AAS?
Think, touch, movetype, solid, traceline ...
User avatar
daemonicky
 
Posts: 185
Joined: Wed Apr 13, 2011 1:34 pm

Postby daemonicky » Thu Aug 04, 2011 12:21 pm

Team Xlink wrote:Wow, small world! The Theif source code was fun on a Dreamcast dev kit from a member at Dreamcast-Talk.com


Thanks :). Will look at these links sometime.

Team Xlink wrote:Another thing that has always intrigued me, is the *potential* a chat or bot-to-player communication system has.


I remember Kooky was funny. It was based on Markov Chains I. Anyways, Kooky is down but it is archived by Waybackmachine. There is article from Coding Horror which lead me to Kooky http://www.codinghorror.com/blog/2008/0 ... d-you.html
Think, touch, movetype, solid, traceline ...
User avatar
daemonicky
 
Posts: 185
Joined: Wed Apr 13, 2011 1:34 pm

Postby goldenboy » Thu Aug 04, 2011 4:51 pm

Ability to set the bot's aim precision seperately from his intelligence when it comes to "skill level". This allows one to have smart bots with mediocre aim instead of the other way around.

Many humans will have pretty good intelligence, but imperfect aim. A bot who is stupid, but mercilessly headshots you every time from halfway across the map is very botlike.

Making mistakes...

Doing everything the player can do. ETQW bots will get into a vehicle, but if a player is around, they'll stop beside you, use the horn, and ask "Do you need a ride?" That's what I want to see.

Establishing a pattern, running items in a recurring route, occasionally varied to throw off the human.

Having seperate strategies depending on if he's the down player or the up player. Knowing how to retake a map.

Bot chat - our online playtesters for RMQ often mentioned the bot talk as being a highlight. They take the piss at each other AND the humans.

Bot personalities. Have pre-scripted, named individual bots with slightly different strengths, weaknesses, and personalities.

It's pretty funny if a bot pipes up and says "HAX!" or "CAMPER!", especially if it fits the situation. Just collect the most outrageous things that people say online - there are a lot of outrageous things.

Bots using the grappling hook... discharging into the water... spawncamping...

Reacting to sounds (knowing that sound X means the player is at Y).

Aiming where the player is going to be, not where he is.
User avatar
goldenboy
 
Posts: 924
Joined: Fri Sep 05, 2008 11:04 pm
Location: Kiel

Postby scar3crow » Fri Aug 05, 2011 3:09 am

Intent, Method, Expectations and Mood.

The bot should have a stylistic gameplay goal, beyond "winning." They should seek to dominate in frags, or to gain general map control, or to survive the longest span, or to mitigate specific other players.

They should have preferred methods of play, pure aggression, kiting, avoidance, denial, powerup supported.

They should have expectations - to reach a certain point in the scoreboard, to be able to always defeat certain players, to kill at least a few times a certain player, to get a high kill streak, to interrupt as many kill streaks - these can be mixed with Intent, but these can be quantified.

They should have a mood, based on the results of their methods for their goals, which impacts their decisions for method and attitudes about the match.

Other than these things, there are the niceties of more correct accuracy models - not just aiming at where the player is, but mistakenly anticipating, aiming at where they just were, and so on. Behavioral quirks that some (and this is key) may employ, such as Romero's scorched earth method where he would self-damage a small bit to pick up a red armor when he was already at full red armor, or taking into account noise generated by an approach and taking stealthier routes (avoiding lower value pickups, not thudding, keeping away from unnecessary doors).

But the ultimate disjoint in playing a bot is the manual adding of them and their homogeneous nature. Having bots joining a game at random while maintaining a nice player load on the map, with map rotation going, and leaving based on their degree of enjoyment, with a nice variation on their skill level (from 25% of player's estimated skill to 115% of player's estimated skill for example) combined with even just a few coming and going conversation lines goes a very long way.
...and all around me was the chaos of battle and the reek of running blood.... and for the first time in my life I knew true happiness.
User avatar
scar3crow
InsideQC Staff
 
Posts: 1054
Joined: Tue Jan 18, 2005 8:54 pm
Location: Alabama

Postby Electro » Fri Aug 05, 2011 4:14 am

TeamXLink:

Yeah a dynamic skill setting option is a must. Easy to implement for the most part once skills are already coded :)



daemonicky:

Linear projectile leading is rather trivial, yes. The anticipation I was referring to, was trying to assess what items the enemy needs, and if it's possible for the bot to try beat them there or cut them off etc. Would need to rate the player, and try and think if the bot was in their shoes, what would they go for, and compare estimated travel times etc.

I still want to try and implement it in QC, as I'm currently too uneducated (ie. DUMB) to implement it with anything else. :(

AAS = Area Awareness System

Basically just convex volumes filling up the level to be used as navigational data. 90% of the time it's wasted as they're just walls, good for water and things. (simply talking about comparison to navmesh which is purely ground information)



goldenboy:

Interesting concept regarding the independant control over aim vs intelligence. What if the skill levels just scale well, wouldn't that be sufficient? The bot will definitely need human-like aim to pull this off though.

Oh they'll make mistakes, no doubt about that ;)

Yeah that's cool regarding the ETQW bots. I think I'll be able to do some cool teamwork stuff that will definitely cover that aspect, not with vehicles though obviously :)

I completely underestimated how much people actually care about bot chat. It's something I had no interest in initially, but will obviously have to invest some time working on. If I'm going to do it, I want to do it right. It'll involve reading chat messages and breaking them apart looking for combinations of keywords to try and construct a reasonable response. This could then be tied into the rest of the AI and have an "emotional" response (eg. pissing off a bot, making them hate you more etc. I just read scar3crows post, so that's where that idea comes from regarding emotions)

Grappling hook! Yeah :) I just thought of a way to get it to do basic navigation using it, should be fine. Would really want it to do more advanced things like chain together multiple moves.. tricky! Discharging is fairly easy... spawn camping will be an emergent behaviour of the looking and hotspot systems.

Yeah hearing is a big deal, based on skill is how accurately they'll be able to determine someones exact location.



scar3crow:

Emotions... ah, the tricky stuff!

I hadn't thought of other goals (other than winning or helping a team win) when writing up my docs. I'll need to invest some time into coming up with other goals, which also boil down to ultimately helping them get a better score in ways... such as picking on a player more than tends to be killing them more often, or a player that has a higher score.

Mistakes will happen just as a side-effect of the bot being fooled, which will happen regardless of how good i make the aiming algorithm. It's impossible to know exactly what a player will be doing all the time.

The stealthier route option is DEFINITELY a good one, will have to give that a go, will have to come up with a bunch of criteria for when they think they should be quiet... last one alive on a team in clan arena... enemy has a powerup/heavily outweighs them and is playing aggressively etc.

The self-damage to be able to pick up an item to hog is already planned. It's one of many asshole moves that will be possible. (another example is them aiming for a pickup you're near that they think you'll be going for... why bother aiming for you, when they can most likely guess you'll be going for that pickup? :) )

An ideal player count for a server is a good idea. Maybe an ideal bot to human ratio too or something. Definitely adds to the believability and realism, especially for a FFA server.


Some great ideas peeps!
Benjamin Darling
http://www.bendarling.net/

Reflex - In development competitive arena fps combining modern tech with the speed, precision and freedom of 90's shooters.
http://www.reflexfps.net/
Electro
 
Posts: 312
Joined: Wed Dec 29, 2004 11:25 pm
Location: Brisbane, Australia

Next

Return to Artificial Intelligence

Who is online

Users browsing this forum: No registered users and 1 guest