Difference between revisions of "Wesnoth AI"

From The Battle for Wesnoth Wiki
(Introduction to the Wesnoth AIs: some wording changes)
(some reshuffling of the sections)
Line 10: Line 10:
 
This page provides a brief summary of the available AIs and of the methods, tools and resources available for using and modifying them.  Links are provided to detailed documentation on each of the topics.  For reference, we also provide a brief timeline describing some of the main development milestones of the Wesnoth AIs.
 
This page provides a brief summary of the available AIs and of the methods, tools and resources available for using and modifying them.  Links are provided to detailed documentation on each of the topics.  For reference, we also provide a brief timeline describing some of the main development milestones of the Wesnoth AIs.
  
==Available AIs==
+
 
 +
== Available AIs ==
  
 
Wesnoth comes with several built-in AIs:
 
Wesnoth comes with several built-in AIs:
Line 28: Line 29:
 
In addition to these AIs, Wesnoth provides a variety of options for writing you own AI code.  See the links below for details.
 
In addition to these AIs, Wesnoth provides a variety of options for writing you own AI code.  See the links below for details.
  
==A Very Brief History of Wesnoth AIs==
 
 
While the general principle of the Wesnoth AI concept has been relatively stable throughout its development, the AI implementation has seen dramatic changes.  That said, basic scenario creator tasks such as [[AiWML|modifying AI parameters in WML]] are usually not changed much in order to keep backward compatibility.  On the other hand, the steps needed to write a custom candidate action and bind it into the existing AI framework might not be quite the same in Wesnoth 1.12 as they did in 1.10, and they are definitely different in 1.8.
 
  
It is not possible to capture all these changes on the Wesnoth AI wiki pages due to the complexity of the topic.  They generally only refer to the latest stable release series and the current development release series.  If, for some reason, you need to do AI work with an earlier version of Wesnoth, you might have to check out the history of the wiki pages.  Another way to go about it is by checking out examples of how things are done in mainline or add-ons of the respective release series.  In general, however, we ''strongly'' recommend using the latest Wesnoth versions, as modifying AI behavior has become ''a lot'' simpler than it used to be.
+
== Available AI Tools ==
  
For reference, here is a list of some of the major milestones of the AI development:
+
* Composite AI
 +
* Lua AI
 +
* Formula AI
  
* Up to Wesnoth 1.6
 
** The default AI of Wesnoth is, in fact, called ''Default AI'', with <code>id=default_ai</code> in the configuration.
 
* Wesnoth 1.1/1.2:
 
** A Python API for AI development is introduced.  This was later removed for security reasons.
 
* Wesnoth 1.5/1.6:
 
** [[FormulaAI|Formula AI]] is introduced.
 
* Wesnoth 1.7/1.8
 
** [[Wesnoth_AI_Framework|Composite AI framework]] is introduced, with the default AI functionality ported to this framework in form of the [[RCA_AI]].
 
** The [[RCA_AI]] becomes the default.
 
** [[LuaAI]] is introduced.
 
* Wesnoth 1.11/1.12
 
** Introduction of the [[Micro_AIs]]
 
** External Lua candidate actions become fully usable.  They are now the recommended method for writing [[Creating_Custom_AIs|creating custom AIs]]
 
  
==Wesnoth AI Resources==
+
== Wesnoth AI Resources ==
  
 
===AI Resources for Scenario and Map Creators===
 
===AI Resources for Scenario and Map Creators===
Line 82: Line 69:
  
 
Finally, the link to the AI Category at the bottom of this page includes links to all the remaining AI-related pages.
 
Finally, the link to the AI Category at the bottom of this page includes links to all the remaining AI-related pages.
 +
 +
 +
==A Very Brief History of Wesnoth AIs==
 +
 +
While the general principle of the Wesnoth AI concept has been relatively stable throughout its development, the AI implementation has seen dramatic changes.  That said, basic scenario creator tasks such as [[AiWML|modifying AI parameters in WML]] are usually not changed much in order to keep backward compatibility.  On the other hand, the steps needed to write a custom candidate action and bind it into the existing AI framework might not be quite the same in Wesnoth 1.12 as they did in 1.10, and they are definitely different in 1.8.
 +
 +
It is not possible to capture all these changes on the Wesnoth AI wiki pages due to the complexity of the topic.  They generally only refer to the latest stable release series and the current development release series.  If, for some reason, you need to do AI work with an earlier version of Wesnoth, you might have to check out the history of the wiki pages.  Another way to go about it is by checking out examples of how things are done in mainline or add-ons of the respective release series.  In general, however, we ''strongly'' recommend using the latest Wesnoth versions, as modifying AI behavior has become ''a lot'' simpler than it used to be.
 +
 +
For reference, here is a list of some of the major milestones of the AI development:
 +
 +
* Up to Wesnoth 1.6
 +
** The default AI of Wesnoth is, in fact, called ''Default AI'', with <code>id=default_ai</code> in the configuration.
 +
* Wesnoth 1.1/1.2:
 +
** A Python API for AI development is introduced.  This was later removed for security reasons.
 +
* Wesnoth 1.5/1.6:
 +
** [[FormulaAI|Formula AI]] is introduced.
 +
* Wesnoth 1.7/1.8
 +
** [[Wesnoth_AI_Framework|Composite AI framework]] is introduced, with the default AI functionality ported to this framework in form of the [[RCA_AI]].
 +
** The [[RCA_AI]] becomes the default.
 +
** [[LuaAI]] is introduced.
 +
* Wesnoth 1.11/1.12
 +
** Introduction of the [[Micro_AIs]]
 +
** External Lua candidate actions become fully usable.  They are now the recommended method for writing [[Creating_Custom_AIs|creating custom AIs]]
 +
  
 
[[Category:AI]]
 
[[Category:AI]]

Revision as of 03:34, 25 February 2016

This page is currently under construction (Feb 2016)


Introduction to the Wesnoth AIs

Wesnoth provides a general artificial intelligence (AI) which is active by default for all computer-controlled sides, as well as several optional AIs. These AIs are highly configurable and can be included and/or customized by scenario and map creators using simple WML code. For AI developers, it is also possible to replace parts or all of the default AI with custom code.

This page provides a brief summary of the available AIs and of the methods, tools and resources available for using and modifying them. Links are provided to detailed documentation on each of the topics. For reference, we also provide a brief timeline describing some of the main development milestones of the Wesnoth AIs.


Available AIs

Wesnoth comes with several built-in AIs:

  • Default (RCA) AI: If no special instructions are given, this AI is used automatically for all computer-controlled sides with no setup needed. In addition, it can be configured, modified and partly or fully replaced by custom AIs in a variety of ways. For details see:
    • RCA_AI: More details on the fundamentals, functionality and components of the default AI
    • AiWML: Description of WML methods and parameters for modifying the default AI's behavior
  • The Experimental AI adds additional features to the RCA AI and can be added to both single-player scenarios and multi-player games. It is still under development (thus its name) and might change from release to release.
  • Micro AIs add specialized behavior to Wesnoth that cannot be achieved by adjusting default AI parameters. A Micro AI can be included in a scenario with a few lines of WML code, using the [micro_ai] tag.
  • The Idle AI does nothing at all and can be chosen with ai_algorithm=idle_ai in the side definition. This is generally not particularly useful and has some bugs when trying to reenable it. It is usually better to set controller=null to deactivate sides (although that also disables healing, income/uptake and side specific events).

In addition to these AIs, Wesnoth provides a variety of options for writing you own AI code. See the links below for details.


Available AI Tools

  • Composite AI
  • Lua AI
  • Formula AI


Wesnoth AI Resources

AI Resources for Scenario and Map Creators

  • RCA_AI: Description of Wesnoth's default AI, with the following additional documentation:
  • Experimental_AI: Experimental augmented version of the default AI with additional features
  • Micro_AIs: Additional specialized AI behavior that cannot be achieved with the default AI

Resources for AI Coders

Legacy Resources for AI Coders

Miscellaneous Other Resources

The following resources are not generally needed for understanding, using and modifying Wesnoth AIs, but they might nevertheless contain some useful bits of information for the interested reader.

Finally, the link to the AI Category at the bottom of this page includes links to all the remaining AI-related pages.


A Very Brief History of Wesnoth AIs

While the general principle of the Wesnoth AI concept has been relatively stable throughout its development, the AI implementation has seen dramatic changes. That said, basic scenario creator tasks such as modifying AI parameters in WML are usually not changed much in order to keep backward compatibility. On the other hand, the steps needed to write a custom candidate action and bind it into the existing AI framework might not be quite the same in Wesnoth 1.12 as they did in 1.10, and they are definitely different in 1.8.

It is not possible to capture all these changes on the Wesnoth AI wiki pages due to the complexity of the topic. They generally only refer to the latest stable release series and the current development release series. If, for some reason, you need to do AI work with an earlier version of Wesnoth, you might have to check out the history of the wiki pages. Another way to go about it is by checking out examples of how things are done in mainline or add-ons of the respective release series. In general, however, we strongly recommend using the latest Wesnoth versions, as modifying AI behavior has become a lot simpler than it used to be.

For reference, here is a list of some of the major milestones of the AI development:

  • Up to Wesnoth 1.6
    • The default AI of Wesnoth is, in fact, called Default AI, with id=default_ai in the configuration.
  • Wesnoth 1.1/1.2:
    • A Python API for AI development is introduced. This was later removed for security reasons.
  • Wesnoth 1.5/1.6:
  • Wesnoth 1.7/1.8
  • Wesnoth 1.11/1.12
    • Introduction of the Micro_AIs
    • External Lua candidate actions become fully usable. They are now the recommended method for writing creating custom AIs