Google Code-in Micro AI Tasks

From The Battle for Wesnoth Wiki
Revision as of 23:07, 14 November 2012 by Mattsc (talk | contribs) (Micro AIs Overview)

Information on the Google Code-in Micro AI Tasks will be added in the next couple days.

Getting Help

This page provides information on the Google Code-in Wesnoth Lua AI tasks. If you need additional help, the preferred way of contacting us is on the Wesnoth IRC channels, specifically #wesnoth-dev. Ask for mattsc or Alarantalara. If we're not online, ask your questions anyway. Somebody else might be able to help. We will also read the logs and get back to you as soon as possible.

Another way of contacting us is via the Wesnoth forums, either by posting a question there (go to the 'Coders Corner' forum, we will have a GCI thread there) or by sending us a personal message (PM).

Getting Started

For working on the GCI Lua AI tasks, you need to have a basic familiarity with Wesnoth's markup language WML and with the Lua programming language. If you do not know WML or Lua yet but are familiar with coding in another language, you can probably acquire the basic skills needed in a few hours. This project does not require any in-depth knowledge of the complexities of either language.

While not absolutely necessary, it will be helpful to be familiar with the Wesnoth game itself. You also need to download the Wesnoth AI-Demos add-on, as this contains the AIs that you will be working with.

If you are already familiar with all this, you can skip the rest of this section.

Wesnoth

Note that all the GCI work needs to be done with Wesnoth's development version 1.11. It is not necessary that you compile the latest trunk version, downloading the last release of 1.11 (currently 1.11.0) is sufficient.

If you are not familiar with Wesnoth, start by playing a couple scenarios. Yes, part of the assignment is playing a computer game! Some things to try:

  • Check out the 'Play' link at the top of this page
  • Start one of the four novice level campaigns and play a couple scenarios
  • Start a multiplayer game (if this is your first time, you might want to start with a local game against the AI, but there is nothing wrong with playing a networked game against another human and get some advice as you go along)

AI-Demos Add-on

Download the AI-Demos add-on and check out the scenarios, in particular those for which GCI tasks exist. Note how the AI behavior differs from the normal Wesnoth AI.

You can download the add-on simply by clicking on 'Add-ons' in the main screen of the game. However, if you want to work on the GCI tasks, you will later need to download it from the AI-Demos github repository anyway, so you might as well do that right now:

  • Download the repository to a local directory of your choice
  • Set up a link to that directory from directory 'data/add-ons' in the Wesnoth user data directory
  • You should now see AI Demos in the campaign list in the game

Wesnoth Markup Language

Wesnoth uses an event-driven markup language, WML, to create scenarios and campaigns. The language manuals can be accessed through the 'Create' link at the top of this page.

You do not require a detailed knowledge of WML for the GCI tasks. You will, however, need to work with existing WML files, so you should at least understand their structure. Have a look at some of the files in the AI-Demos github repository scenarios/ folder. dragon.cfg is an example of a basic scenario that still uses the old AI syntax, while healer_support.cfg is an example of a scenario that uses the [micro_ai] tag.

Comparing the two files, setting up the Micro AI might not look that much simpler. However, the particular advantage of Micro AIs is that they can be configured with the parameters in the [micro_ai] tag. That is not possible with the original AIs without editing the lua engine files. Thus, the goal of the GCI Lua AI tasks is to:

  1. Convert existing AIs to a Micro AIs as they are
  2. Remove all scenario-specific content from the AIs and replace it by parameters (in the [micro_ai] tag) through which the AIs can be configured to the needs of different scenarios

Lua

The AIs you will be working with are written in Lua. You do not need a detailed knowledge of Lua for the GCI tasks (there are templates available for all parts of the work), but some basic familiarity is required, in particular with the general language structure and with Lua tables. Check out the Lua documentation, in particular the first few sections of the reference manual.

The use of Lua in Wesnoth is explained on the LuaWML wiki page. Again, it is not necessary that you work through this page in detail, but have a quick look at it and keep it in mind as a reference for the code in the Lua files you will be working with.

Micro AIs Overview

Setting up new AI functionality in Wesnoth from scratch is non-trivial and something most scenario and campaign authors don't want to deal with or don't have the time for. Even including some of the existing AI-Demos in a scenario requires quite a few lines of code (see, for example, prune_cart.cfg), and adapting them to the given scenario can be rather difficult. To facilitate the process, we have recently started to convert the existing AIs in AI-Demos to so-called Micro AIs. Micro AIs can be included in a scenario and configured to the scenario disigners need with a few simple lines of WML code.

See Micro_AIs for the Micro AI formalism and descriptions of the two already converted AIs. That page is also the one you will be editing for documenting your work.

Note: If you are interested in more background on how AIs in Wesnoth work in general, check out Practical_Guide_to_Modifying_AI_Behavior.

Converting an AI to a Micro AI

Parametrizing a Micro AI