Frikbot Item desirability

Discuss Artificial Intelligence and Bot programming.
Lightning Hunter
Posts: 169
Joined: Wed Nov 28, 2007 6:15 am

Re: Frikbot Item desirability

Post by Lightning Hunter »

Dr. Shadowborg wrote: At this point, there are enough downsides that I'd suggest maybe just making skill 0 bots easy, skill 1 bots average (good for casual / not-too- stressful to play against), skill 2 bots somewhat elite, and skill 3 bots godlike. Or maybe do what UT does and reserve one skill for "auto adjusting skill"?
I think this will be the proper path to take with there being so many downsides trying to add more skills. I never was a fan of auto adjusting skill, myself. However, that brings up another idea of having each individual bot vary slightly in their aim (a random aim value could be selected for Wazat's code for each bot per match). In other words, maybe all 16 bots upon spawning could be given a slight variation in their accuracy, so they aren't all exactly the same. Unreal Tournament had individual bot characteristics like this, and I used to enjoy the different behavior between the bots. How difficult would it be to randomize the aim for each bot at the start of the match?
frag.machine
Posts: 2126
Joined: Sat Nov 25, 2006 1:49 pm

Re: Frikbot Item desirability

Post by frag.machine »

Just my $0.02:

Changing aiming accuracy alone based on bot classes will likely lead to some of them being consistently "weaker" than others.
IMO a proper approach would be to counterbalance this with another parameters (for example, the worse the aim, the faster the yaw speed, so it would mimic better a "twitching" player).

BTW, I am looking forward to play the final result, it's an awesome revamp project you guys are doing here. :)
I know FrikaC made a cgi-bin version of the quakec interpreter once and wrote part of his website in QuakeC :) (LordHavoc)
Lightning Hunter
Posts: 169
Joined: Wed Nov 28, 2007 6:15 am

Re: Frikbot Item desirability

Post by Lightning Hunter »

frag.machine wrote:Just my $0.02:

Changing aiming accuracy alone based on bot classes will likely lead to some of them being consistently "weaker" than others.
IMO a proper approach would be to counterbalance this with another parameters (for example, the worse the aim, the faster the yaw speed, so it would mimic better a "twitching" player).
I just thought this would be too much work. Also, I'm concerned about touching the speed or navigation abilities of the bots at all, because then their navigation ability could be affected in hundreds of maps I have waypointed. Some of the trick jumps I have set up are so fine tuned that even the slightest change in their speed or navigation could break it, causing the bots to fail many jumps. I thought the randomization of the aim could be very minor. You are correct about a few bots being consistently weaker than others, but that's the idea. Unbalance is what creates a challenge, or so I've noticed. In Unreal Tournament for example, a stronger bot against a bunch of weaker bots will rack up the frags quicker, so the player has to frag even more to keep up. This is the way real games online are as well. There are typically a few players who are competing for the win, while the weaker players are just competing not to get dead last. :P

Edit: Another way to look at it is this: If the frag limit of a game is 30 frags to win and there are 5 bots, then the total amount of frags during one match could be nearly 150 before a bot wins (if each bot is about the same skill). However, if the bots have randomized aiming, then the scores might look something like this at the end of the match:

bot 1: 30 frags
bot 2: 25 frags
bot 3: 10 frags
bot 4: 8 frags
bot 5: 6 frags
(Total of 79 frags)

In this case, the chances are pretty high that "bot 1" won the game very quickly, because it preyed upon weaker bots. This situation creates a bigger challenge for the player, because the player is forced to get more frags in a shorter period of time to beat bot 1. In a match that contains all equal bots, the game would have taken a lot longer to complete - giving the player more time to rack up frags, and causing less of a challenge.
Dr. Shadowborg
InsideQC Staff
Posts: 1120
Joined: Sat Oct 16, 2004 3:34 pm

Re: Frikbot Item desirability

Post by Dr. Shadowborg »

Lightning Hunter wrote: ...However, that brings up another idea of having each individual bot vary slightly in their aim (a random aim value could be selected for Wazat's code for each bot per match). In other words, maybe all 16 bots upon spawning could be given a slight variation in their accuracy, so they aren't all exactly the same. Unreal Tournament had individual bot characteristics like this, and I used to enjoy the different behavior between the bots. How difficult would it be to randomize the aim for each bot at the start of the match?
Depending on how complex you want it to be, as easy as creating something like a .float aim_ofs in bot.qc, setting it to a desired randomized variable in BotConnect (also bot.qc), then making use of it in bot_angle_set. (bot_ai.qc) It would automatically change every mapload. (so "kryten" might perform better on one map, but perform not as well on the next map)

If you wanted to really get fancy, you could put in personality variables for each and every bot (matched to his name), right down to accuracy for each weapon (and thus preferred weapon).
frag.machine wrote:Just my $0.02:

Changing aiming accuracy alone based on bot classes will likely lead to some of them being consistently "weaker" than others.
IMO a proper approach would be to counterbalance this with another parameters (for example, the worse the aim, the faster the yaw speed, so it would mimic better a "twitching" player).

BTW, I am looking forward to play the final result, it's an awesome revamp project you guys are doing here. :)
This could also *theoretically* be done fairly easy without messing with the navigation at all. (tweaking it to look good might be another thing though)
Lightning Hunter wrote:You are correct about a few bots being consistently weaker than others, but that's the idea. Unbalance is what creates a challenge, or so I've noticed. In Unreal Tournament for example, a stronger bot against a bunch of weaker bots will rack up the frags quicker, so the player has to frag even more to keep up. This is the way real games online are as well. There are typically a few players who are competing for the win, while the weaker players are just competing not to get dead last. :P
I agree, plus it does tend to make things more fun if every bot isn't uniformly hard to beat. :wink:
Lightning Hunter
Posts: 169
Joined: Wed Nov 28, 2007 6:15 am

Re: Frikbot Item desirability

Post by Lightning Hunter »

Dr. Shadowborg wrote:
If you wanted to really get fancy, you could put in personality variables for each and every bot (matched to his name), right down to accuracy for each weapon (and thus preferred weapon).
I actually thought about this, but how would individual bot skills work in combination with the skill levels and Wazat's aim offset code? It would have to all work together. I am willing to give each bot their own characteristics if you could get me started on just one of the bots, because I'm just not that good at coding. I wouldn't even know where to begin. If, for example, you coded one of the bots to have certain aim offsets for each weapon, I could simply copy and paste and modify each bot accordingly. This would actually work out great, because I already intended to release 4 alternative skin packs that I have already compiled for the Frikbots. That's what the "Alt Bot_misc" folder is for, in case you noticed it in the zip file I sent you with the source. Those bot names match up with skins that I compiled in progs.dat files. I also created batch files to swap the different skin files in and out (since only 16 can be used at a time).

Edit: By the way, are the bots dumber around a Ring of Shadows bearer now, or have they always been this dumb? I remember the bots at least shooting wildly whenever around someone with a ring, but now they don't really shoot much at all (they just stare off in some random direction). I was testing them in skill 3, and noticed this... A ring is practically like invulnerability with the current code. :P
Lightning Hunter
Posts: 169
Joined: Wed Nov 28, 2007 6:15 am

Re: Frikbot Item desirability

Post by Lightning Hunter »

I finished waypointing the official DM maps. I did them all from scratch, and spent quite a lot of time testing each map to make sure they were as flawless as I could get them to be. I have uploaded the waypoints and recorded a few videos of the navigation in DM2 and DM4. I will make posts about this in other Quake web sites later, once the release is closer.

Download:
http://fbe.am/uwW

DM2 Navigation:
https://www.youtube.com/watch?v=YIVsiBbBrWA

DM4 Navigation:
https://www.youtube.com/watch?v=e9WQneV6dBY
Dr. Shadowborg
InsideQC Staff
Posts: 1120
Joined: Sat Oct 16, 2004 3:34 pm

Re: Frikbot Item desirability

Post by Dr. Shadowborg »

Lightning Hunter wrote: I actually thought about this, but how would individual bot skills work in combination with the skill levels and Wazat's aim offset code? It would have to all work together. I am willing to give each bot their own characteristics if you could get me started on just one of the bots, because I'm just not that good at coding. I wouldn't even know where to begin. If, for example, you coded one of the bots to have certain aim offsets for each weapon, I could simply copy and paste and modify each bot accordingly. This would actually work out great, because I already intended to release 4 alternative skin packs that I have already compiled for the Frikbots. That's what the "Alt Bot_misc" folder is for, in case you noticed it in the zip file I sent you with the source. Those bot names match up with skins that I compiled in progs.dat files. I also created batch files to swap the different skin files in and out (since only 16 can be used at a time).

Edit: By the way, are the bots dumber around a Ring of Shadows bearer now, or have they always been this dumb? I remember the bots at least shooting wildly whenever around someone with a ring, but now they don't really shoot much at all (they just stare off in some random direction). I was testing them in skill 3, and noticed this... A ring is practically like invulnerability with the current code. :P
I'll work on getting that running, though I am a bit time constrained ATM. (things got a little busy IRL)

The bots have always been that dumb around Ring of Shadows, the difference is that they are now much less shooty because of aimcode improvments that prevent them from hurting themselves. I'll see what I can do to improve this behavior some when I have time.
Lightning Hunter wrote:I finished waypointing the official DM maps. I did them all from scratch, and spent quite a lot of time testing each map to make sure they were as flawless as I could get them to be. I have uploaded the waypoints and recorded a few videos of the navigation in DM2 and DM4. I will make posts about this in other Quake web sites later, once the release is closer.

Download:
http://fbe.am/uwW

DM2 Navigation:
https://www.youtube.com/watch?v=YIVsiBbBrWA

DM4 Navigation:
https://www.youtube.com/watch?v=e9WQneV6dBY
Cooool! :D Downloading now. :)
Lightning Hunter
Posts: 169
Joined: Wed Nov 28, 2007 6:15 am

Re: Frikbot Item desirability

Post by Lightning Hunter »

Hey Shadowborg, how's progress? I've been busy myself lately. I have just been touching up some waypoints here and there when I have the time. I think I am pretty much done waypointing all the maps I set out to waypoint (738 of them). At this point, there are few (if any) good quality maps left to waypoint. I think my goal is accomplished. :)
Dr. Shadowborg
InsideQC Staff
Posts: 1120
Joined: Sat Oct 16, 2004 3:34 pm

Re: Frikbot Item desirability

Post by Dr. Shadowborg »

Lightning Hunter wrote:Hey Shadowborg, how's progress? I've been busy myself lately. I have just been touching up some waypoints here and there when I have the time. I think I am pretty much done waypointing all the maps I set out to waypoint (738 of them). At this point, there are few (if any) good quality maps left to waypoint. I think my goal is accomplished. :)
Free time has been kinda scarce lately, personalized accuracy is at about 50 percent, just need to code some weapon selection stuffs, and item priority stuff. Improved Invisibility combat code is also at about 50-75 percent.
Dr. Shadowborg
InsideQC Staff
Posts: 1120
Joined: Sat Oct 16, 2004 3:34 pm

Re: Frikbot Item desirability

Post by Dr. Shadowborg »

Update: Invisibility code now completed. You'll have to wait until I finish the personalized accuracy stuff though as its not cut-and-paste friendly until then.

It basically checks to see if you've fired a weapon while invisible, or are infront of a bot and within 128qu. If so, they will either try to shoot at where they last saw you shoot from, or if they actually see you shoot, they'll lock on to you for a little bit.
Lightning Hunter
Posts: 169
Joined: Wed Nov 28, 2007 6:15 am

Re: Frikbot Item desirability

Post by Lightning Hunter »

Dr. Shadowborg wrote:Update: Invisibility code now completed. You'll have to wait until I finish the personalized accuracy stuff though as its not cut-and-paste friendly until then.

It basically checks to see if you've fired a weapon while invisible, or are infront of a bot and within 128qu. If so, they will either try to shoot at where they last saw you shoot from, or if they actually see you shoot, they'll lock on to you for a little bit.
Great, can't wait to see the final code!
Dr. Shadowborg
InsideQC Staff
Posts: 1120
Joined: Sat Oct 16, 2004 3:34 pm

Re: Frikbot Item desirability

Post by Dr. Shadowborg »

Okay, play around with this:

http://fbe.am/uJA

It's developmental, prototypey, but I *think* it works like it should.

bot.qc has the various skill accuracies as constants, you'll see them under the extra shizz here block.

Lots of crap at the bottom of bot_misc.qc.

You can change the various personal accuracies of weapons as well as favorite weapon in the botname function. Note that positive values will cause them to be less accurate, while negative values will give them more accuracy, compensating for skill level accuracy. Note final accuracy (in bot_angle_set) doesn't go any lower than 0, because once they hit that level, they don't get any more accurate. I've also added some accuracy stuffs for the grenade launcher.

If this works out okay for you I'll tell you how to integrate it into your own sourcebase.
Lightning Hunter
Posts: 169
Joined: Wed Nov 28, 2007 6:15 am

Re: Frikbot Item desirability

Post by Lightning Hunter »

I finally had a chance to take a brief look at the code. I'm actually confused as to where I put the botname info. Can you maybe do some personalized code for one of the default bots, like "frikbot"? I can then simply duplicate this for all the other bots. This would primarily show me where and how to add the code. :)
Dr. Shadowborg
InsideQC Staff
Posts: 1120
Joined: Sat Oct 16, 2004 3:34 pm

Re: Frikbot Item desirability

Post by Dr. Shadowborg »

Lightning Hunter wrote:I finally had a chance to take a brief look at the code. I'm actually confused as to where I put the botname info. Can you maybe do some personalized code for one of the default bots, like "frikbot"? I can then simply duplicate this for all the other bots. This would primarily show me where and how to add the code. :)
In bot_misc.qc, within botname, look at the various blocks.

Code: Select all

	if (r == 1)
	{	
		self.b_pants = 11;
		self.b_shirt = 0;
		// DRS: Weapon Preference / accuracy stuffs
		self.weap_acc1 = '0 0 0'; // Axe, Shotgun, Super Shotgun
		self.weap_acc2 = '0 0 0'; // Nailgun, Super Nailgun, GL
		self.weap_acc3 = '0 0 0'; // Rocket Launcher, LG, ???
		self.b_fav_weapon = IT_ROCKET_LAUNCHER;
		// ~ end Weapon Preference / accuracy stuffs
		return "Vincent";
	}
You change the self.weap_acc vectors. Each weapon's accuracy is listed in the comment, exactly in the order that they're set.

self.b_fav_weapon should be self explanatory.

Note every bot has this data.
Lightning Hunter
Posts: 169
Joined: Wed Nov 28, 2007 6:15 am

Re: Frikbot Item desirability

Post by Lightning Hunter »

Ahhhhh, I see. I didn't even realize you added that to bot_misc. I was looking at the "extra shizz" in bot.qc. That is very easy then! I'll start messing with it. :)

Edit: So, does the favorite weapon actually increase the priority of "Thisp", or does it make the bots desire switching to the weapon more often when they have it in inventory?
Post Reply