Difference between revisions of "Google Code-in Micro AI Tasks"

From The Battle for Wesnoth Wiki
(Lua)
(Micro AIs Overview)
Line 55: Line 55:
  
 
== Micro AIs Overview ==
 
== 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, and adapting them to the given scenario can be quite difficult.  To facilitate the process, we have recently started to develop so-called Micro AIs, that can be included and configured with a few simple lines of code.
 +
 +
See [[Practical_Guide_to_Modifying_AI_Behavior]] for information on how AIs in Wesnoth work in general, and [[Micro_AIs]] for the Micro AI formalism and the two already converted AIs.
  
 
== Converting an AI to a Micro AI ==
 
== Converting an AI to a Micro AI ==
  
 
== Parametrizing a Micro AI ==
 
== Parametrizing a Micro AI ==

Revision as of 16:36, 14 November 2012

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. As examples, let's look at some files at the AI-Demos github repositoryadd-on (click on the links to see the files):

_main.cfg:

This is the main file that sets up the AI-Demos campaign and pulls everything together. You do not need to understand the details, for now the only important line is toward the end of the file:

{./scenarios}

This includes all files in directory scenarios/. Not surprisingly, these are the WML files for each of the AI-Demos scenarios. Check out dragon.cfg as an example of a basic scenario.

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, and adapting them to the given scenario can be quite difficult. To facilitate the process, we have recently started to develop so-called Micro AIs, that can be included and configured with a few simple lines of code.

See Practical_Guide_to_Modifying_AI_Behavior for information on how AIs in Wesnoth work in general, and Micro_AIs for the Micro AI formalism and the two already converted AIs.

Converting an AI to a Micro AI

Parametrizing a Micro AI