Building A Strategic Planner with Formula AI

From The Battle for Wesnoth Wiki

Personal Info

My full name is Timothy Vincent. My IRC, forum, and GNA names are all tvincent. I am a sophomore Computer Science major English minor at Villanova University in PA, USA. I'm interested in network security, web development, and artificial intelligence. I've been interested in programming computer games as a hobby since middle school. I am learning judo, and I play soccer. I love to read and write, and I'm also an independent musician working on my first album.

My Experience With the Game

I first played the game two summers ago (2006) and loved it. The artwork, the music, and the gameplay are great, and since then I've become very interested in Open Source programming. I have not however actually submitted any patches, though I plan to help out with the project whether or not I am accepted for SoC.

GSoC Questionnaire

Some answers to the questionnaire.

My Programming Experience

I am proficient in Objective-C and Java. I don't have as much experience with C++, but with my object oriented programming experience, I feel very comfortable reading C++ code and working with it.

Team Work Environment

I have worked, using pair programming methods, on two programs that the high school from which I graduated uses to assign teachers, classes, and students to classrooms for finals. This program takes hours less time than the previous method used each semester.

Solo Work

I have written several programs on my own ranging from simple games to a turning machine for a number theory class.

The Planner Model

I plan on using the Formula AI to create a strategic AI that exhibits human-like planning. A Planner has goals based on sub-goals (which will probably be primitives due to the time restrictions, but will be extensible to sub-goals with primitives of their own) and will fulfill these sub-goals with rules. The rules determine what can logically be done to advance and complete the goals. I plan on making this AI easily modifiable so other users can create AI's with very different behavior without much (if any) programming knowledge.

Human-Like Behavior

I'm hoping to create an AI that uses methods different from the current AI to value, move, create, attack, and defend units. I want an AI that will favor certain units over others depending on the strength and variety of its enemies' army. To do this I plan on using a less traditional method of valuing units that places different types of units (i.e. support, long range, or meat shield) into different categories, and chooses which category based on the rules and goals in the Planner model.

Resource Management

I would like to create the AI to smartly manage time and resources. I want it to know when to attack, when to build up strength, when to capture outposts for gold, and when to attack weakened enemies. This will all be tied into the Planner model among the goals. I will have each goal valued much like each unit is valued so the AI can choose whichever goal is the 'smartest' to pursue.

Responsive AI

I said in the Resource Management subsection, that I will have each goal valued like units are valued. One of the influencing factors will be the movements of the AI's enemies. Depending on certain aspects of the Enemies' strategy, the goals will be valued differently so the AI will pursue goals based on priority to its strategy with regard to its enemies' strategies.

This page was last edited on 25 March 2008, at 21:36.