AI in soccer
Being supplied with a Java application that simulated a soccer game between two computer controlled teams in real time, we implemented an artificial intelligence for the players in order to beat the opponent team being controlled by an existing AI.
In possession, our AI focused on making predetermined circumferential runs towards the opponent's goal, while trying to avoid defenders by running around them. The player in possession would pass the ball to unmarked players when the opponent's defenders' pressure got too high, while his fellow attackers would run to certain positions to offer support. At a certain distance, the attackers would shoot the ball when there is a clear line to the goal. Without possession, the attackers focused on putting pressure on the opponents, while defenders remained in the back for cover.
It was quite hard to find a good strategy, trying to balance offensive and defensive capabilities. We had to make sure we were not merely countering one (or all) of the pre-programmed standard AI's, but aimed to really make it smarter than the others. We soon decided to split the players in attackers and defenders, keeping the attackers very active, rushing for goal in possession, and pressuring the opponent without. The defenders were more static, offering cover at the back line for when the ball got past the attackers. In the end, we defeated all default AI's, and also did well during a tournament in which new AI's played against each other.
This project was implemented using Java.