BestBots 2011
This page contains projects that were created by students during their Human-like artifical agents 2011/12 homeworks.
Lecture 2 Best Bot
Assignment - RetaliatorBot in Java
The task was to extends ResponsiveBot into RetaliatorBot. That is, if someone shoots you, repay him back. Try to return only as much damage as you receive.
Best Bot
The best RetaliatorBot was done by Čestmír Houšťka. You can learn-by-observation how event listeners are used in the code and how code from listeners can interact with code inside logic() method. Also all decision points (ifs) are verbally translated into English so you can actually see how you can think-in-Pogamut during bot coding. Bot contains a minor bug though … can you find the bug and fix it?
Room for improvements
- Bug Fixer: find and fix the bug
- PlayerFollower: bot could contain follow-bot behavior, that is, fix to some player and try to follow his/her/its movements.
- HumanFollower: harder variant, distinguish between bots and actual human players (hint: parse UnrealId of the Player object) and follow only human players.
- Bugger: bug players with random messages (see communication module)
- HumanBugger: harder variant, distinguish between bots and actual human players (hint: parse UnrealId of the Player object) and follow only human players.
- HaveOwnMind: when you bug a player by following him for a long time (e.g. 15 secs or more), stop following him for some time.
- Boredome: try to simulate boredom - the bot gets bored when nobody is shooting it, if “boredom” passes some threshold, start hurting other players (just a bit at a time) until they fight back.
Lecture 3 Best Bot
Assignment - CollectorBot in Java
The task was to extends NavigationBot into CollectorBot. That is, if someone shoots you, repay him back. Try to return only as much damage as you receive.
Best Bot
The best CollectorBot was done (again) by Čestmír Houšťka. You can learn-by-observation how path executor is working and how you can utilize TabooSet(s) to prevent bot from following to certain places too often. It also contains routine for obtaining “nearest-pickable-item”, which is very good to check out as you will surely need it later.
Again all decision points (ifs) are verbally translated into English so you can actually see how you can think-in-Pogamut during bot coding. Though, there is a comment to one line, that is clearly “wrong” and that line should not need to be there as well. Can you find it?
Room for improvements
- CommentReader: find unnecessary line/wrong comment pair and delete it out.
- WeaponFinder: if bot does not have any good weapon (flak cannon, minigun, shock gun, link gun, rocket launcher or lighting gun), it will first run to collect nearest weapon from that list.
- HealthMinder: if bot gets hurt (health drops below 100), it will try to find some medkit/health-vial first
- Specialist: if there are some nice items available (armor +50 / +100, big-keg-of-health or quad-damage), bot will try to pick them first.
- GoodManager: hard variant, combine WeaponFinder+HealthMinder+Specialist and reason about “what-is-the-best” to pick right now given my current state (owned weapons, health-level, armor-level).
Lecture 4 Best Bot
Assignment - Simple HunterBot in POSH
The task was to extends Modular PoshBot into simple HunterBot. The bot must have at least shoot-player behavior, that is shoot on visible players and item-collector behavior, try to collect arbitrary items around you. That is. We chose two best bots from student submissions.
Best Bot A
The first best bot HunterBot-A was done by Jan Vojt. You can learn how to code POSH senses and actions here and how to use them in a plan. It contains several drives and also contains health-prioritization in item-collecting behavior that is clearly visible from high-level POSH plan and all senses/actions are implemented without side effects (so you can tell what behavior this bot will exhibit only by looking at POSH plan).
Best Bot B
The second best bot HunterBot-B was done by Ondřej Filip. Again you can learn how to code POSH senses and actions here and how to use them. This bot contains more drives then the other one. Good part is “opportunistic” medkit picking, even though it is a bit problematic as it can trigger run to very distant medkit.
Room for improvements
- Tournament: perform tournament between HunterBot-A and HunterBot-B, can you tell which one is better? Are you sure? Explain.
- POSH-Master: utilize new POSH ActionResult to implement parallel shooting (hint: the trick is to use FINISHED).
- WeaponMaster: currently both bots are not using any other weapon than assault rifle, change that! Implement better-weapon-switching (again done in parallel with some other action, the trick is to have a clever-sense that stops signaling once you issue change-weapon command).
- I-Run-to-What-I-Need: change item collecting so it is more meaningful … prioritize good weapon / health / armor.
- RocketDodger: implement rocket-dodging (listen to object update event IncomingProjectile and try to use dodge commands).
- Taunter: implement funny chat messaging in some interesting moments (your/other bot deaths, different texts for different weapon used, some mild cursing, etc.).
- Croucher: try to crouch when firing on an opponent that is very far from you (more than 1500 units).
Lecture 5 Best Bot
Assignment - Simple CTFBot in POSH
The task was to extends CTF Posh Bot base into CTFBot. The bot must be able to fully play CTF game, that is, but must be able must have at least shoot-player behavior, that is shoot on visible players and item-collector behavior, try to collect arbitrary items around you. That is. We chose two best bots from student submissions.
Best bot A
The first best bot CTFBot-A was done (again) by Čestmír Houšťka. The POSH plan is designed in a way that the bot replans his path only if a) he reaches his last target point or b) there is an update of a state of enemy or home flag. There are also two big competences that look very similar - the first one handles a situation when the bot flag is stolen and the bot is the only one member in the team. In this case, the bot tries to get the flag even if he is carrying the enemy flag. The second competence handles this same situation - only this time there is another player in the bot's team. In this case the bot won't pursue enemy flag bearer if he is carrying enemy flag at the moment. To summarize this bot is capable of fighting, stealing enemy flag, getting his own stolen flag back and some limited team coordination.
Best bot B
The second best bot CTFBot-B was done by Jan Vojt. This tricky bot is capable of reasoning what is better if his flag is stolen. If he is closer to enemy flag than he thinks he is to his stolen flag, he will try to capture enemy team flag preventing the other team from scoring instead of trying to find and return his own flag. He is also capable of team coordination - he won't try to capture the enemy flag if it is already stolen. When he is low on ammo, he will try to collect some more items and if there is nothing else to do, he will try to capture enemy flag. To summarize this bot is capable of everything connected with CTF game type - getting items, protecting the flag, capturing enemy flag and some team coordination.
Room for improvements
- Experienced Hunter - every possible improvement for previous hunter assignment can be implemented also here to increase the efficiency of combat behavior
- Master Tacticians - advanced team coordination for teams up to 4 bots - synchronized attacks, defense, etc.
Lecture 7 Best Bot
Assignment - Emoticon bots in UnrealEngine2RuntimeDemo
The task was to implement two bots communicating with each other with emoticons based on Emohawk Empty Bot template. When the bot sees another bot/player he will approach him and say hi (through emoticon). The bot reacts to emoticons of other bots by his own emoticons. The bots were using UnrealEngine2Runtime environment (in UT2004 there are no emoticons!).
Best Bot
The best EmoticonBot was done by Ondřej Plátek. This project starts two bots - a boy and a girl. They exhibit a kind of funny behavior, where they will meet and talk - sometimes the girl will be fleeing the boy, sometimes they will go together to the cinema “in love”. The behavior has some problems though - the animations are not very well synchronized with movement and the bots have sometimes trouble finding path in the environment.
Room for improvements
- Debugging - the bots have sometimes a problem finding a path in the environment.
- Synchronization - The animations and movement of the bots is not synchronized very well.
Lecture 8 Best Bot
Assignment - Emoticon POSH bots in UnrealEngine2RuntimeDemo in POSH
The task was to implement two bots communicating with each other with emoticons in POSH based on MoodPoshBot template. When the bot sees another bot/player he will approach him and say hi (through emoticon). The bot reacts to emoticons of other bots by his own emoticons. The bots were living in UnrealEngine2Runtime (in UT2004 there are no emoticons). The students had to use at least one competence in their plan!
Best Bot A
The best EmoticonPOSHBot-A was done by František Farka. Two bots get spawned by this project. They run around randomly. When they see someone they will run towards him, greet him and ask him for beer.
Best Bot B
The best EmoticonPOSHBot-B was done by Lijun Wu. Spawns only one bot - if you want two bots, you need to run this project twice. The bot runs around the map and if he sees someone, he will approach him and start communicating with him through emoticons - he waits for his answers.
Best Bot C
The best EmoticonPOSHBot-C was done by Martin Pecka. Normally these two bots would run around the map randomly and approach other bots they see, but they were set up to spawn on the cinema roof, so they stay and communicate with each other there through several changing emoticons.
Room for improvements
- PathFinding: Sometimes the bots have trouble navigation through the environment.
- FineTunning: The bots sometime speak to each other, but they are not facing each other.
- Synchronization: By tweaking of steering parameters the bots could walk along each other, etc.
- Communication: By careful selection of emoticons the bots could make more sense in their conversation.
Acknowledgement
Creation of this course was partially supported by the project Integration of IT Tools into Education of Humanities, which is financed by the European Social Fund, the state budget of the Czech Republic, and by the budget of Municipal House Prague.
Inovace kurzu v letech 2011/2 a 2012/3 byly podpořeny projektem CZ.2.17/3.1.00/33274 financovaným Evropským sociálním fondem a rozpočtem hlavního města Prahy.
Evropský sociální fond
Praha & EU: Investujeme do vaší budoucnosti