View Full Version : Basic Brainstorming: Bot AI

03-08-2004, 09:53 PM
Ok, I'm bringing back up the Bot AI brainstorming thread so we can gather up what we want for the bot AI. Please note this is only for the MP bot AI, not the NPC AI stuff.
Bots really need to be able to effectively navigate the map by using higher level objective/needs based reasoning.
I really like Kurgan's suggestion of being able to use the use key to make teammember bots follow you around.

03-08-2004, 10:05 PM
There's a few things I'd love to see, which could make bots (especially Siege bots) useful.

-Give bots a function to "attack this object." Currently they seem only able to travel from one way point to another, fighting enemies they encounter. Flag objects in maps that can be attacked so that a bot knows to destroy them (if and ONLY IF it's an enemy object, since you don't want the defensive team attacking its own structures fruitlessly). See Siege maps.

-Perhaps incorporate the re-connected "Bot Orders" (cover me, follow me, camp this position, etc) and connect them to the bots.

Ie: if you say "Attack the Position" (the voice command) perhaps it could simultaneously issue an order for nearby bots (or all the bots on your team) to attack the position you're nearest.

-There needs to be a way to spawn Siege bots with different classes. Currently you CAN spawn bots in Siege, as long as you do it during the "waiting for players" screen. However they are always the "Assault" class whatever that happens to be on the map. By being able to specify bot types you can thus get more use out of them. Perhaps even give different routes to say Jedi vs. non Jedi.

-There should be a function so that you can flag an object as "use this force power on it." This would allow bots to get through the Switches on Siege Korriban that need to be force pushed to activate. Likewise certain powers (Saber barrier, saber twirl) do much more damage to structures, so in combination with the "attack object" function this should also be made to work.

-The jumping code needs a lot of work. If a bot misses a jump (and doesn't die) he tends to just pound away on the same wall over and over, getting stuck. Even if you force him from his position he'll go back and try again.

Thus there should be a way for a bot to try an alternate route if the one he's trying fails, say more than once or something.

-Bots need to be able to use vehicles. Currently it seems they "eject" (disasterous on something like Asteroids or Siege Destroyer) right away.

Bots shouldn't be allowed to eject if it's a space map (or say flag certain vehicles as "no eject" like the X-Wing, etc and leave the Swoops and AT-ST's as "eject possible" perhaps.

Anyway, hope that isn't getting to wordy or wishful thinking, but I definately think that bots in Siege would be a great thing.

Currently using only simple routing and a cfg file for spawning you can have Siege bots that follow you through the map and cover you. The trouble is they often get stuck if there are multiple objectives a long ways from the spawn point. They will try to do them sequentially instead of saying "Hmm, the green crystal is already captured, no sense in going after that one first" as a human player would.

Admiral Chemix
03-09-2004, 12:10 AM
have them recognize safe eject areas (IE not in space), have them propperly fly the vehicles, or ride them, or command them, or whatever, they'd need to know how to use, use. Have them not get so jumpy. Alter npc ai so they can't instantly dodge shots. Gets realy anoying. Glad this is going into basic

03-09-2004, 06:40 PM
Another important thing is bot strategy.

In Siege for example, certain objects are only damageable by certain weapons. For example blasters are usually useless against rocks, but do damage to turrets and certain computer consoles. Likewise sabers work on many things but are usually less effective than explosives.

It would also be interesting if bots could be made to strategically mine areas (and also give a team_say type warning message to teammates so they can avoid the mines). Another example of this would be strategically placing Det Packs around a bottle neck and then detonating them if (and only if) an enemy came near manually. Bots seem to occasionally place a Trip mine but they only place one and it's a primary (beam projected) version. A better strategy is to place a cluster (say 4) secondary trip mines in a group. This prevents teammates from tripping them (except on Friendly Fire servers of course) and is far more effective than placing one primary trip in the middle of the floor where nobody will ever touch it.

I'm not sure if bots do this much in CTF, but another major thing is team support.

In FFA we have bots that will stop what they're doing to engage an enemy in their path in combat.

But do we have bots in CTF/Siege or Team FFA that will help an ally they encounter in the same way? (Ie: drop health, use Team Heal/Energize, provide cover fire or at least follow them, guard a flag carrier, etc)?

A good ally would drop a stationary shield, provide ammo/healing and deploy defensive measures to help the teammate, rather than just running off on their merry way picking a fight with some random person. Perhaps the idea of the "loved one killed" already in the bot code could be put to use in this way. They should visciously go after the one who attacks the person they are "covering" (to allow their ally time to escape). Though some bots should stick with the person they're covering rather than getting distracted if there are multiple attackers.

Bottom Line: Bots need to be made into better teammates and have the ability to use force, attack and "use" on items they encounter, and use the right power/weapon in their possession. Perhaps this could be carried one step further... if a bot encounters a target or force object he can't manipulate, he should use a voice command or teamsay that corresponds.

Example: Bot Tech runs into the Command Center of the enemy's base on Siege Hoth. Since none of his weapons can damage the consoles needed to win, he yells out "We need demolitions over here!" to his teammates. Bots that switch classes automatically might be problematic, since it's probably better for the team to be micromanaged less like this, though normally spawning bots is a privilage relegated only to the admin, so maybe this wouldn't be such a bad idea. Perhaps the team leader should be able to "order" a bot to switch from its current class to another?

This would certainly be an improvement over all bots always being assault class (versatile as that class is in most maps).

03-09-2004, 07:40 PM
^ What he said!
Ordering around bots would be kick-ass!

03-10-2004, 08:44 PM
This makes me think that we should just code in UT-style bot commands. That's basically what everyone's saying. They respond to voice chat, and know objectives. So if anyone needs to look at a base, UT (original) is it. The only reason I say the original is because I know you can edit scripts, etc, and it may help us with logic and other ideas.

03-11-2004, 06:11 AM
Ok well, I've spent some time with the bot AI and all I can say is they are pretty stupid. They use Force Powers 100% the time whenever they can and they don't seem to have much, if any higher level reasoning. This is probably why they always seem to just follow the routes blindly.

03-13-2004, 08:24 AM
Ok, there's the plan...

I think the best way to do this will be to compartmentalize everything so it's easy to handle and add to/improve.
Basically it will go something like this:

Goal Level: This is current desire of the bot. This can be determined by the bot itself or by an order given by another bot or by a human player. (KILL! KILL! KILL!; GET THE FLAG BACK!; etc)

Higher Reasoning Level: Handling the decision making process and determines how to impliment the bot's current goal. This level determines how the bot wants to impliment the current Goal. This level has some say over the Goal Level that is determined by the bot's personality (like greed, loyality, agression, etc)

Behavior Level: This level directly handles the bot's behavior based on whatever order was handed down from the HR level. (RUN!, go to XX, attack XX, etc).