A joint project for Human-like artificial agents (NAIL068) semestral work done with Petr Kadleček. The task was to create a bot for Unreal Tournament 2004 capable of playing capture the flag. Written in Java using the Pogamut 2.4 platform.

This is our (Petr Kadleček's and mine) entry for 2009 summer semestral project for Human-like artificial agents (NAIL068). The task was to write a bot for Unreal Tournament 2004 capable of playing CTF in teams. The bot is written in Java using the Pogamut 2.4 platform which is now outdated. The bot was tested on the CTF-FaceClassic map.

While the implementation is really simple using just the if-then behavioral system we were quite surprised by the bot abilities. First bot in a team is assigned a leader role, he then uses in-game text chat to distribute orders between the rest of the team. With these he balances the number of attacking and defending teammates based on the game score.

Each bot according to his assigned role then chooses what to do based on his current statistics. For example he seeks medkits when injured, seeks ammo when running out of it, seeks better weapons after respawn. When defending he either finds a good sniping spot or grabs a rocket launcher to defend the flag. When the flag is stolen all defenders and attackers intercept the enemy flag carriers. Assault role bots are also capable of supporting friendly flag carrier.

It is not certainly the most challenging bot out there, yet he can give out some opposition and eventhough he uses the default map navigation system he can sometimes surprise you. Sometimes it is an unpleasant surprise because due to the bug in nearest target method in the 2.4 Pogamut version used during the development we've observed team-killing ambitions of the bot - ocassionally we were caught in a friendly fire redeemer blast.


  • If-then behavioral system
  • Leader oriented reasoning
  • In-game chat communication
  • Sniping behaviour
  • Bots are capable of supporting flag carriers