Pages: 1 ... 6 7 [8] 9 10
 71 
 on: June 04, 2019, 02:10:00 PM 
Started by Neon_Knight - Last post by Neon_Knight
So, here's the situation:

OA/Q3 bots have quite the amount of attributes. And if that isn't enough, different skill levels may request different values for each attribute (for example, in skill 1 a bot plays like a noob, never uses weaponjumps and seldom uses the grapple, while in skill 5 it plays like a pro and practically uses weaponjumping and grappling in order to move across the map). Also there are up to three values per weapon (personal preference, accuracy and -for projectile-based weapons- skill). With that amount of values, it would be a good idea to have a bot generator.

In order to make the tool simple and easy to use, it should request only two values per attribute, one expected when skill=1 (the "minimum", which in some cases would be the "maximum") and another expected when skill=5 (vice-versa). Values for skills 2, 3 and 4 should be calculated based in those two peaks. That way the bot would provide a better challenge depending on the chosen level of difficulty. Weapon and item weights (preferences) should be implemented independently from these attributes, as those remain constant throughout skills 1-5. Finally, for the chatlines, that may require a different generator.

Leaving this before I start to think about it more often. And because someone surely have better ideas.

PD: BoomBox is Windows-only and requires installation, so there should be a better, multiplatform alternative.

 72 
 on: June 04, 2019, 11:38:02 AM 
Started by Neon_Knight - Last post by sago007
i would prefer calling it "Improving the AI". "Fixing" suggest that the AI is broken and I don't see any major bugs. Most of the things are improvements and some seems to suffer from regressions.

Domination and Possession could really need some improvements though.

 73 
 on: June 04, 2019, 08:12:34 AM 
Started by Neon_Knight - Last post by Neon_Knight
There's a fork created by Id's own Timothy Besset. And Sago also forked it.

 74 
 on: June 04, 2019, 03:10:09 AM 
Started by Neon_Knight - Last post by andrewj
About "taking some care before jumping down isn't human like"... well it depends from what you consider human! In real life, with no respawn, I would pay attention! ^_^
Heh.

I just experimented with changing the engine code -- the function is BotTravel_WalkOffLedge() in the file ai_move.c -- and found I could improve behavior somewhat, though needed extra code to ensure the speed did not get too low, otherwise a bot could get to the edge and simply stop because speed became zero.

But I actually think this function should not be changed, not much anyway.  What probably needs to happen is make the bspc tool produce better end coordinates for TRAVEL_WALKOFFLEDGE, since at the moment they are typically very vertical (X and Y coordinates of start and end are only a few units apart) so the bot is doing a very vertical fall.  If the end coordinate was out from the wall by 32 or 64 units, then I think they could fall off without slowing down.

 75 
 on: June 04, 2019, 01:25:41 AM 
Started by Neon_Knight - Last post by Gig
One thing I forgot to say yesterday: while spectating a bot which tried repeatedly to perform that hook use in the warehouse (it tried, bumped against the walls, falled down so got some damage and tried again, and again and again), I noticed that it continued trying up to dying by "cratering" at the end. It even had the portable medkit, but it didn't use it and just consumed all of his health a little at time.

I don't remember which bot it was, maybe sarge, grism or assassin...

 76 
 on: June 04, 2019, 01:01:15 AM 
Started by Neon_Knight - Last post by Gig
About "taking some care before jumping down isn't human like"... well it depends from what you consider human! In real life, with no respawn, I would pay attention! ^_^
Sorry, I can't parkour!

  Grin Grin Grin

I don't want to troll, just to have a smile!  Smiley

 77 
 on: June 03, 2019, 11:47:40 PM 
Started by Neon_Knight - Last post by andrewj
One thing I've noticed is how the bots don't like to simply jump down to a lower level, they always walk to the edge, look down and slowly walk off the edge.  It is very unhuman like, and makes the vulnerable to attack while doing this.
Apparently this behavior is in the engine side of things. And I'm yet not confident enough to go to that area.
Perhaps the bspc tool could change TRAVEL_WALKOFFLEDGE into TRAVEL_JUMP? I will experiment with it today....

UPDATE: tried it just now, on a large drop they did jump but not on a small drop (128 units), however they still slowed down and looked down before jumping, so that behavior must be hard-coded in the engine.

 78 
 on: June 03, 2019, 08:41:53 PM 
Started by Neon_Knight - Last post by Neon_Knight
One thing I've noticed is how the bots don't like to simply jump down to a lower level, they always walk to the edge, look down and slowly walk off the edge.  It is very unhuman like, and makes the vulnerable to attack while doing this.
Apparently this behavior is in the engine side of things. And I'm yet not confident enough to go to that area.

 79 
 on: June 03, 2019, 05:55:46 PM 
Started by Neon_Knight - Last post by Neon_Knight
So... I've separated each botfix into a separate branch. It's going to be better this way since we can focus on . Here are the fixes per branch:

- Bot chats: https://github.com/OpenArena/gamecode/pull/65
- Rocketjumping: https://github.com/OpenArena/gamecode/pull/66
- Grappling hook: https://github.com/OpenArena/gamecode/pull/67
- Domination: https://github.com/OpenArena/gamecode/pull/68
- Possession: https://github.com/OpenArena/gamecode/pull/69

 80 
 on: June 03, 2019, 08:34:14 AM 
Started by Neon_Knight - Last post by Neon_Knight
One thing I've noticed is how the bots don't like to simply jump down to a lower level, they always walk to the edge, look down and slowly walk off the edge.  It is very unhuman like, and makes the vulnerable to attack while doing this.

The other main thing that bugs me is that the bots will engage you in battle while their health is high, but get a rocket hit on them (or whatever) and suddenly they are running away to get some health.  I get the logic behind it, but I think humans are more likely to try to finish off their opponent before going to heal up.
I've noticed that behavior too, should be fixable because it does look unnatural.

As for the second paragraph, this piece of code from ai_dmq3.c shows that behavior:

Code:
/*
==================
BotFeelingBad
==================
 */
float BotFeelingBad(bot_state_t *bs) {
if (bs->weaponnum == WP_GAUNTLET) {
return 100;
}
if (bs->inventory[INVENTORY_HEALTH] < 40) {
return 100;
}
if (bs->weaponnum == WP_MACHINEGUN) {
return 90;
}
if (bs->inventory[INVENTORY_HEALTH] < 60) {
return 80;
}
return 0;
}

The bot returns a "cowardice" value (the higher the value the more likely they will retreat) after certain checks. If they have only the Gauntlet or their health has lowered to 40HP they will be more prone to running away than if they have Gauntlet+Machinegun or their health is below 60HP. I was thinking that armor should be taken into consideration.

This "cowardice" value is then used in other two functions: BotGetLongTermGoal (for a check in Overload mode where the bot doesn't want to attack the enemy obelisk anymore) and BotWantsToRetreat (self-explanatory). In both cases, if the "cowardice" value is over 50, they will retreat.

Pages: 1 ... 6 7 [8] 9 10