Difference between revisions of "SoC2014 Zubin AI"

From The Battle for Wesnoth Wiki
(Description)
(Description)
Line 7: Line 7:
 
==Description==
 
==Description==
 
I believe that the key to making a good AI bot is to keep your ideas clear and simple. One must evaluate the gravity of the situation using the given parameters and accordingly act offensively or defensively.
 
I believe that the key to making a good AI bot is to keep your ideas clear and simple. One must evaluate the gravity of the situation using the given parameters and accordingly act offensively or defensively.
Sometimes it is more beneficial to risk one unit’s death or even sacrifice a few and perform the attack, the tricky part is to figure out when. In this game “Battle of Wesnoth” several factors affect the decision making like terrain, time of day (i.e. day / night), special abilities, enemy units’ status etc.  
+
 
 +
Sometimes it is more beneficial to risk one unit’s death or even sacrifice a few and perform the attack, the tricky part is to figure out when. In this game “Battle of Wesnoth” several factors affect the decision making like terrain, time of day (i.e. day / night), special abilities, enemy units’ status etc.
 +
 
Positioning is a crucial part, ideally we should try to position every unit such that it has backup from other units and is away from critical danger, also positioning in terrain that would support maximum defense if ideal. Next we must try to exploit the enemies weakness, e.g. if the enemies unit has no defense in range, then we should attack that unit with heavy range units. Also while attacking we must try to surround the enemy from multiple directions and then synchronize the attack.
 
Positioning is a crucial part, ideally we should try to position every unit such that it has backup from other units and is away from critical danger, also positioning in terrain that would support maximum defense if ideal. Next we must try to exploit the enemies weakness, e.g. if the enemies unit has no defense in range, then we should attack that unit with heavy range units. Also while attacking we must try to surround the enemy from multiple directions and then synchronize the attack.
 +
 
For implementation I propose use different parameters like aggression, depth etc. Here aggression parameter would specify how much the AI values its own units as opposed to that of the enemies. Depth parameter indicates the number of units that will attack a single opponent unit. protect_leader (radius) parameter, it is used to target any enemy unit which comes within the specified radius around the leader, and many others will be needed.
 
For implementation I propose use different parameters like aggression, depth etc. Here aggression parameter would specify how much the AI values its own units as opposed to that of the enemies. Depth parameter indicates the number of units that will attack a single opponent unit. protect_leader (radius) parameter, it is used to target any enemy unit which comes within the specified radius around the leader, and many others will be needed.
 +
 
The value of aggression will determine whether to play offensively or to retreat. Next I propose the use of decision tree to determine the value of aggression. The decision tree will be a binary tree and in each node we check some condition like terrain, time of day etc. which affects our strategy. So we start from the root node and after validating all the conditions we end up on a leaf node. The value of aggression will be determined on the basis of the leaf node we end up on.  
 
The value of aggression will determine whether to play offensively or to retreat. Next I propose the use of decision tree to determine the value of aggression. The decision tree will be a binary tree and in each node we check some condition like terrain, time of day etc. which affects our strategy. So we start from the root node and after validating all the conditions we end up on a leaf node. The value of aggression will be determined on the basis of the leaf node we end up on.  
 +
 
As mentioned earlier positioning is very important. Positioning of units is different for aggressive and defensive approaches. To plan out the positioning we will use threat map. A threat map is a 2D array which describes the level of danger on every position. While building a threat map, the positioning of the enemy units, type of units and other factors are taken into account.
 
As mentioned earlier positioning is very important. Positioning of units is different for aggressive and defensive approaches. To plan out the positioning we will use threat map. A threat map is a 2D array which describes the level of danger on every position. While building a threat map, the positioning of the enemy units, type of units and other factors are taken into account.
  

Revision as of 13:41, 21 March 2014


This page is related to Summer of Code 2014
See the list of Summer of Code 2014 Ideas



This is a Summer of Code 2014 student page


ATTENTION

Incomplete

Description

I believe that the key to making a good AI bot is to keep your ideas clear and simple. One must evaluate the gravity of the situation using the given parameters and accordingly act offensively or defensively.

Sometimes it is more beneficial to risk one unit’s death or even sacrifice a few and perform the attack, the tricky part is to figure out when. In this game “Battle of Wesnoth” several factors affect the decision making like terrain, time of day (i.e. day / night), special abilities, enemy units’ status etc.

Positioning is a crucial part, ideally we should try to position every unit such that it has backup from other units and is away from critical danger, also positioning in terrain that would support maximum defense if ideal. Next we must try to exploit the enemies weakness, e.g. if the enemies unit has no defense in range, then we should attack that unit with heavy range units. Also while attacking we must try to surround the enemy from multiple directions and then synchronize the attack.

For implementation I propose use different parameters like aggression, depth etc. Here aggression parameter would specify how much the AI values its own units as opposed to that of the enemies. Depth parameter indicates the number of units that will attack a single opponent unit. protect_leader (radius) parameter, it is used to target any enemy unit which comes within the specified radius around the leader, and many others will be needed.

The value of aggression will determine whether to play offensively or to retreat. Next I propose the use of decision tree to determine the value of aggression. The decision tree will be a binary tree and in each node we check some condition like terrain, time of day etc. which affects our strategy. So we start from the root node and after validating all the conditions we end up on a leaf node. The value of aggression will be determined on the basis of the leaf node we end up on.

As mentioned earlier positioning is very important. Positioning of units is different for aggressive and defensive approaches. To plan out the positioning we will use threat map. A threat map is a 2D array which describes the level of danger on every position. While building a threat map, the positioning of the enemy units, type of units and other factors are taken into account.

IRC

ZubinKapadia

Questionnaire

TODO: fill out the questionnaire, on your copy of this page. The questions are provided in the SoC Information for Google page.