Jump to content

ZDoom: Better Bot AI


Recommended Posts

Well I posted the original thread in ZDoom forums, but I as ususal the site has gone :( and I find this Error: (113) No route to host

So I post the thread here:

Well, another idea here, this time I think actually a brilliant one ;)

How about combining the Bot code and actor helpers, and make a new type of intelligent actors that could attack the players or help them.

The designers place some spawn spots for this new type of actor-bots (co-op or deathmatch style) and give them an optional tid to manipulate them later if required. and they would use the bots ai to do their works, but the level designers could use the actor mover script functions to manipulate them later, or place some new special patrol points to help them, (More on these helper objects later).

They would automatically spawn on these spawn spots at the begining of the level and optionally respawn there if they die in the level, and they would trigger the lines that are normally triggered by the players and not the monsters, and generally use bot ai unless especially manipulated by level designers, and there would be an option to tell them to move at the speed of the bots or at a specified speed.

If they are told to folow a path or do something else it would override the previous hate targets, and optionally they are forced to complete the job and ignore new hate targets.

Some new patrol points are for special uses, i.e. Health Spots, Weapon Spots, Mission Spots, Watch Spots, Target Spots, and maybe some new special points for CTF levels. Later I will describe them in detail.

If the actor-bot needs health either it uses a nearby health item, or it looks for the nearest Helth Spot in the level and starts its patrol from that point, and the points guides it to more health and optionally triggers a special to open doors or use lifts and so on.

If it needs more ammo or weapon then it looks for them or for a Weapon Spot.

And depending on their charactristics defined in a BOTS lump they can have different skins and sounds and speeds and good or bad aims and weapon preferences, or they would prefer to stand by Watch Spots and guard areas or go for Mission Spots and jump into action, They would hate some ActorTypes more than others, and would change target on sight, Some of them are braver and stay longer, and some would depart if they loose just a tiny part of their health; some of them are greedy for ammo, and some of them for armour; some of them would have more initial armour and health (combined woth different skins sounds reasonable) and they would have different initial weapons and ammo.

Some of them would be organic and would bleed on being shot and some would cause a bullet puff, and even some of them would fly.All of them have their individual names and also all of them would have different Intelligence Factors that is available to scripts for taking differnt decisions depending on their intelligences.

I.E. More intelligent bots would use an elevator while the dumber ones would have to use a longer rout to the roof or they would not be able to reach it at all.

We can have a network of special Target Spots that would help the bots to reach different areas of the level, each Target Spot would have a tag that is related to the sectors with the same tag, and each Target Spot knows about a few adjacent Target Spots and the way to reach them.

Each Target Spot has one or more Rout Objects linked to it, (by tag), and each Rout Object has a new Target spot in destination and an Intelligence Factor to check the with bots ai to see if it can use the rout, and optionally a Special to run, with the bot as the activator.

When a bot wants to reach a target on a balcony for instance, it goes to the Target Spot of the sector that it is standing in. and asks for the rout to the Target Spot of the balcony, the Target Spot Network (TSN for short) checks the routs with the bot`s inteligence and other charactristics (like ability to fly) to find a rout for it.

If no rout is found then the bot can act like current normal bots or it can go to a Watch Spot or Mission Spot, depending on it`s preferences level factors.

If it finds a rout the bot is given to the First Rout Object, and it either runs it`s special with the bot as activator or if it does not have a special it just tells the bot to go toward the next Target Spot. and that Target Spot sends it toward the next and so on...

Whenever a special is called, the next Target Spot and the Intelligence of the bot are two of its parameters and maybe the bits that tell the Script about the bot, like if it flies or can enter or leave water areas , can jump, is player friendly or not... Or maybe these characteristics of the activator can be accessed by normal ACS functions like "int ActorIntelligence()".

The level designers can check these parameters to react differently to the bot actions and make them look more real, for instance an inteligent bot can be sent to a rout that forces it stand before an elevator`s control panel and then lowers it and then tells the bot to enter it, then lifts the elevator to the roof, and then tells the bot to go to te next Target Spot.

Another example is for instance a bot may jump off a ledge wile another may search for a staircase.

In the end, if this ai can be applied to all the normal doom monsters then we can have a totally new game out of the current one, with as much intelligent monsters as the level designers can use these Special Spots in different areas of the levels, and we can have intelligent Bots in CTF levels, or normal co-op or deathmatch levels, with equally real monsters with different levels of intelligence, not like current monsters that any of them react exactly like the others.

P.S. Randy, will you give the current available monsters diffenent intelligence factors accessable by a new Actor-property argument? It will not affect the previous designed levels at all but would give us a new option to manipulate the monsters. (How about Dehacked?:)

P.S.2. How about an Actor-can-fly or Actor-can-swim check? and give all the current flying default monsters a swimming bit as well, and maybe we can change it to force a cacodemon to stay over the waterline or under an invisible deep-water sector.

Share this post


Link to post

The budding idea just got a bit more mature:

The Health Spots and Weapon Spots and Armor Spots ... all of them are just specified Target Spots in the Target Spot Network (TSN). and they are seeked by the bots not when they want to reach a target place but when they are in need of more health or ammo...

Mission Spots and Whatch Spots and Idle Spots are another subtype of the original Target Spots and are seeked out by bots in the begining of the level upon initializing the level or when they have accomplished the previous tasks. and they seek these spots according to their charactristics defined in BOTS lump and also according to the level circumstances.

There are some other Spot types like Attack Spots, and Defence Spots and Hide Spots, that are seeked out whenever a bot sees an enemy, and they would seek each type of these after comparing themselves to the target enemy and also according to their own charactristics (braveness, rushness, intelligence...) also defined in the BOTS lump.

if they want for instance attack the enemy they seek a nearby Attack Spot and search its target places for the sectors containing the target enemy. and if they find it they would follow the istructions and if they dont find a match then they act as a normal bot would do or they might switch the tactic and become defensive, i.e. search a nearby Defence Spot for instruction.

Each Action Spot has one or more accompanying Target Object that work just like a Rout Object described before, but those Target Objects can point to distant Target Spots and are not forced to point to an adjacent Target Spot (as Rout Objects), and they also have a special that contains the instructions that the bot would perform.

For instance when a bot finds some enemies across the level and decides to attck them, it seeks a nearby Attack Spot, and searches it`s Target Objects for the Target Spot of the sectors containing the enemies, and if it find any of them then it runs the Special of the Target Object with the bot as the activator.

In the special script we can tell the bot to stand beside a switch and then we flip the switch and start an alarm sound and then spawn some troops beside the Target Spot.

Or we can tell the bot to stand behind a turret and pour some imp fireballs uppon the enemies, or we can do other things...

The Defence Spot examples can be locking doors or activating laser barriers or sounding allarm to call help for the base.

The Hide (Sneak) Spots can force the bots to perform some hide and seek actions with enemies.

And each time the bots get rid of the offending enemies, they can seek some Initializing Spots like Mission Spots or Idle Spots or Watch Spots, and they would seek them according to their changing emotions and also their charactristics defined in the BOTS lump, or they can seek Supply Spots (Health Spots...) for reinforcements before Mission Spots.

The Mission Spots can tell them to patrol areas and perform tasks or maybe they can attack other bases and as their personas and intelligences differ, their actions may differ with each other, so we may see some bots attack another base and each of them doing some special task that differ with others.

The Watch Spots forces the bot to stand still looking at some direction.

And Idle Spots give the bots some random unimportant tasks from a list.
For instance they can walk seemingly aimlessly and standing infront of the windows looking at the view... as we play some whistling sound from them.

There is no limit in the scenarios that may come to the mind of the level designers... ;)

Share this post


Link to post

Skulltag?

Uhm, that sound a bit like some quake3 clone, that list about the bots. :P

Maybe it was better to post this on zdoom's forum?.

Share this post


Link to post

Skulltag?


No.

Uhm, that sound a bit like some quake3 clone, that list about the bots. :P


He didn't say anything about the bots always knowing where you are :D

Maybe it was better to post this on zdoom's forum?.

Well I posted the original thread in ZDoom forums, but I as ususal the site has gone :( and I find this Error: (113) No route to host


OWNED.

Share this post


Link to post
Tobester said:

No.



He didn't say anything about the bots always knowing where you are :D





OWNED.


heh, evil one. :P

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...