Difference between revisions of "Wesnoth AI"
(→Available AI Tools: add this section) |
(Remove 'under construction' message; general minor wording changes) |
||
Line 1: | Line 1: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
==Introduction to the Wesnoth AIs== | ==Introduction to the Wesnoth AIs== | ||
− | Wesnoth provides | + | Wesnoth provides an 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. | 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 == | ||
− | This section briefly lists the different AIs available in Wesnoth. Click on the links provided here and in the | + | This section briefly lists the different AIs available in Wesnoth. Click on the links provided here and in the resources section below for detailed descriptions of the AIs and for instructions for using and customizing them. |
=== AIs Available to Scenario and Map Designers === | === AIs Available to Scenario and Map Designers === | ||
Line 21: | Line 15: | ||
* '''[[RCA_AI|Default (RCA) AI]]''': If no special instructions are given, this AI is used automatically for all computer-controlled sides with no setup needed. It can be customized in many different ways. | * '''[[RCA_AI|Default (RCA) AI]]''': If no special instructions are given, this AI is used automatically for all computer-controlled sides with no setup needed. It can be customized in many different ways. | ||
* The '''[[Experimental_AI]]''' adds additional features to the RCA AI. It is still under development (thus its name) and might change from release to release, but it outperforms the default AI on most standard maps. | * The '''[[Experimental_AI]]''' adds additional features to the RCA AI. It is still under development (thus its name) and might change from release to release, but it outperforms the default AI on most standard maps. | ||
− | * '''[[Micro_AIs]]''' add specialized behavior to Wesnoth that cannot be achieved with the default AI. There is a large number of available Micro AIs and they can be set up using just a few lines of WML code. | + | * '''[[Micro_AIs]]''' add specialized behavior to Wesnoth that cannot be achieved with the default AI. There is a large number of available Micro AIs and they can be set up using just a few lines of simple WML code. |
* '''[[Creating Custom AIs|Custom AIs]]''': In addition to these AIs, Wesnoth provides a large variety of options for writing you own AI code. | * '''[[Creating Custom AIs|Custom AIs]]''': In addition to these AIs, Wesnoth provides a large variety of options for writing you own AI code. | ||
Line 31: | Line 25: | ||
* '''<s>Strong AI (RCA)</s>''': This is essentially just the default AI with very slightly modified recruiting. It will be removed from the default menu soon. | * '''<s>Strong AI (RCA)</s>''': This is essentially just the default AI with very slightly modified recruiting. It will be removed from the default menu soon. | ||
* '''[[Experimental_AI]]''': Again, the same AI as described above. | * '''[[Experimental_AI]]''': Again, the same AI as described above. | ||
− | * <s>Debug Mode '''Dev AIs'''</s>: If Wesnoth is in debug mode, quite a few additional AIs are available in the menu. These are, however, mostly not very good (worse than the default) or even entirely | + | * <s>Debug Mode '''Dev AIs'''</s>: If Wesnoth is in debug mode, quite a few additional AIs are available in the menu. These are, however, mostly not very good (worse than the default) or even entirely broken. We will remove most or all of these shortly. |
− | * '''[[Creating Custom AIs|Custom AIs]]''': Just as | + | * '''[[Creating Custom AIs|Custom AIs]]''': Just as it is possible to include custom AIs in the scenario code, they can also be provided for selection from the MP setup menu. These can be written either for specific scenarios/maps or so that they are available for all maps. |
== Available AI Tools == | == Available AI Tools == | ||
Line 45: | Line 39: | ||
'''Notes:''' | '''Notes:''' | ||
− | * Wesnoth has its own internal language called 'Formula' which can also be used for AI development. It is, however, not maintained any more and has by now been surpassed by Lua in ease of use in most case. We therefore do not | + | * Wesnoth has its own internal language called 'Formula' which can also be used for AI development. It is, however, not maintained any more and has by now been surpassed by Lua in ease of use in most case. We therefore do not recommend using it any more, but links to the legacy documentation are still provided in the resources section below. |
* A Python API for AI development existed also for a while. It was removed for security reasons. | * A Python API for AI development existed also for a while. It was removed for security reasons. | ||
Line 83: | Line 77: | ||
==A Very Brief History of Wesnoth AIs== | ==A Very Brief History of Wesnoth AIs== | ||
− | While the general principle of the Wesnoth AI | + | While the general principle of the Wesnoth AI 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, for example, [[Creating_Custom_AIs#Creating_Custom_Candidate_Actions|custom candidate actions]] and bind them into the existing AI framework have definitely evolved significantly from Wesnoth 1.8 to 1.10 to 1.12. |
− | 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. | + | 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, we still provide some of the legacy documentation, but you might also 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: | For reference, here is a list of some of the major milestones of the AI development: | ||
− | * Up to Wesnoth 1.6 | + | * 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. | ** 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: | + | * '''Wesnoth 1.1/1.2''': |
** A Python API for AI development is introduced. This was later removed for security reasons. | ** A Python API for AI development is introduced. This was later removed for security reasons. | ||
− | * Wesnoth 1.5/1.6: | + | * '''Wesnoth 1.5/1.6''': |
** [[FormulaAI|Formula AI]] is introduced. | ** [[FormulaAI|Formula AI]] is introduced. | ||
− | * Wesnoth 1.7/1.8 | + | * '''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]]. | ** [[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. | ** The [[RCA_AI]] becomes the default. | ||
− | ** [[LuaAI]] is introduced. | + | ** [[LuaAI|Lua AI]] is introduced. |
− | * Wesnoth 1.11/1.12 | + | * '''Wesnoth 1.11/1.12''': |
** Introduction of the [[Micro_AIs]] | ** Introduction of the [[Micro_AIs]] | ||
− | ** External Lua candidate actions become fully usable. They are now the recommended method for | + | ** External Lua candidate actions become fully usable. They are now the recommended method for [[Creating_Custom_AIs|creating custom AIs]] |
[[Category:AI]] | [[Category:AI]] |
Revision as of 15:10, 25 February 2016
Contents
Introduction to the Wesnoth AIs
Wesnoth provides an 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
This section briefly lists the different AIs available in Wesnoth. Click on the links provided here and in the resources section below for detailed descriptions of the AIs and for instructions for using and customizing them.
AIs Available to Scenario and Map Designers
Wesnoth comes with several built-in AIs from which scenario and map designers can choose:
- Default (RCA) AI: If no special instructions are given, this AI is used automatically for all computer-controlled sides with no setup needed. It can be customized in many different ways.
- The Experimental_AI adds additional features to the RCA AI. It is still under development (thus its name) and might change from release to release, but it outperforms the default AI on most standard maps.
- Micro_AIs add specialized behavior to Wesnoth that cannot be achieved with the default AI. There is a large number of available Micro AIs and they can be set up using just a few lines of simple WML code.
- Custom AIs: In addition to these AIs, Wesnoth provides a large variety of options for writing you own AI code.
AIs Available in the Multiplayer Setup Menu
Several AIs are available to be chosen for computer players in the multiplayer setup menu:
- Default AI (RCA): This is the same AI as listed above.
Strong AI (RCA): This is essentially just the default AI with very slightly modified recruiting. It will be removed from the default menu soon.- Experimental_AI: Again, the same AI as described above.
Debug Mode Dev AIs: If Wesnoth is in debug mode, quite a few additional AIs are available in the menu. These are, however, mostly not very good (worse than the default) or even entirely broken. We will remove most or all of these shortly.- Custom AIs: Just as it is possible to include custom AIs in the scenario code, they can also be provided for selection from the MP setup menu. These can be written either for specific scenarios/maps or so that they are available for all maps.
Available AI Tools
The default AI is written in C++ and therefore difficult to modify directly. However, it is a composite AI assembled from individual components which can be customized and modified in both WML and Lua. Documentation on the available AI tools can be found at:
- AiWML: Customizing the default AI using WML
- Modifying AI Components: More complex customization tasks
- Wesnoth_AI_Framework: Description of Wesnoth's composite AI configuration
- Creating_Custom_AIs: Instructions for writing your own AI components
- Lua AI: Recommended method for writing custom AIs
Notes:
- Wesnoth has its own internal language called 'Formula' which can also be used for AI development. It is, however, not maintained any more and has by now been surpassed by Lua in ease of use in most case. We therefore do not recommend using it any more, but links to the legacy documentation are still provided in the resources section below.
- A Python API for AI development existed also for a while. It was removed for security reasons.
List of Wesnoth AI Resources
AI Resources for Scenario and Map Creators
- RCA_AI: Description of Wesnoth's default AI, with the following additional documentation:
- AiWML: Customizing the default AI using WML
- AI_Recruitment: Customizing the recruitment of the default AI
- Modifying AI Components: Instructions for some of the more complex customization tasks
- 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
- Wesnoth_AI_Framework: General principles of the inner workings of the Wesnoth AI mechanism
- Creating_Custom_AIs: Instructions for doing just that
- Lua AI: Recommended method for writing custom AIs
Legacy Resources for AI Coders
- Lua_AI_Legacy_Methods_Howto: Old methods for writing custom AIs using Lua AI
- Formula AI: Another language for writing custom AIs
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 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, for example, custom candidate actions and bind them into the existing AI framework have definitely evolved significantly from Wesnoth 1.8 to 1.10 to 1.12.
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, we still provide some of the legacy documentation, but you might also 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.
- The default AI of Wesnoth is, in fact, called Default AI, with
- 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:
- Formula AI is introduced.
- Wesnoth 1.7/1.8:
- 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.
- Lua AI 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 creating custom AIs