From The Battle for Wesnoth Wiki

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

This is a Summer of Code 2014 student page




neonosos - Improve AI by global world analysis

My goal is to contribute Wesnoth AI by improving AI players with global-analysis skill. This skill makes AI players able to not only react on local impulses (such as attack or presence of another player), but also to make deeper-planned strategies.

Economical aspect
The AI player should be able to decide which enemy to attack according to his economical needs. It means, that if AI player needs gold, he should attack player with high gold resources.
War-strategy aspect
AI player should not attack if it's not appropriate. Why to attack player, that is much stronger than the AI? Maybe some kind of indirect (for example economical, diplomatic) attack would be more appropriate.
Planning for future aspect
Should I attack the nearest enemy's village? Why not to attack the further one, cutting of the escape from the nearest village?




Example contents for this section (without the quotes): "user" "user1, user2"

1) Basics

1.1) My name is Martin Tamajka. Since secondary grammar school, I'm interested in IT. But there's one passion, that's bigger than informatics - world of fantasy. When I was a little boy, I've begun to read fantasy books. From this time, I became a big fan of this kind of literature and lifestyle. I've already written some little novels. Unfortunately, due to high level of school duties, I was forced to pause these activities. Now, because I'm in the last year of my undergrade studies I believe, that I'll be able to return to this passion.

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?

The main reason is that I want to improve my skills as far as team-work is concerned. Although my bachelor thesis was a part of big team project (this thesis was a part of project competing in Imagine Cup contest 2014. For this project, our team deserved a Honorable mension), I believe that this ability is the key one and there're plenty possible improvements.

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

At this time, I'm an undergrade student of Slovak University of Technology, Faculty of Informatics and Information Technology, 3rd year.

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

I come from Slovakia. Because I'm in the last phase of undergrade study, I'll be able to join IRC in the end of June 2014.

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

I've not planned any such time-consuming activity, yet.

2) Experience

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

The biggest project I've worked on is my bachelor thesis. Our project concerned automatic creation of interior 3D models using RGB-D camera Kinect for Windows. I was (and still am, because project is currently in developement) responsible for interaction with Kinect, processing its data, creating computer vision algorithms (keypoint extraction, point-cloud alignment, voxelization, simplification, etc.). More on

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

As stated before, my bachelor thesis was a part of bigger project. This project was created as a part of Microsoft Imagine cup competition. It was mentored by Ing. Jakub Simko, PhD. I've cooperated with three other team members.

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?

No, I've not. Last years I've been collecting experience in companies across Slovakia. These were Hewlett Packard and Analytica Design.

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

I'm not.

2.5) Gaming experience - Are you a gamer?

Yeah, I am! I'm really interested in game industry. I prefer real-time and turn-based strategies, but I also love almost any kind of game concerning history and fantasy. I still remember the excitement I felt when I's playing my first RGP - Gothic II (unfortunately, I've not had any computer before). Currently, my absolutely most favourite games are games from Total war series.

2.5.1) What type of gamer are you?

I'm passionate player, but nowadays (because of studies - unfortunately), I've not enough time to play. I'm really in my bachelor thesis project, it's really fun and has potential.

2.5.2) What type of games?

I prefer real-time and turn-based strategies and RPGs.

2.5.3) What type of opponents do you prefer?

As a developer, I'm thrilled by AI, so from this point of view I prefer AI opponents, because I'm able to remove its shortages. From gameplay-experience point of view, I prefer human opponents, especially when I don't know my opponent, because their behaviour is much more unpredictable.

2.5.4) Are you more interested in story or gameplay?

As a fantasy fan, I'm more interested in story. But don't think, that I believe gameplay is not important and funny thing to develop, too! :)

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

Not yet, but I'm already downloading the game and its source code :)

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 repository (during the evaluation period or earlier) please state so.

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.

Although I'm studying at slovak university, almost all of our study materials are english. According to this, my reading skill is very high. My written and spoken English is good enough to communicate with people from foreign countries, but it's not perfect (as you can see ;) )

3.2) What spoken languages are you fluent in?

German, English, Slovak, Czech

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 am. I've lead a guide on a free World of Warcraft server. Sometimes I had to solve particular problems among guide members, and one needs a calm head to do this.

3.4) Do you give constructive advice?

I believe so. If I've some advice for someone, I always try explain my advice in detail, because I don't like advices such as "click here, although you don't know why"

3.5) Do you receive advice well?

Yes, if the person is able to explain it to me, so I can understand the advice.

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

If I were not able, I'd become mad years ago. At my work for Tesco stores I had to get used to filter useless criticisms from the important ones.

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

Although it's not always true, I prefer planning before coding. From my experience I see it saves a lot of time, because it's much more difficult to get oriented in ready code than in some writings, pictures, notices and diagrams.

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?

I deciced to apply for "AI: Improve AI by implementing global attack/retreat decision". Although it's important to create good GUI, I'm more interested int lower-level coding and design. From this point of view, I think AI is the best choice for me.

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 in AI, nobody can tell you "this is the only way how to do things right". When you make something surprising, something NEW, that makes sense and behaves correctly, it's the best feeling. It's challenge, too, to design and develop AI respecting the rules of some fantasy or real world.

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".

After my final exam (end of June), I believe I'll be able to work on this project full time.

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

I'd like to improve AI decisions according to global state of its kingdom. For example, if the AI player could choose between more possible targets to attack, it should choose the right one according to: -its economical situation (I need gold -> attack enemy 1 ; I need other stuff -> attack enemy 2) -can I (possibly) lose this unit? Is there not a possibility of attack from the direction guarded by this unit? (this possibility would increase with the number of enemy units near to the area guarded by unit) -would it not be more appropriate not to attack this village of enemy1, or should I go a little further and attack another village of enemy1, and so cut off all the escapes of previous village?

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

Experience, fun, money. The most appreciate would be experience.

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

Experience during SOC. When I get involved into some project, I really don't like to abandon it (only if I really have to).

5) Practical considerations

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

  • Git (used for all commits)


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

(YES - used in bachelor thesis and Imagine Cup project)

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

(YES - used in bachelor thesis and Imagine Cup project)

  • Python (optional, mainly used for tools)


  • build environments (eg cmake/scons)

(cmake - yes. I've built PCL library for my bachelor thesis)

  • 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?

Visual Studio - currently, I'm a Windows coder (with experience in Ubuntu). I believe, it's the best tool to create apps for windows. Eclipse - I coded almost all projects at University in Java. This IDE is simply the best. I've also used it at work, when I worked as Android developer.

5.3) What programming languages are you fluent in?

Java, C++, C, php, ruby, partially JS, partially C#

5.4) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail. If you are willing to do so, please do list a phone number (including international code) so that we are able to contact you. You should probably *only* add this number in the application for you submit to google since the info in the wiki is available in public. We will *not* make any use of your number unless some case of "there is no way to contact you" does arise!

In general, students should be as verbose as possible in their answers and feel free to elaborate.

This page was last edited on 19 March 2014, at 15:09.