From The Battle for Wesnoth Wiki

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



Andriy Andriychuk - "Total defence" strategy

The idea is to group own troops so they are in advantageous position and get less damage.

Brief algorithm

Troops will hold advantageous position and protect weak units. If it is possible, damaged units will be changing with more healthy. It is also important not to give opponent a chance to attack one unit using many own units(to surround unit). Of course, this is are just very basics. Much more principles and ideas will be included.



SoC Application

Submitted to google


1) Basics

1.1) Write a small introduction to yourself.

My name is Andriy Andriychuk, I'm 20 years old student learning programming. I am persistent and responsible.

1.2) State your preferred email address.

1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?


1.4) Why do you want to participate in summer of code?

First of all, it's great experience to contribute in such a good program. Second, it's very interesting to deal with open source. Third, it's an opportunity to show everybody your skills.

1.5) What are you studying, subject, level and school?

I'm studying programming languages(C++, Java, Python), paradigms, web-technologies, math. I'm a third-year student on Faculty of Cybernetics at Taras Shevchenko National University of Kyiv.

1.6) What country are you from, at what time are you most likely to be able to join IRC?

I'm from Ukraine, Kyiv. I can be able on IRC from 10:00 till 17:00 (GMT).

1.7) Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.


2) Experience

2.1) What programs/software have you worked on before?

I've worked in game development (C++) and worked on numerous tasks from university(I coded AI for reversi in Prolog, for example). I've made a lot of different programs in Java using most popular technologies. Also i have some skills in Python. For more details, please watch my CV.

2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)

Yes. I've used SVN (in company i've worked on) and Mercurial (in students team and alone).

2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?


2.4) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.


2.5) Gaming experience - Are you a gamer?

Well, I like to play, but not too often.

2.5.1) What type of gamer are you?

I prefer strategy games(graphics is the most unimportant thing for me) where it's a must to think of what you are doing every step.

2.5.2) What type of games?

Strategy games, RPG.

2.5.3) What type of opponents do you prefer?

I prefer a strong skilled player(or AI), even stronger than me. That's because of I don't want to win easy and I want to improve my skills.

2.5.4) Are you more interested in story or gameplay?

Gameplay, definetly. But I also like to dive into interesting stories.

2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.=

Yes, I played campaign latest weeks.

Here is the example of playing my future AI basics.

2.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for GSoC. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.

I've made only little patch until now - finding out if there is a problem.

3) Communication skills

3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.

Intermediate English.

3.2) What spoken languages are you fluent in?

English, Ukrainian, Russian.

3.3) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.

Yes. I'm patient and ready to explain everything correctly.

3.4) Do you give constructive advice?


3.5) Do you receive advice well?

Definitely. I like good advice and appreciate that.

3.6) Are you good at sorting useful criticisms from useless ones?

Yes. Good criticism is almost always clear, in cases it is not I'm able to understand gamers too.

3.7) How autonomous are you when developing ? Would you rather discuss intensively changes and not start coding until you know what you want to do or would you rather code a proof of concept to "see how it turn out", taking the risk of having it thrown away if it doesn't match what the project want.

I always try to explain every step of my work before I make it, because it's much better I think.

4) Project

4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?

Yes. I selected project "AI: Implement a 'total defense' strategy". I want to concentrate on making AI really strong.

4.2) If you have invented your own project, please describe the project and the scope.

4.3) Why did you choose this project?

Because it's really interesting and I have experience in similar programming.

4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like "I booked holidays between A and B" and "I got an exam at ABC and won't be doing much then".

As I have exams from 12.05 till 28.05 I'll be able only to study Wesnoth code and specially part of it that is needed for my project till June.


1 Dive into Wesnoth code. 30.05.2012
2 The skeleton(basics) of defensive AI. 30.06.2012
3 Base AI implemented. 5.07.2012
4 AI specifics. 8.08.2012
5 Testing, fixing bugs, improvements. 17.08.2012

And here are the goals of my project:

1 General Wesnoth structure


General understanding of Wesnoth code structure
2 Wesnoth AIs


Understanding of existing algorithms that are used in AIs
3 Patterns


Thinking about using some patterns in future
Milestone 1 Dive into Wesnoth code
4 Recruitment


Code of recruitment algorithm for defencive strategy.
5 Positioning


Choosing defencive position for all units and each separate unit(if possible).
6 Healing


Algorithm for healing in any possible way the most important units
Milestone 2 The skeleton(basics) of defensive AI
7 Testing skeleton


Try made base AI in game
8 Discuss


Discuss base defence AI with gamers
9 Improvements


Make some code improve code, fix bugs
Milestone 3 Base AI implemented
10 Positioning diving


Specific strategies depending on some types of map(islands with bridges)
11 Specific units


Some special strategy hints for effective usage of some unit's special skills.
12 Attacks


Making a "little" attacks during defending(if possible, AI should decrease enemy damage by killing some of his units)
Milestone 4 AI specifics implemented
13 Testing


Try made base AI in game
14 Discuss


Discuss defence AI with gamers
15 Improvements


Make some code improve code, fix bugs
Milestone 5 Defencive AI implemented

4.5) Include as much technical detail about your implementation as you can

I'll code on C++ using MIcrosoft Visual Studio or QT Creator environment and SVN version control system.

4.6) What do you expect to gain from this project?

Experience, first of all. I hope to gain estimation also and some money, of course.

4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?

Interesting projects, payment or opportunity to get great work in the future.

5) Practical considerations

5.1) Are you familiar with any of the following tools or languages?

  • Subversion (used for all commits)

Yes, I have experience with it.

  • C++ (language used for all the normal source code)

Yes, of course.

  • STL, Boost, Sdl (C++ libraries used by Wesnoth)

I have some experience in STL.

  • Python (optional, mainly used for tools)

Yes, I wrote some programs on it.

  • build environments (eg cmake/scons)


  • WML (the wesnoth specific scenario language)


  • Lua (used in combination with WML to create scenarios)


5.2) Which tools do you normally use for development? Why do you use them?

MIcrosoft Visual Studio or QT Creator. Because it's comfortable to deal with them.

5.3) What programming languages are you fluent in?

C++, Java, Python.

This page was last edited on 11 April 2012, at 23:10.