Difference between revisions of "AI Refactoring2009Crab"

From The Battle for Wesnoth Wiki
m (CURRENT)
(CURRENT)
Line 1: Line 1:
= CURRENT =
+
= CURRENT WORK =
  
extract gamestate-changing actions from AI code to separate classes.
+
1) extract gamestate-changing actions from AI code to separate classes.
 +
ai movement.
 +
ai attacks.
 +
ai recruiting.
 +
ai set movement to 0.
  
Proposed syntax (A'):
+
2) AI Lookup
 +
implement ai lookup by scanning ai/ais directory for a list of ai configs.
  
ai_move_result move_my_leader = execute_move_unit_action(from,keep);
+
3) AI testing:
  if (move_my_leader.ok()){
+
  set up a batch testing of 'ai vs ai' battles on my home computer, with results posted to db with a web frontend on a colocated server.
    ai_recruit_result recruit_soldiers = execute_recruit_action();
 
    if (!recruit_soldiers.ok()){
 
    }
 
}
 
 
 
Benefits:
 
 
 
1. well-defined interface between c++ ai and game state changes
 
 
 
2. separate return status from other values (such as 'move ok/move failed/move interrupted' vs 'where moved unit is now')
 
 
 
3. ability to detect unchecked ai commands at runtime (if .ok() wasn't called, we can complain in the destructor of ai_*_result).
 
  
 
= DONE =  
 
= DONE =  

Revision as of 19:37, 20 April 2009

CURRENT WORK

1) extract gamestate-changing actions from AI code to separate classes.

ai movement.
ai attacks.
ai recruiting.
ai set movement to 0.

2) AI Lookup implement ai lookup by scanning ai/ais directory for a list of ai configs.

3) AI testing:

set up a batch testing of 'ai vs ai' battles on my home computer, with results posted to db with a web frontend on a colocated server.

DONE

r34723 AI Refactoring: changed 'team' to 'side' when it means 'side number that starts from 1'.

r34720 AI Refactoring: Moved location of ai_interface::info to ai_manager. Now using a single copy of ai_interface::info for all AIs, and using get_info() accessor to get it from AIs. Also, fixed side to be unsigned int where it is possible.

r34719 AI Refactoring: removed unused turn_data_ from ai_interface::info

r34705 AI Refactoring. Extracted 'team number' and 'master' from ai_interface::info. This makes ai_interface::info ai-independent and allows to push it out of ai.