Difference between revisions of "SummerOfCodeIdeas"

From The Battle for Wesnoth Wiki
(Initial version)
 
(Ideas for Google Summer of Code projects)
Line 3: Line 3:
 
This is a compilation of ideas from ML. Needs to be refined (more detailed description, deliverables, workload estimation?):
 
This is a compilation of ideas from ML. Needs to be refined (more detailed description, deliverables, workload estimation?):
  
* Writing an AI based on the formula AI
+
=== Writing an AI based on the formula AI ===
 +
 
 +
Wesnoth has always had a simple C++ based AI. David (our lead developer) has been working on a simple language to write AI in wesnoth ''link to formula AI page here''
 +
 
 +
The wesnoth AI is used as an oponent in most campaigns, and as such is an important piece of code for the wesnoth project. Unfortunately it is also one of the most neglected piece of code and a place where a lot of research and work could be done
 +
 
 +
==== General description ====
 +
 
 +
The aim of this project is to develop a new AI that would replace the original C++ AI. The main criterias we would want for this new AI are
 +
 
 +
* ''Plugability :'' It should be trivial for any content maker to change the behavior of the AI in specific case. The exact cases are still to be defined but should typically include
 +
** hardwiring the first few turns of the AI
 +
** changing the recruitment pattern
 +
** completely controlling a given unit (sceneario unit)
 +
** taking control then giving back control of a given unit
 +
* ''tunability :'' It should be easy for a scenario author to specify the general behaviour of the ennemy on a given scenario (agressivity, intrepidity...)
 +
* ''specific behaviours :'' there are some typical behaviours that are not smart to win the scenario but are needed, such as guarding a given unit, a given position, wandering aimlessly, attacking randomly, always fleeing. The AI should implement such behaviours, and allow easy addition of new behaviours
 +
 
 +
 
 +
==== Required knoledge and talent ====
 +
 
 +
* ''A minimal knowledge of C++ is required, a good knowledge of C++ is desired :'' The formula AI framework is a work in progress and chances are high that some changes in the wesnoth code base will be needed. The wesnoth developper community is used to handle people that are familiar with coding but not C++, however the Forumla AI framework uses advanced C++ features and a good knowledge of the language would avoid a major hurdle when plugging in new entries or functionalities for the AI
 +
* ''Good social interaction with a large player community :'' A preliminary phase to coding any AI is to know the strategies and game pattern used by human players. This requires huge interaction with the player community. Our Gameplay Developpers are open and can give some good starting points, but a big game experience and good interaction with the player community will greatly help in the study of the design
 +
 
 +
==== Milestones and deliverables ====
 +
 
 +
It is hard to give milestones at this point, but here are some ideas of what could be done
 +
 
 +
* ''AI design description, and basic function library :'' This first deliverable aims to conclude the '''study and analysis''' part of the project : becoming familiar with the formula language, study of the Multiplayer strategies and of the need of scenario writers with regard to AI. We would like to have a description of the code structure of the AI, some basis of the play strategies it would use and how external scenario writers could configure it for the particular behaviour they need
 +
* ''Main AI delivery :'' This milestone's aim is to deliver a working AI implementing the strategies described in the first phase. It would not have to systematically beat the standard C++ AI at this point, but should be able to play the game correctly (recruit, early deployment on villages, grouping units to attack, holding its ground, protecting weak/important units). Moreover most plug-in entries should be available and a test-case for these entries should be provided.
 +
* ''Fine tunning and behaviour library :'' The third phase would validate the actual strategy of the AI. The AI should consistently beat the default C++ AI, and do fairly well against an average human player. At that stage a library of scenario behaviours should also be delivered. The AI does not need to be as efficiant with all scenario tweaking, but should act correctly with regard to the particular behaviour desired.
 +
 
 +
 
 +
=== Other ideas to be fleshed out ===
 
* Working on the GUI engine (needs to be defined more precisely)
 
* Working on the GUI engine (needs to be defined more precisely)
 
* Extend the multiplayer server to provide accounts and room
 
* Extend the multiplayer server to provide accounts and room

Revision as of 08:11, 27 February 2008

Ideas for Google Summer of Code projects

This is a compilation of ideas from ML. Needs to be refined (more detailed description, deliverables, workload estimation?):

Writing an AI based on the formula AI

Wesnoth has always had a simple C++ based AI. David (our lead developer) has been working on a simple language to write AI in wesnoth link to formula AI page here

The wesnoth AI is used as an oponent in most campaigns, and as such is an important piece of code for the wesnoth project. Unfortunately it is also one of the most neglected piece of code and a place where a lot of research and work could be done

General description

The aim of this project is to develop a new AI that would replace the original C++ AI. The main criterias we would want for this new AI are

  • Plugability : It should be trivial for any content maker to change the behavior of the AI in specific case. The exact cases are still to be defined but should typically include
    • hardwiring the first few turns of the AI
    • changing the recruitment pattern
    • completely controlling a given unit (sceneario unit)
    • taking control then giving back control of a given unit
  • tunability : It should be easy for a scenario author to specify the general behaviour of the ennemy on a given scenario (agressivity, intrepidity...)
  • specific behaviours : there are some typical behaviours that are not smart to win the scenario but are needed, such as guarding a given unit, a given position, wandering aimlessly, attacking randomly, always fleeing. The AI should implement such behaviours, and allow easy addition of new behaviours


Required knoledge and talent

  • A minimal knowledge of C++ is required, a good knowledge of C++ is desired : The formula AI framework is a work in progress and chances are high that some changes in the wesnoth code base will be needed. The wesnoth developper community is used to handle people that are familiar with coding but not C++, however the Forumla AI framework uses advanced C++ features and a good knowledge of the language would avoid a major hurdle when plugging in new entries or functionalities for the AI
  • Good social interaction with a large player community : A preliminary phase to coding any AI is to know the strategies and game pattern used by human players. This requires huge interaction with the player community. Our Gameplay Developpers are open and can give some good starting points, but a big game experience and good interaction with the player community will greatly help in the study of the design

Milestones and deliverables

It is hard to give milestones at this point, but here are some ideas of what could be done

  • AI design description, and basic function library : This first deliverable aims to conclude the study and analysis part of the project : becoming familiar with the formula language, study of the Multiplayer strategies and of the need of scenario writers with regard to AI. We would like to have a description of the code structure of the AI, some basis of the play strategies it would use and how external scenario writers could configure it for the particular behaviour they need
  • Main AI delivery : This milestone's aim is to deliver a working AI implementing the strategies described in the first phase. It would not have to systematically beat the standard C++ AI at this point, but should be able to play the game correctly (recruit, early deployment on villages, grouping units to attack, holding its ground, protecting weak/important units). Moreover most plug-in entries should be available and a test-case for these entries should be provided.
  • Fine tunning and behaviour library : The third phase would validate the actual strategy of the AI. The AI should consistently beat the default C++ AI, and do fairly well against an average human player. At that stage a library of scenario behaviours should also be delivered. The AI does not need to be as efficiant with all scenario tweaking, but should act correctly with regard to the particular behaviour desired.


Other ideas to be fleshed out

  • Working on the GUI engine (needs to be defined more precisely)
  • Extend the multiplayer server to provide accounts and room
  • Rewrite of the campaign (add-on) server
  • The editor can use quite a revamp
  • A good scenario editor. We have campgen but it hasn't been updated for a while.