Game Development Community

dev|Pro Game Development Curriculum

Plan for Trent Reimer

by Trent Reimer · 02/05/2004 (10:20 am) · 4 comments

I have been playing around with the bot code in the Torque (and as further developed by GameBeavers) and I would like to take this opportunity take off my hat to Pat Wilson, Stefan Moises, Jim, Daniel Neilsen, Britton LaRoche and everyone else who has contributed to the effort. My job at this point is relatively simple.

I am going to be experimenting with a number of ideas, none of which look to be out of reach since I am just adding a few bricks to a structure built by others.

Some ideas:

1) Bots which do not get stuck. One can go two directions with this: add just enough AI logic to work hand-in-hand with a well designed level or add reams of AI logic so that the levels can be built in any fashion desired. I believe the former will be less taxing on the game server so that's where I'm leaning.

2) Personality. I'm not completely convinced this would be a good idea but who knows until it's tried? Imagine one bot which is vengeful - looking for opportunities to even the score, another which is cowardly - always trying to "hit and run", another which is unselfish - always looking out for team-mates, one which is opportunistic - always going after the player with most damage, etc. What do you think? Good idea? Bad idea? Waste of CPU cycles?

3) Team roles for CTF. In capture the flag games I think it would be good to instill behaviour which aids the team. For example, if a bot grabs the flag I would prefer if it didn't get side-tracked hunting enemies - I'd like it to be thinking more along the lines of "Run, Run, Run!" Or if a bot is close to a team-mate which has the flag it should become protective of the flag-bearer, sacrificing itself if necessary.

None of this will be of any use unless it can be made to execute efficiently so there's going to be some experimentation.

#1
02/05/2004 (5:36 pm)
A quick thought on personality - I haven't really played any games where personality was noticeable in the AI. Good luck with that, but you might want to stick with the other goals. ;)
#2
02/05/2004 (11:06 pm)
I like second point idea much. (but then again, I have no coding background) There was a discussion on the matter here on GG where I defended idea zealosly. Dont believe I have a link though.

Simple way to make players notice such traits of the bots would be adding simple message system: "Kali-bot will not forget that" or "Simplotron doesnt love you anymore" or something along the lines.

Also, in discussion, there was also an idea of chat in between the games where bots take part similar to irc-bots. their messages could differ taking in account their "vengeance score" so they might wow to kick specific player`s butt next time etc.

I for one would love to see bots with differing personalities: revengeful, coward, chevalier etc.
#3
02/06/2004 (4:11 am)
Quake 3 had some pretty memorable bots. I remeber a friend of mine hated Bones. He was his arch-enemy :D
#4
02/19/2004 (12:50 pm)
Actually the revenge idea would not be hard to implement. You could add boolean values or percentage values to the botlist.cs file.

%Vengeful = true;
%AttackTargetID=0;

Then when the bot dies or takes damage in the player.cs file you could check to see if the bot was vengeful and if the attack target was set. You could use a percentage value and the %value=getrandom(100) function if %value < %vengeful... If he was vengeful and did not have a current attacktargetID set you could set the attack target equal to the client id or botlist id.

In the attack scripts in the beaverbot.cs where we select the target we would check the the attackTaget value and if it was set he would ignore the other scripts that selected a new target and focus on only on that AttackTargetID.

In the poor targets player death event or in the AI target killed event you could set that value back to zero. This way the bot would ignore everything except killing the one that he had selected to die. He would not stop until he had killed his target. Then we need a cool "Revenge Mutha F****r! I got yo ass!" kind of a taunt.

The bot would then go back to the normal routine until some one else pissed it off.