Difference between revisions of "SoC 2012 HappyKsuh AI Recruitment"

From The Battle for Wesnoth Wiki
(Details)
(Details)
Line 73: Line 73:
 
| 6
 
| 6
 
| Different recruiting styles
 
| Different recruiting styles
| Implement different recruiting styles (i.e. "defensive", "aggressive", "conserve resourses") and integrate it into the current recruiting system.
+
| Develop and implement different recruiting styles (i.e. "defensive", "aggressive", "conserve resourses") and integrate it into the current recruiting system.
 
| none
 
| none
 
|
 
|

Revision as of 19:27, 5 April 2012


This page is related to Summer of Code 2012
See the list of Summer of Code 2012 Ideas



This is a Summer of Code 2012 student page



This proposal is under construction!


Description

Kseniya Buraya - Refactoring AI Recruitment

Though it is already mentioned in the ideas list, I'll repeat:

I will have to change AI Recruitment Algorithm as it will be able to:

- support recruiting with multiple leaders
- support per-leader recruit/recall lists
- support easy limiting of recruitable units

I will also have to improve these parts of Recruitment Algorithm:

- analyzing map terrain
- recruiting the most useful units
- counter-recruiting strategies

Also the part of project I think will be the implementing of different styles of recruitment:

- recruiting for AI-playable campaigns where AI has to not spend all the gold
- "aggressive" and "defensive" recruiting styles

Details

ID NAME DESCRIPTION REQUIRES PROGRESS
0 Per-leader recruit/recall lists Add to ai_default_recruitment_stage personal recruit/recall lists for each leader. none
1 Multiply leaders support Modify ai_default_recruitment_stage as to make it support recruiting with multiply leaders. Implementation requires to find a way to find a keep for each leader, probably bruteforcing would be effective. 0
2 Terrain analysis Add function to analyze_potential_recruit_terrain() similar to analyze_potential_recruit_combat() and analyze_potential_recruit_movements() none
3 Goals of potential recruits Find a way to store information about the goals of every recruit. Probably to store it in unit::role_ later. none
4 Limitation of recruitment Find a way to store information about the uppper limit of each type of units. none
5 Sensible counter-recruiting strategy Add function similar to get_combat_score, that will calculate scores based not only on enemy units but on own units too. Probably it'll take a lot of time to develop and test. 3
6 Different recruiting styles Develop and implement different recruiting styles (i.e. "defensive", "aggressive", "conserve resourses") and integrate it into the current recruiting system. none
7 Wait for enemy strategy Add functionality to AI to wait for player's units creation to run counter-recruiting strategy against them. Looks like while waiting AI will recruit in "scout mode". 5 6

Timeline

IRC

HappyKsuh

SoC Application

Submitted to google

Questionnaire

1) Basics

Name : Kseniya Buraya

Age : 18

E-mail : ksu.nyaka @ gmail . com

IRC : HappyKsuh

Country : Russia (UTC +4)

Education : SPb NRU IFMO, Computer Science, 1st year

I want to participate in GSoC because it provides an awesome opportunity of working in a huge project. Getting professional experience is the main goal for me for now. Getting in touch with the Open Source projects and community, getting the knowledge of how they work is also significant. And of course financial stimulation plays an important role.

2) Experience

I have no developing experience yet and as I'm a first year student I'm participating GSoC at the first time. The only significant thing is that I worked on translations of Battle for Wesnoth campaigns to the Russian during the Google Code In 2011, so I'm familiar with all the instruments necessary to get involved into the project.

Instead I got a lot of ACM experience while studying in high school that included some work on AI-based tasks. I think that AI is one of the most interesting spheres in nowadays IT, therefore I looked for AI-based projects in GSoC.

In reference to gaming experience - of course I'm a gamer. I prefer games that provide PvP experience like WoW or latest CoD, or games that just tell you a cool story like casual Machinarium or Half-Life series. For me the most significant part of game is the symbiosis of the story and gameplay, I hate those moments when after a thrilling story turn you have to watch stupid misses in AI-scripts or other gameplay issues that destroy all the delight of the moment.

I've played Wesnoth campaigns for a month during GCI 2011 and haven't participated in online battles.

3) Communication skills

I'm a native Russian speaker and I'm quite fluent in English. I'm feeling quite comfortable speaking in IRC. Usually it is not a problem for me to find common language with other people because I'm not afraid to ask questions and always answer if smb asks me.

I also feel comfortable with constructive criticism and advices given to me, because these are the only two things that experienced colleagues can give to me, so why to refuse? The same is right for me: for what do I have experience if I can't share it with smb?

Saying about developing - I'm surely will discuss the details of idea until I'll get the clear vision of how it'll work. For me getting the perfectly working code is much more important than coding smth that may be even unnecessary.

4) Project

I'm interested in AI Recruiting Algorithm. As I mentioned above, I had some experience in AI-algorithms and they looked very interesting to me, therefore I chose that project. I'm looking to get experience of AI-scripting and deepen my knowledge at that sphere. If the results of the project will be important for me, I'd stay in the project and continue work on AI improvements.

Unfortunately I have my exams during the mid of June, therefore I won't be very productive until that time. Instead I'll try to do some work till the end of May. This way the half of work should be done to the first mid-term deadline.

5) Practical considerations

I'm familiar with Java and C++ and ususally use MS VS or Eclipse as working IDE, or sometimes gedit if the project is simple and small.

  • Subversion (used for all commits)
  yes
  • C++ (language used for all the normal source code)
  yes
  • STL, Boost, Sdl (C++ libraries used by Wesnoth)
  familiar with STL and have a little experience in Boost
  • Python (optional, mainly used for tools)
  no
  • build environments (eg cmake/scons)
  yes
  • WML (the wesnoth specific scenario language)
  no
  • Lua (used in combination with WML to create scenarios)
  no