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



Yigit Demirag : Development of AI to Play Mainline Campaigns in Battle For Wesnoth

Battle For Wesnoth is a great game to feel a war especially in Linux platform. Mainly, I can teach AI to play Westnoth's mainline campaings while it can interact user well.I want to develop its AI and put in opportunities of any kind of AI and machine learning algorithms such as supervised and unsupervised learning.

I am planning implementing feasible logical and reasoning algorithms which suitable for this. Decisions trees and inductive learning again, if it is suitable, are good to code in the game. But the most important part is playing and feeling how it works once than I can fill the necessary parts with the help of any algorithm we can apply.


Artemius23, Artemius


1) Basics

1.1) Write a small introduction to yourself.

I’m Yigit DEMIRAG and I am 21 years old. I have grown up with a passion about science so I graduated from a science school which is one of the best of my country and became an engineer to materialize the ideas taken from the nature. As hobbies, I like professional swimming and I am continuing Bachata dance. That is the way I relax and think clearly.

1.2) State your preferred email address.

I always use, and be online at

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

I use Artemius23 in IRC but currently don’t have an account in Wesnoth forums.

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

I want to participate in summer of code because of that I work really hard in my academic year and try to push it upmost and I need focus on something that I believe it may make a difference in the world. This summer, I can easily focus on an exciting project and make it on air as soon as possible with making it my priority. I am enchanted about coding and I have a great free time to do it.

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

I am an undergraduate student in Bilkent University which has the best engineering departments in my country, Turkey. My major is Electrical and Electronics Engineering but I passionately curious about Computer Scince with motto : “It is more fun to compute.” I’ m mostly interested in Artifical Intelligence, Machine Learning and Parallel Computing.

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

I’m from Turkey, and I am most likely to be able to join IRC from 9pm to 3pm.

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

I don’t have any other commitments for the summer period. On the other hand, I will be able to be in pool twice a week for a 4 hours each since I have keep my swimming trainings on.

2) Experience

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

Last summer, I worked on accelerating MLFMA and parallelization algorithms of clusters at BiLCEM ( please check the -World Record- ) My research area was specifically examining and comparing the MPI and openMP in terms of their memory usages, speeds and their feasibility in supercomputers. By examining and implementing openMP in nodes and MPI within nodes and clusters, we reached almost %25 speeding up in our cluster. During this period I wrote a couple of benchmark programs to monitoring our clusters and also meshing algorithm (It was a little part of the research )to use in electronic simulation.

Last year, I developed a mobile platform based game called “Green World.” , individually. In Green World, every person can create their own virtual world in the limit of only their imaginations. Users can define buildings, temples also add rooms, stuff and objects wherever they want. Each user can view other’s places they created and stroll around it to explore the world. During this process I used Java. At the end of the semester, I participate “Oyun Ciddi Bir İştir.” - Game is a Serious Business- competition and became a finalist from among more than 30 games.

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

We are developing and 3D- Arduino Simulator with some of my friends who have passion to computer science and want to get into code. This is the GitHub link of my projects - still in development process, but will be finished in maximum 1,5 months.

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?

I don’t have participated to Google Summer of Code before. I have been in a summer intern last summer and have to focus that research.

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

We are planning to make 3D-Arduino Simulator free and easy to access for every enthusiasts. We have already in the interests of some people from open-source community.

2.5) Gaming experience - Are you a gamer?

I like gaming. I would not identify me as a good gamer but what I like in games is interacting with computers which are sometimes able to good player as well as a human.

2.5.1) What type of gamer are you?

I play to create things and push my mind efforts. So in my opinion, there is no spesific need to play for me, I play to be relaxed, to challenge or to defeat computer or some human. That is why I want to code in AI. I want a stronger player right before me.

2.5.2) What type of games?

I prefer mostly strategy games and mmorpgs such as Minecraft, Dragons Age III and Diablo series. Also like Counter Strike 1.6 , CoD Series.

2.5.3) What type of opponents do you prefer?

I like my opponents when they play the game as professional as me. Whatever the game, they have to attack well and push me back, as well as, defending themselves which makes me search to new ways to attack. I should not feel myself as a nerd who plays a ordinary game, I have to feel deeply inside in the game and feel strongly about it when I away from a computer.

2.5.4) Are you more interested in story or gameplay?

In my opinion, story influences me when I away from computer and reminds me that game but gameplay connects me to computer and makes me spending funny times when I play.

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

I played Wesnoth for one week as a single player last year. So I have general knowledge about Wesnoth and how can it be played.

We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.

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.

No, I haven’t contribute any project related to Wesnoth before.

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.

I have taking English lessons for 4 years. Also I passed the English proficiency exam and studying in EEE Department which has %100 lessons are in English.

3.2) What spoken languages are you fluent in?

Turkish and English.

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

Until present, I have played lots of online game and I had a tons of conversation with people who I don’t know but expect something from me, then it is never a problem. Additionally, I am good at dealing with people, I run a couple of organization in my university and experienced what is the importance of interacting with people well.

3.4) Do you give constructive advice?

I attach importance to be a part of solution so I always try to express myself in a solution-based approach.

3.5) Do you receive advice well?

I believe learning from the mistakes is an important part of life. To keep pushing correctly, you have to know what was the mistakes you have done. So it is a necessity for me to learn from my mistakes.

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

Since the first time I have to study very hard, I know the role of an agenda for me. I consider sorting useful things and take note of its priority. My brain always want to work as parallel but setting priorities is my priority.

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 don’t start a code without full idea that what I have to do. It makes to waste time. Since thinking and dreaming about something is faster than implementing it, I want to know necessary parts of the concept so I can continue to code and fill the empty parts individually.

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?

Actually I do not strongly favor one of the ways of AI development in Wesnoth. But I mainly prefer teaching AI to play Wesnoth’ s mainline campaigns in terms of developing the AI and bringing a new sense for the game. I want to concentrate on making player not to feel alone and isolated, I want a game which user can interact with AI and receive an adaptive response while playing the game.

Creating an intellegent agent which can accompany the user through the game, fight against user's enemies and not only prone to fight but also defend the user which has priority to be protected.

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

Before I reading the suggestions of Wesnoth Developers, I thought that making agents that can play with user is such an exciting idea and generally if there is already an AI in a game, making it more intelligent is also perfect.

4.3) Why did you choose this project?

I choose it because I believe one day people can easily communicate with AI agents. Creating little intelligent agents and watching their behaviours always influence me. When I was coding, search algorithms or supervised machine learning algorithms, I feel deeply concentration about it. But this is a game. Our agents will interacts with real people, be affected by them and responses accordingly. This is so exciting and why I choose this project.

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

April -- > Mid-May

I started to look int Wesnoth code structure and I will be much more familiar with Wesnoth code structure and the fundemental classes I will be considering during GSoC . This period also will include mainly learning from documentation of technical details of ai and also Lua since I have no experience with Lua structure. Working with my mentor, I am planning to will be able to understand class hierarchies, and all functions we need. Then, I have to keep in touch with scenario creators in terms of learning what they need at the end of the day or how they can use my developments in coming updates, so I can decide a crystal-clear way to develop ai for both users to interest and suitable for scenario creators.

I have to play Wesnoth well to learn the way a user play and how AI acts on it. Since I have not played Wesnoth much before, I have to learn general playing during this period.

Mid-May --> August

After such deep understanding of Wesnoth and its technical details, I will be started write code as my mentor expects and I will be watching its consequences. Contacting with other developers, and deeply understanding of ai, I will be spending time on developing ai.

For now, I want to create an intellegent agent that will be involved in the scenario somehow (I hope scenario creators may give me lots of idea about that), and will play with the user such as defending it, attacking together, determining the best chooices depending on user's moves even things that user cannot consider about. This part will require some deep knowledge of that ai works in the game especially with Lua. The way of ai attacks, defends and its behaviour pattern will be much more clearer and necassary functions or classes are taken into consideration.

They might be with an early consideration,

Movement Features (May 15 - May 25)

  • Understanding and mapping possible locations to move.
  • Deciding the best location/s to move considering firstly units then ally and then target positions :depending on the case of war or positions of castles etc..
  • Moving a unit a location.

In Battle Priority Features (May 25 - July 15)

  • Deciding for firstly units, considering their health status, whether they are alive or whether they :close to be dead or not and leveling stages.
  • Considering ally's health situations as same as in first one.
  • Considering ally/units are on attacking or defending.
  • Producing an priority list and sharing it properly with player or acting directly upon the most :priority without communicating with user.

In Battle Attack/Defence Feature (July 15 - July 23 )

  • According to given priority list, attacking to target privilege or defending a unit/ally privilege :with choosing the best unit to act.

Profits ( I don't know fundamentals about money system yet)

Improving Interactions of the Player with AI (July 23 - August 5)

  • Sharing priority list with the user in a proper way to increase communication with user with :providing an analytical evalution as an advice. [NOT MANDATORY]
  • In extreme situations, I would give user a little chance to make a change in AI's priority list. So :*users feel themselves in a relation with AI but cannot entirely control it. [NOT MANDATORY]

Last week of May, I have a final week. This 10-13 days I will spend less time with coding but still reading documents and keeping touch with developers and my mentor. That is the only time I cannot fully concantrate on Wesnoth. Unsurely, I may have a one-week vacation at some stage of summer, I will inform everyone related to me at least two weeks before it.

August 5 --> END

I will finish the fundemental of implementation, examining the possible bugs, fixing missing points if there are. The role of agent during certain times of scenario, and its characteristics also added to code in that period. If we will decide agent to be holded in the game during the scenario, we may implement supervised learning algorithms then it can be easily attuned playing style of user. I hope will leave nothing to do here. But spending time on failures, bugs and unexpected results will be considered in this part.

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

I am planning implementing feasible logical and reasoning algorithms I know. Decisions trees and inductive learning again, if it is suitable, are good to code in the game. But the most important part is playing and feeling how it works once than I can fill the necessary parts with the help of any algorithm we can apply. Also in Bilkent University I know lots of people who interested in AI and Machine Learning. So we can consult them for their help as well.

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

I want to implement all of my theoretical knowledge from AI lessons I take from Stanford University.

I expect learn much more about AI, I want to work in an exciting project as an AI developer.

Being part of a big open-source project team consisting people from different countries.

Earning money for next school semester.

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

Maybe just one Wesnoth T-shirt is enough to stay in the Wesnoth community after the GSoC’ 12. I am still helping my old researcher friends in their projects in parallel computing. I believe that if I help people and improve things, some things become better. And it always worths.

5) Practical considerations

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

I take a Artificial Intellegence lessons from Sebastian Thrun from Stanford University. Through this process I used Python. And in all of my remained projects I used C/C++, Java and FORTRAN 95 .

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

Since I use only UNIX, I prefer Eclipse, and also use Sublime Text Editor 2 since it is highly useful while coding and developing its features.

5.3) What programming languages are you fluent in?


Java, C/C++, Python, FORTRAN 95

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!

I have Skype ID : yigitdemirag And my cellphone is always ready to keep in touch. : Artemius23

This page was last edited on 15 April 2012, at 00:26.