<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dragos</id>
	<title>The Battle for Wesnoth Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dragos"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/Special:Contributions/Dragos"/>
	<updated>2026-04-14T15:56:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=51060</id>
		<title>User:Dragos/GsoC 2013/AI: Refactor recruitment algorithm</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=51060"/>
		<updated>2013-05-16T15:27:54Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Recruitment 2013]]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Refactor the recruitment algorithm &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I propose to work on the &amp;quot;Refactor the recruiting algorithm&amp;quot; project. The new implemented algorithm should be very customizable from LUA (this will be extremely useful to help campaign creation). The new recruiting algorithm should also be capable of doing the listed features in the project description. &lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
I will divide the project in 3 main ideas, each will its own small ideas.&lt;br /&gt;
&lt;br /&gt;
==Optimal recruiting==&lt;br /&gt;
&lt;br /&gt;
The recruitment algorithm will choose the best unit to recruit by taking into account many factors and combining them. It’s very important that the AI will recruit optimally (or at least as optimal as possible). This includes recruiting with more than one leader and selecting the best units for each leader. The algorithm should take into account the enemy units, their position and the map in general to make the best recruiting decisions. (This is already taken into account, but we should still integrate it with multiple leader recruit, as sometimes, for instance, it is better to only recruit with the second leader than only with the first.)&lt;br /&gt;
&lt;br /&gt;
One important idea is making the AI recruit units that are good against the closest enemy units, since the closer a unit is, the more important it will be when choosing what to counter-recruit. This is to try to get through the first line of defense. It does not matter if our new units are good against the units far away if they are bad with the closer units that they would have to get through to reach the other units. &lt;br /&gt;
&lt;br /&gt;
At the same time, we need to consider the next wave of units. In many cases the AI/ player in the next recruitment wave recruits units that will complement the current units. There are many small factors that will influence our decisions, like mostly ignoring the units with low HP, except the case when they are about to level up (since if it has low HP but levels up, it will have full HP and be a bigger threat to our side).&lt;br /&gt;
&lt;br /&gt;
Another idea that I consider important to the decision is to simulate the next state to some extent, as this will help us make the decision on what to recruit. A small note on this idea: we can compress the number of states and ignore irrelevant information about the game-state (in short, simulating the next turn recruitment-wise will be way easier than for other purposes - like attacking for instance). Because of this, the most important thing we need to focus is having the best function to express the advantage of a certain state.&lt;br /&gt;
&lt;br /&gt;
We should also take into account the units that are already on the field. So, if our group of units already counters archers, we should not try as hard to recruit archers.&lt;br /&gt;
&lt;br /&gt;
Moreover, we should consider what happens when the AI recruits first, as it should be as hard as possible for the enemy to counter-recruit. Also, it should stop recruiting when it has a noticeable advantage in the field and wait to counter the next wave of enemy units.&lt;br /&gt;
&lt;br /&gt;
==Unit purpose and goals==&lt;br /&gt;
&lt;br /&gt;
We should implement a method to recruit units with a purpose. This purpose can be to control the waterway, scout as much as possible, protect a certain hex/zone and so on. These goals should be mainly controlled by a created scenario, but I believe it would be possible to make the AI detect which goal are important and select them. This will be useful as it will make the AI more organized and try to accomplish small goals one by one, each goal making the AI closer to victory.&lt;br /&gt;
&lt;br /&gt;
This also leads to the problem of ‘forcing’ the units we just recruited for a certain goal to try and accomplish that goal. So, if we make 3 scouts for scouting they should scout, not attack. One idea to do this is implementing a kind of unit based formula. For instance, a unit that scouts should try to maximize a formula related to scouting, such as the total area covered by the AI’s units.&lt;br /&gt;
&lt;br /&gt;
==Customizability==&lt;br /&gt;
&lt;br /&gt;
The new recruiting algorithm should be fully controlled by LUA commands. This can make writing scenarios easier and configuring how the AI recruits could be done directly from the WML. This includes limiting the number of units of each type, or the percentage of a unit that should be in field (example: maximum 5 archers or maximum 50% archers of all the units).&lt;br /&gt;
&lt;br /&gt;
All the recruiting features should be fully controlled by flags in WML. So, if we want to disable the counter-recruit we should simply state that in the scenario. This should also have a timestamp so we can force the AI to begin counter-recruiting after a certain number turns (7 for example).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
I’ve selected “AI: Refactor recruitment algorithm”.&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
I chose this project because I would really like to see these ideas in Wesnoth and because I believe that it is suited for me. Also, I would really like to learn and work with LUA. In the last weeks I saw the basics of how LUA is integrated with C++ in Wesnoth, and it seemed really interesting, and it is an idea I would like to work on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;300pt&amp;quot;| Time Frame !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
| 14 June - 23 June (10 days) || Adding support to recruit with more leaders&lt;br /&gt;
|-&lt;br /&gt;
| 24 June - 28 June (5 days) ||  Making the AI recruit more optimally considering the multiple leaders&lt;br /&gt;
|-&lt;br /&gt;
| 29 June - 4 July (6 days) || Reworking the recruiting algorithm to make it hard for enemies to counter recruit&lt;br /&gt;
|-&lt;br /&gt;
| 5 July - 16 July (12 days) || Adding the feature to Counter-recruiting when necessary/good&lt;br /&gt;
|-&lt;br /&gt;
| 17 July - 21 July (5 days) ||  Testing the changes so far, adding small Customization features from [[#Customizability|idea 3]] &lt;br /&gt;
|-&lt;br /&gt;
| 22 July- 29 July (8 days) || Adding simple goals when recruiting, making units respect those simple goals.&lt;br /&gt;
|-&lt;br /&gt;
| 30 July- 2 August (4 days) || Preparing for mid term Evaluation and start working on more complex goals&lt;br /&gt;
|-&lt;br /&gt;
| 3  August - 8 August (6 days) || Adding the complex goals&lt;br /&gt;
|-&lt;br /&gt;
| 9  August - 21 August (13 days) || Optional: Making the AI detect useful goals that will help win the game and testing all changes&lt;br /&gt;
|-&lt;br /&gt;
| 22  August - 4 September (14 day) || Customization: Limiting number of units&lt;br /&gt;
|-&lt;br /&gt;
| 5 September - 14 September (10 days) ||  Customization: Adding general customization features&lt;br /&gt;
|-&lt;br /&gt;
| 15 September - 23 September (9 days) || Testing all the features and preparing for final evaluation&lt;br /&gt;
|-&lt;br /&gt;
| After SOC (PLAN) || Continue working for Wesnoth &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. It will also expand my practical knowledge of AI and algorithms and will help me better understand the LUA programming language. Moreover, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked guidance or a clear goal).&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=51059</id>
		<title>User:Dragos/GsoC 2013/AI: Refactor recruitment algorithm</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=51059"/>
		<updated>2013-05-16T15:25:12Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Recruitment 2013]]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Refactor the recruitment algorithm &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I propose to work on the &amp;quot;Refactor the recruiting algorithm&amp;quot; project. The new implemented algorithm should be very customizable from LUA (this will be extremely useful to help campaign creation). The new recruiting algorithm should also be capable of doing the listed features in the project description. &lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
I will divide the project in 3 main ideas, each will its own small ideas.&lt;br /&gt;
&lt;br /&gt;
==Optimal recruiting==&lt;br /&gt;
&lt;br /&gt;
The recruitment algorithm will choose the best unit to recruit by taking into account many factors and combining them. It’s very important that the AI will recruit optimally (or at least as optimal as possible). This includes recruiting with more than one leader and selecting the best units for each leader. The algorithm should take into account the enemy units, their position and the map in general to make the best recruiting decisions. (This is already taken into account, but we should still integrate it with multiple leader recruit, as sometimes, for instance, it is better to only recruit with the second leader than only with the first.)&lt;br /&gt;
&lt;br /&gt;
For example, we should make units that are good against the closest enemy units, since the closer a unit is, the more important it will be when choosing what to counter-recruit. This is to try to get through the first line of defense. It does not matter if our new units are good against the units far away if they are bad with the closer units that they would have to get through to reach the other units. &lt;br /&gt;
&lt;br /&gt;
At the same time, we need to consider the next wave of units. In many cases the AI/ player in the next recruitment wave recruits units that will complement the current units. There are many small factors that will influence our decisions, like mostly ignoring the units with low HP, except the case when they are about to level up (since if it has low HP but levels up, it will have full HP and be a bigger threat to our side).&lt;br /&gt;
&lt;br /&gt;
Another idea that I consider important to the decision is to simulate the next state to some extent, as this will help us make the decision on what to recruit. A small note on this idea: we can compress the number of states and ignore irrelevant information about the game-state (in short, simulating the next turn recruitment-wise will be way easier than for other purposes - like attacking for instance). Because of this, the most important thing we need to focus is having the best function to express the advantage of a certain state.&lt;br /&gt;
&lt;br /&gt;
We should also take into account the units that are already on the field. So, if our group of units already counters archers, we should not try as hard to recruit archers.&lt;br /&gt;
&lt;br /&gt;
Moreover, we should consider what happens when the AI recruits first, as it should be as hard as possible for the enemy to counter-recruit. Also, it should stop recruiting when it has a noticeable advantage in the field and wait to counter the next wave of enemy units.&lt;br /&gt;
&lt;br /&gt;
==Unit purpose and goals==&lt;br /&gt;
&lt;br /&gt;
We should implement a method to recruit units with a purpose. This purpose can be to control the waterway, scout as much as possible, protect a certain hex/zone and so on. These goals should be mainly controlled by a created scenario, but I believe it would be possible to make the AI detect which goal are important and select them. This will be useful as it will make the AI more organized and try to accomplish small goals one by one, each goal making the AI closer to victory.&lt;br /&gt;
&lt;br /&gt;
This also leads to the problem of ‘forcing’ the units we just recruited for a certain goal to try and accomplish that goal. So, if we make 3 scouts for scouting they should scout, not attack. One idea to do this is implementing a kind of unit based formula. For instance, a unit that scouts should try to maximize a formula related to scouting, such as the total area covered by the AI’s units.&lt;br /&gt;
&lt;br /&gt;
==Customizability==&lt;br /&gt;
&lt;br /&gt;
The new recruiting algorithm should be fully controlled by LUA commands. This can make writing scenarios easier and configuring how the AI recruits could be done directly from the WML. This includes limiting the number of units of each type, or the percentage of a unit that should be in field (example: maximum 5 archers or maximum 50% archers of all the units).&lt;br /&gt;
&lt;br /&gt;
All the recruiting features should be fully controlled by flags in WML. So, if we want to disable the counter-recruit we should simply state that in the scenario. This should also have a timestamp so we can force the AI to begin counter-recruiting after a certain number turns (7 for example).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
I’ve selected “AI: Refactor recruitment algorithm”.&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
I chose this project because I would really like to see these ideas in Wesnoth and because I believe that it is suited for me. Also, I would really like to learn and work with LUA. In the last weeks I saw the basics of how LUA is integrated with C++ in Wesnoth, and it seemed really interesting, and it is an idea I would like to work on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;300pt&amp;quot;| Time Frame !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
| 14 June - 23 June (10 days) || Adding support to recruit with more leaders&lt;br /&gt;
|-&lt;br /&gt;
| 24 June - 28 June (5 days) ||  Making the AI recruit more optimally considering the multiple leaders&lt;br /&gt;
|-&lt;br /&gt;
| 29 June - 4 July (6 days) || Reworking the recruiting algorithm to make it hard for enemies to counter recruit&lt;br /&gt;
|-&lt;br /&gt;
| 5 July - 16 July (12 days) || Adding the feature to Counter-recruiting when necessary/good&lt;br /&gt;
|-&lt;br /&gt;
| 17 July - 21 July (5 days) ||  Testing the changes so far, adding small Customization features from [[#Customizability|idea 3]] &lt;br /&gt;
|-&lt;br /&gt;
| 22 July- 29 July (8 days) || Adding simple goals when recruiting, making units respect those simple goals.&lt;br /&gt;
|-&lt;br /&gt;
| 30 July- 2 August (4 days) || Preparing for mid term Evaluation and start working on more complex goals&lt;br /&gt;
|-&lt;br /&gt;
| 3  August - 8 August (6 days) || Adding the complex goals&lt;br /&gt;
|-&lt;br /&gt;
| 9  August - 21 August (13 days) || Optional: Making the AI detect useful goals that will help win the game and testing all changes&lt;br /&gt;
|-&lt;br /&gt;
| 22  August - 4 September (14 day) || Customization: Limiting number of units&lt;br /&gt;
|-&lt;br /&gt;
| 5 September - 14 September (10 days) ||  Customization: Adding general customization features&lt;br /&gt;
|-&lt;br /&gt;
| 15 September - 23 September (9 days) || Testing all the features and preparing for final evaluation&lt;br /&gt;
|-&lt;br /&gt;
| After SOC (PLAN) || Continue working for Wesnoth &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. It will also expand my practical knowledge of AI and algorithms and will help me better understand the LUA programming language. Moreover, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked guidance or a clear goal).&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50862</id>
		<title>User:Dragos/GsoC 2013/AI: Refactor recruitment algorithm</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50862"/>
		<updated>2013-05-03T14:14:06Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Recruitment 2013]]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Refactor the recruitment algorithm &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I propose to work on the &amp;quot;Refactor the recruiting algorithm&amp;quot; project. The new implemented algorithm should be very customizable from LUA (this will be extremely useful to help campaign creation). The new recruiting algorithm should also be capable of doing the listed features in the project description. &lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
I will divide the project in 3 main ideas, each will its own small ideas.&lt;br /&gt;
&lt;br /&gt;
==Optimal recruiting==&lt;br /&gt;
&lt;br /&gt;
This idea is somewhat broad and contains many small ideas that will accomplish the needed optimality of recruiting.&lt;br /&gt;
&lt;br /&gt;
It’s very important that the AI will recruit optimally (or at least as optimal as possible). This includes recruiting with more than one leader and select the best units for each leader.&lt;br /&gt;
&lt;br /&gt;
The algorithm should take into account the enemy units, their position and the map in general to make the best recruiting decisions. (This is already taken into account but we should still integrate it with multiple leader recruit. Sometimes, for example, is better to only recruit with the second leader then only with the first).&lt;br /&gt;
&lt;br /&gt;
We should also take into account the that are already on the field. So, if our group of units already counters archers, we should not try as hard to recruit archers.&lt;br /&gt;
&lt;br /&gt;
This should also take into account what happens when the AI recruits first, as it should be as hard as possible for the enemy to counter-recruit. Also, it should stop recruiting when it has a noticeable advantage in the field and wait to counter the next wave of enemy units.&lt;br /&gt;
&lt;br /&gt;
==Unit purpose and goals==&lt;br /&gt;
&lt;br /&gt;
We should implement a method to recruit units with a purpose. This purpose can be to control the waterway, scout as much as possible, protect a certain hex/zone and so on. These goals should be mainly controlled by a created scenario, but I believe it would be possible to make the AI detect which goal are important and select them. This will be useful as it will make the AI more organized and try to accomplish small goals one by one, each goal making the AI closer to victory.&lt;br /&gt;
&lt;br /&gt;
This also leads to the problem of ‘forcing’ the units we just recruited for a certain goal to try and accomplish that goal. So, if we make 3 scouts for scouting they should scout, not attack. One idea to do this is implementing a kind of unit based formula. For instance, a unit that scouts should try to maximize a formula related to scouting, such as the total area covered by the AI’s units.&lt;br /&gt;
&lt;br /&gt;
==Customizability==&lt;br /&gt;
&lt;br /&gt;
The new recruiting algorithm should be fully controlled by LUA commands. This can make writing scenarios easier and configuring how the AI recruits could be done directly from the WML. This includes limiting the number of units of each type, or the percentage of a unit that should be in field (example: maximum 5 archers or maximum 50% archers of all the units).&lt;br /&gt;
&lt;br /&gt;
All the recruiting features should be fully controlled by flags in WML. So, if we want to disable the counter-recruit we should simply state that in the scenario. This should also have a timestamp so we can force the AI to begin counter-recruiting after a certain number turns (7 for example).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
I’ve selected “AI: Refactor recruitment algorithm”.&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
I chose this project because I would really like to see these ideas in Wesnoth and because I believe that it is suited for me. Also, I would really like to learn and work with LUA. In the last weeks I saw the basics of how LUA is integrated with C++ in Wesnoth, and it seemed really interesting, and it is an idea I would like to work on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;300pt&amp;quot;| Time Frame !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
| 14 June - 23 June (10 days) || Adding support to recruit with more leaders&lt;br /&gt;
|-&lt;br /&gt;
| 24 June - 28 June (5 days) ||  Making the AI recruit more optimally considering the multiple leaders&lt;br /&gt;
|-&lt;br /&gt;
| 29 June - 4 July (6 days) || Reworking the recruiting algorithm to make it hard for enemies to counter recruit&lt;br /&gt;
|-&lt;br /&gt;
| 5 July - 16 July (12 days) || Adding the feature to Counter-recruiting when necessary/good&lt;br /&gt;
|-&lt;br /&gt;
| 17 July - 21 July (5 days) ||  Testing the changes so far, adding small Customization features from [[#Customizability|idea 3]] &lt;br /&gt;
|-&lt;br /&gt;
| 22 July- 29 July (8 days) || Adding simple goals when recruiting, making units respect those simple goals.&lt;br /&gt;
|-&lt;br /&gt;
| 30 July- 2 August (4 days) || Preparing for mid term Evaluation and start working on more complex goals&lt;br /&gt;
|-&lt;br /&gt;
| 3  August - 8 August (6 days) || Adding the complex goals&lt;br /&gt;
|-&lt;br /&gt;
| 9  August - 21 August (13 days) || Optional: Making the AI detect useful goals that will help win the game and testing all changes&lt;br /&gt;
|-&lt;br /&gt;
| 22  August - 4 September (14 day) || Customization: Limiting number of units&lt;br /&gt;
|-&lt;br /&gt;
| 5 September - 14 September (10 days) ||  Customization: Adding general customization features&lt;br /&gt;
|-&lt;br /&gt;
| 15 September - 23 September (9 days) || Testing all the features and preparing for final evaluation&lt;br /&gt;
|-&lt;br /&gt;
| After SOC (PLAN) || Continue working for Wesnoth &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. It will also expand my practical knowledge of AI and algorithms and will help me better understand the LUA programming language. Moreover, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked guidance or a clear goal).&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50861</id>
		<title>User:Dragos/GsoC 2013/AI: Implement a 'total defense' strategy</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50861"/>
		<updated>2013-05-03T14:11:38Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Defense Strategies 2013]]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Implement a total defense strategy &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I intend to implement a total defense strategy for the Wesnoth AI. Currently the Wesnoth AI is really good at doing attacks but it's not that good at defending. The AI currently tries to maximize the formula (enemy losses - aggression*own_losses), which can't generate a defending behavior making it easy to defeat in certain situation.&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
Note: Implementing even only a couple of these ideas can solve the problem so that we will make the aggression close to 0. Also, in the development of the defense, it will be possible to find other ( even more useful) way of making the defense better.&lt;br /&gt;
&lt;br /&gt;
==Make the AI do a ‘full retreat’==&lt;br /&gt;
&lt;br /&gt;
One idea that would make the AI defend better is to make a good method for the AI to retreat in certain situations (bad time of day and so on). This can be implemented as a candidate action or a stage action.&lt;br /&gt;
&lt;br /&gt;
==Analyzing the next turn==&lt;br /&gt;
&lt;br /&gt;
Taking into account what the enemy can do in their next turn (the enemy counter-attack) when the AI decides where and what to attack can help the defense.&lt;br /&gt;
&lt;br /&gt;
This change can go as far as refactoring the combat evaluation code so it will be easier to change how the attacks are rated.&lt;br /&gt;
&lt;br /&gt;
==Grouping the units==&lt;br /&gt;
&lt;br /&gt;
Currently when the aggression ( in the attack formula that maximizes (enemy losses - aggression*own_losses)) is set to 0 the AI only makes ‘good attacks’. We could force the units when they cannot find a good attack to group with the other units on the front line and stand united. Grouping the units has simple advantages, such as less overall surface area the enemy can attack from and stronger attacks.&lt;br /&gt;
&lt;br /&gt;
==Using support units==&lt;br /&gt;
&lt;br /&gt;
We can start using the support units more in the attack. If they do not have good attacks we should use them to help the weakest points of the defensive wall.&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
The changes will need extensive tests. We will need tests against AI and against real players so we can be sure the AI improves overall effectiveness and to be 100% sure we leave no loopholes that will make the AI easy to trick/defeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
I’ve selected improving the AI, more specifically implementing a ‘total defense’ strategy.&lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
This project combines thinking of a solution (and I consider that this will probably be the hardest part in this project) with working at a good implementation. I think that this mix of practical and theoretical work is perfect for my skills.&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;300pt&amp;quot;| Time Frame !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
| 14 June - 23 June (10 days) || Implementing the full retreat function and testing formulas for the positions&lt;br /&gt;
|-&lt;br /&gt;
| 24 June - 27 June (4 days) || Testing the full retreat and analyzing the available formulas to choose the best one &lt;br /&gt;
|-&lt;br /&gt;
| 28 June - 10 July (14 days) || Writing an algorithm to make the units group themselves when necessary&lt;br /&gt;
|-&lt;br /&gt;
| 11 July - 14 July (4 days) || Testing the grouping algorithm&lt;br /&gt;
|-&lt;br /&gt;
| 15 July - 4 August (21 days) || Refactoring combat evaluation code and working to take into account the next turn. (In this period I will also prepare for the midterm evaluation)&lt;br /&gt;
|-&lt;br /&gt;
| 5 August- 8 August (4 days) || Testing the next turn and the modifications to the combat evaluation&lt;br /&gt;
|-&lt;br /&gt;
| 9 August- 23 August (15 days) || Adding better usage for support units&lt;br /&gt;
|-&lt;br /&gt;
| 24  August - 24 August (1 day) || Testing the support units individually and all together&lt;br /&gt;
|-&lt;br /&gt;
| 25 August - 10 September (17 days) || Implementing ideas that may come during the time I work on the project. If there aren’t any new ideas I will reallocate the time as necessary &lt;br /&gt;
(See notes 1 and 3)&lt;br /&gt;
|-&lt;br /&gt;
| 11 September - 23 September (13 days) || Extensive testing of all the ideas applied together, with help from Wesnoth players (if possible), preparing for the final evaluation, writing necessary documentation&lt;br /&gt;
|-&lt;br /&gt;
| After SOC (PLAN) || Continue working for Wesnoth &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
1. I’ve allocated some time from 25 August to 10 September to implement new ideas if they come. In the case that I have no other ideas, I will reallocate the time for the ideas that need it more and/or I will have an after midterm testing phase, like the one at the end of the project (Note 3).&lt;br /&gt;
&lt;br /&gt;
2. After each implementation, I will use a couple of days to test the implementation formula and to search for bugs. The last testing phase, that takes a week, will test all the combined ideas working together to see how the AI behaves. This testing phase will (hopefully) be done by me and other people from the Wesnoth community. I hope the last testing phase will help tweak the existing ideas, to make them perform even better.&lt;br /&gt;
&lt;br /&gt;
3. There is a possibility to add a similar testing phase after the midterm evaluation, to see if we need to focus more time on some aspects of the project. I emphasized so much on testing because I believe that it’s hard to predict how the AI will act while developing it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. Working at this will also expand my practical knowledge of AI and algorithms. Also, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked the guidance and a clear goal)&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50719</id>
		<title>User:Dragos/GsoC 2013/AI: Refactor recruitment algorithm</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50719"/>
		<updated>2013-04-30T22:47:21Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Recruitment 2013]]&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
This application is a draft and it will be subject to changes.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Refactor the recruitment algorithm &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I propose to work on the &amp;quot;Refactor the recruiting algorithm&amp;quot; project. The new implemented algorithm should be very customizable from LUA (this will be extremely useful to help campaign creation). The new recruiting algorithm should also be capable of doing the listed features in the project description. &lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
I will divide the project in 3 main ideas, each will its own small ideas.&lt;br /&gt;
&lt;br /&gt;
==Optimal recruiting==&lt;br /&gt;
&lt;br /&gt;
This idea is somewhat broad and contains many small ideas that will accomplish the needed optimality of recruiting.&lt;br /&gt;
&lt;br /&gt;
It’s very important that the AI will recruit optimally (or at least as optimal as possible). This includes recruiting with more than one leader and select the best units for each leader.&lt;br /&gt;
&lt;br /&gt;
The algorithm should take into account the enemy units, their position and the map in general to make the best recruiting decisions. (This is already taken into account but we should still integrate it with multiple leader recruit. Sometimes, for example, is better to only recruit with the second leader then only with the first).&lt;br /&gt;
&lt;br /&gt;
We should also take into account the that are already on the field. So, if our group of units already counters archers, we should not try as hard to recruit archers.&lt;br /&gt;
&lt;br /&gt;
This should also take into account what happens when the AI recruits first, as it should be as hard as possible for the enemy to counter-recruit. Also, it should stop recruiting when it has a noticeable advantage in the field and wait to counter the next wave of enemy units.&lt;br /&gt;
&lt;br /&gt;
==Unit purpose and goals==&lt;br /&gt;
&lt;br /&gt;
We should implement a method to recruit units with a purpose. This purpose can be to control the waterway, scout as much as possible, protect a certain hex/zone and so on. These goals should be mainly controlled by a created scenario, but I believe it would be possible to make the AI detect which goal are important and select them. This will be useful as it will make the AI more organized and try to accomplish small goals one by one, each goal making the AI closer to victory.&lt;br /&gt;
&lt;br /&gt;
This also leads to the problem of ‘forcing’ the units we just recruited for a certain goal to try and accomplish that goal. So, if we make 3 scouts for scouting they should scout, not attack. One idea to do this is implementing a kind of unit based formula. For instance, a unit that scouts should try to maximize a formula related to scouting, such as the total area covered by the AI’s units.&lt;br /&gt;
&lt;br /&gt;
==Customizability==&lt;br /&gt;
&lt;br /&gt;
The new recruiting algorithm should be fully controlled by LUA commands. This can make writing scenarios easier and configuring how the AI recruits could be done directly from the WML. This includes limiting the number of units of each type, or the percentage of a unit that should be in field (example: maximum 5 archers or maximum 50% archers of all the units).&lt;br /&gt;
&lt;br /&gt;
All the recruiting features should be fully controlled by flags in WML. So, if we want to disable the counter-recruit we should simply state that in the scenario. This should also have a timestamp so we can force the AI to begin counter-recruiting after a certain number turns (7 for example).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
I’ve selected “AI: Refactor recruitment algorithm”.&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
I chose this project because I would really like to see these ideas in Wesnoth and because I believe that it is suited for me. Also, I would really like to learn and work with LUA. In the last weeks I saw the basics of how LUA is integrated with C++ in Wesnoth, and it seemed really interesting, and it is an idea I would like to work on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;300pt&amp;quot;| Time Frame !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
| 14 June - 23 June (10 days) || Adding support to recruit with more leaders&lt;br /&gt;
|-&lt;br /&gt;
| 24 June - 28 June (5 days) ||  Making the AI recruit more optimally considering the multiple leaders&lt;br /&gt;
|-&lt;br /&gt;
| 29 June - 4 July (6 days) || Reworking the recruiting algorithm to make it hard for enemies to counter recruit&lt;br /&gt;
|-&lt;br /&gt;
| 5 July - 16 July (12 days) || Adding the feature to Counter-recruiting when necessary/good&lt;br /&gt;
|-&lt;br /&gt;
| 17 July - 21 July (5 days) ||  Testing the changes so far, adding small Customization features from [[#Customizability|idea 3]] &lt;br /&gt;
|-&lt;br /&gt;
| 22 July- 29 July (8 days) || Adding simple goals when recruiting, making units respect those simple goals.&lt;br /&gt;
|-&lt;br /&gt;
| 30 July- 2 August (4 days) || Preparing for mid term Evaluation and start working on more complex goals&lt;br /&gt;
|-&lt;br /&gt;
| 3  August - 8 August (6 days) || Adding the complex goals&lt;br /&gt;
|-&lt;br /&gt;
| 9  August - 21 August (13 days) || Optional: Making the AI detect useful goals that will help win the game and testing all changes&lt;br /&gt;
|-&lt;br /&gt;
| 22  August - 4 September (14 day) || Customization: Limiting number of units&lt;br /&gt;
|-&lt;br /&gt;
| 5 September - 14 September (10 days) ||  Customization: Adding general customization features&lt;br /&gt;
|-&lt;br /&gt;
| 15 September - 23 September (9 days) || Testing all the features and preparing for final evaluation&lt;br /&gt;
|-&lt;br /&gt;
| After SOC (PLAN) || Continue working for Wesnoth &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. It will also expand my practical knowledge of AI and algorithms and will help me better understand the LUA programming language. Moreover, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked guidance or a clear goal).&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50718</id>
		<title>User:Dragos/GsoC 2013/AI: Refactor recruitment algorithm</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50718"/>
		<updated>2013-04-30T22:36:58Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Recruitment 2013]]&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
This application is a draft and it will be subject to changes.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Refactor the recruitment algorithm &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I propose to work on the &amp;quot;Refactor the recruiting algorithm&amp;quot; project. The new implemented algorithm should be very customizable from LUA (this will be extremely useful to help campaign creation). The new recruiting algorithm should also be capable of doing the listed features in the project description. &lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
I will divide the project in 3 main ideas, each will its own small ideas.&lt;br /&gt;
&lt;br /&gt;
==Optimal recruiting==&lt;br /&gt;
&lt;br /&gt;
This idea is somewhat broad and contains many small ideas that will accomplish the needed optimality of recruiting.&lt;br /&gt;
&lt;br /&gt;
It’s very important that the AI will recruit optimally (or at least as optimal as possible). This includes recruiting with more than one leader and select the best units for each leader.&lt;br /&gt;
&lt;br /&gt;
The algorithm should take into account the enemy units, their position and the map in general to make the best recruiting decisions. (This is already taken into account but we should still integrate it with multiple leader recruit. Sometimes, for example, is better to only recruit with the second leader then only with the first).&lt;br /&gt;
&lt;br /&gt;
We should also take into account the that are already on the field. So, if our group of units already counters archers, we should not try as hard to recruit archers.&lt;br /&gt;
&lt;br /&gt;
This should also take into account what happens when the AI recruits first, as it should be as hard as possible for the enemy to counter-recruit. Also, it should stop recruiting when it has a noticeable advantage in the field and wait to counter the next wave of enemy units.&lt;br /&gt;
&lt;br /&gt;
==Unit purpose and goals==&lt;br /&gt;
&lt;br /&gt;
We should implement a method to recruit units with a purpose. This purpose can be to control the waterway, scout as much as possible, protect a certain hex/zone and so on. These goals should be mainly controlled by a created scenario, but I believe it would be possible to make the AI detect which goal are important and select them. This will be useful as it will make the AI more organized and try to accomplish small goals one by one, each goal making the AI closer to victory.&lt;br /&gt;
&lt;br /&gt;
This also leads to the problem of ‘forcing’ the units we just recruited for a certain goal to try and accomplish that goal. So, if we make 3 scouts for scouting they should scout, not attack. One idea to do this is implementing a kind of unit based formula. For instance, a unit that scouts should try to maximize a formula related to scouting, such as the total area covered by the AI’s units.&lt;br /&gt;
&lt;br /&gt;
==Customizability==&lt;br /&gt;
&lt;br /&gt;
The new recruiting algorithm should be fully controlled by LUA commands. This can make writing scenarios easier and configuring how the AI recruits could be done directly from the WML. This includes limiting the number of units of each type, or the percentage of a unit that should be in field (example: maximum 5 archers or maximum 50% archers of all the units).&lt;br /&gt;
&lt;br /&gt;
All the recruiting features should be fully controlled by flags in WML. So, if we want to disable the counter-recruit we should simply state that in the scenario. This should also have a timestamp so we can force the AI to begin counter-recruiting after a certain number turns (7 for example).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
I’ve selected “AI: Refactor recruitment algorithm”.&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
I chose this project because I would really like to see these ideas in Wesnoth and because I believe that it is suited for me. Also, I would really like to learn and work with LUA. In the last weeks I saw the basics of how LUA is integrated with C++ in Wesnoth, and it seemed really interesting, and it is an idea I would like to work on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;300pt&amp;quot;| Time Frame !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
| 14 June - 23 June (10 days) || Adding support to recruit with more leaders&lt;br /&gt;
|-&lt;br /&gt;
| 24 June - 28 June (5 days) ||  Making the AI recruit more optimally considering the multiple leaders&lt;br /&gt;
|-&lt;br /&gt;
| 29 June - 4 July (6 days) || Reworking the recruiting algorithm to make it hard for enemies to counter recruit&lt;br /&gt;
|-&lt;br /&gt;
| 5 July - 16 July (12 days) || Adding the feature to Counter-recruiting when necessary/good&lt;br /&gt;
|-&lt;br /&gt;
| 17 July - 21 July (5 days) ||  Testing the changes so far, adding small Customization features from idea 3 &lt;br /&gt;
|-&lt;br /&gt;
| 22 July- 29 July (8 days) || Adding simple goals when recruiting, making units respect those simple goals.&lt;br /&gt;
|-&lt;br /&gt;
| 30 July- 2 August (4 days) || Preparing for mid term Evaluation and start working on more complex goals&lt;br /&gt;
|-&lt;br /&gt;
| 3  August - 8 August (6 days) || Adding the complex goals&lt;br /&gt;
|-&lt;br /&gt;
| 9  August - 21 August (13 days) || Optional: Making the AI detect useful goals that will help win the game and testing all changes&lt;br /&gt;
|-&lt;br /&gt;
| 22  August - 4 September (14 day) || Customization: Limiting number of units&lt;br /&gt;
|-&lt;br /&gt;
| 5 September - 14 September (10 days) ||  Customization: Adding general customization features&lt;br /&gt;
|-&lt;br /&gt;
| 15 September - 23 September (9 days) || Testing all the features and preparing for final evaluation&lt;br /&gt;
|-&lt;br /&gt;
| After SOC (PLAN) || Continue working for Wesnoth &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. It will also expand my practical knowledge of AI and algorithms and will help me better understand the LUA programming language. Moreover, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked guidance or a clear goal).&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50717</id>
		<title>User:Dragos/GsoC 2013/AI: Implement a 'total defense' strategy</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50717"/>
		<updated>2013-04-30T22:33:36Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Defense Strategies 2013]]&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
This application is a draft and it will be subject to changes.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Implement a total defense strategy &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I intend to implement a total defense strategy for the Wesnoth AI. Currently the Wesnoth AI is really good at doing attacks but it's not that good at defending. The AI currently tries to maximize the formula (enemy losses - aggression*own_losses), which can't generate a defending behavior making it easy to defeat in certain situation.&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
==Make the AI do a ‘full retreat’==&lt;br /&gt;
&lt;br /&gt;
One idea that would make the AI defend better is to make a good method for the AI to retreat in certain situations (bad time of day and so on). This can be implemented as a candidate action or a stage action.&lt;br /&gt;
&lt;br /&gt;
==Analyzing the next turn==&lt;br /&gt;
&lt;br /&gt;
Taking into account what the enemy can do in their next turn (the enemy counter-attack) when the AI decides where and what to attack can help the defense.&lt;br /&gt;
&lt;br /&gt;
This change can go as far as refactoring the combat evaluation code so it will be easier to change how the attacks are rated.&lt;br /&gt;
&lt;br /&gt;
==Grouping the units==&lt;br /&gt;
&lt;br /&gt;
Currently when the aggression ( in the attack formula that maximizes (enemy losses - aggression*own_losses)) is set to 0 the AI only makes ‘good attacks’. We could force the units when they cannot find a good attack to group with the other units on the front line and stand united. Grouping the units has simple advantages, such as less overall surface area the enemy can attack from and stronger attacks.&lt;br /&gt;
&lt;br /&gt;
==Using support units==&lt;br /&gt;
&lt;br /&gt;
We can start using the support units more in the attack. If they do not have good attacks we should use them to help the weakest points of the defensive wall.&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
The changes will need extensive tests. We will need tests against AI and against real players so we can be sure the AI improves overall effectiveness and to be 100% sure we leave no loopholes that will make the AI easy to trick/defeat.&lt;br /&gt;
&lt;br /&gt;
Note: Implementing even only a couple of these ideas can solve the problem so we will make the aggression close to 0. Also in the development of the defense, it will be possible to find other ( even more useful) way of making the defense better.&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
I’ve selected improving the AI, more specifically implementing a ‘total defense’ strategy.&lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
This project combines thinking of a solution (and I consider that this will probably be the hardest part in this project) with working at a good implementation. I think that this mix of practical and theoretical work is perfect for my skills.&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;300pt&amp;quot;| Time Frame !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
| 14 June - 23 June (10 days) || Implementing the full retreat function and testing formulas for the positions&lt;br /&gt;
|-&lt;br /&gt;
| 24 June - 27 June (4 days) || Testing the full retreat and analyzing the available formulas to choose the best one &lt;br /&gt;
|-&lt;br /&gt;
| 28 June - 10 July (14 days) || Writing an algorithm to make the units group themselves when necessary&lt;br /&gt;
|-&lt;br /&gt;
| 11 July - 14 July (4 days) || Testing the grouping algorithm&lt;br /&gt;
|-&lt;br /&gt;
| 15 July - 4 August (21 days) || Refactoring combat evaluation code and working to take into account the next turn. (In this period I will also prepare for the midterm evaluation)&lt;br /&gt;
|-&lt;br /&gt;
| 5 August- 8 August (4 days) || Testing the next turn and the modifications to the combat evaluation&lt;br /&gt;
|-&lt;br /&gt;
| 9 August- 23 August (15 days) || Adding better usage for support units&lt;br /&gt;
|-&lt;br /&gt;
| 24  August - 24 August (1 day) || Testing the support units individually and all together&lt;br /&gt;
|-&lt;br /&gt;
| 25 August - 10 September (17 days) || Implementing ideas that may come during the time I work on the project. If there aren’t any new ideas I will reallocate the time as necessary &lt;br /&gt;
(See notes 1 and 3)&lt;br /&gt;
|-&lt;br /&gt;
| 11 September - 23 September (13 days) || Extensive testing of all the ideas applied together, with help from Wesnoth players (if possible), preparing for the final evaluation, writing necessary documentation&lt;br /&gt;
|-&lt;br /&gt;
| After SOC (PLAN) || Continue working for Wesnoth &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
1. I’ve allocated some time from 25 August to 10 September to implement new ideas if they come. In the case that I have no other ideas, I will reallocate the time for the ideas that need it more and/or I will have an after midterm testing phase, like the one at the end of the project (Note 3).&lt;br /&gt;
&lt;br /&gt;
2. After each implementation, I will use a couple of days to test the implementation formula and to search for bugs. The last testing phase, that takes a week, will test all the combined ideas working together to see how the AI behaves. This testing phase will (hopefully) be done by me and other people from the Wesnoth community. I hope the last testing phase will help tweak the existing ideas, to make them perform even better.&lt;br /&gt;
&lt;br /&gt;
3. There is a possibility to add a similar testing phase after the midterm evaluation, to see if we need to focus more time on some aspects of the project. I emphasized so much on testing because I believe that it’s hard to predict how the AI will act while developing it.&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. Working at this will also expand my practical knowledge of AI and algorithms. Also, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked the guidance and a clear goal)&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50716</id>
		<title>User:Dragos/GsoC 2013/AI: Refactor recruitment algorithm</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50716"/>
		<updated>2013-04-30T22:31:00Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Recruitment 2013]]&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
This application is a draft and it will be subject to changes.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Refactor the recruitment algorithm &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I propose to work on the &amp;quot;Refactor the recruiting algorithm&amp;quot; project. The new implemented algorithm should be very customizable from LUA (this will be extremely useful to help campaign creation). The new recruiting algorithm should also be capable of doing the listed features in the project description. &lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
I will divide the project in 3 main ideas, each will its own small ideas.&lt;br /&gt;
&lt;br /&gt;
==Optimal recruiting==&lt;br /&gt;
&lt;br /&gt;
This idea is somewhat broad and contains many small ideas that will accomplish the needed optimality of recruiting.&lt;br /&gt;
&lt;br /&gt;
It’s very important that the AI will recruit optimally (or at least as optimal as possible). This includes recruiting with more than one leader and select the best units for each leader.&lt;br /&gt;
&lt;br /&gt;
The algorithm should take into account the enemy units, their position and the map in general to make the best recruiting decisions. (This is already taken into account but we should still integrate it with multiple leader recruit. Sometimes, for example, is better to only recruit with the second leader then only with the first).&lt;br /&gt;
&lt;br /&gt;
We should also take into account the that are already on the field. So, if our group of units already counters archers, we should not try as hard to recruit archers.&lt;br /&gt;
&lt;br /&gt;
This should also take into account what happens when the AI recruits first, as it should be as hard as possible for the enemy to counter-recruit. Also, it should stop recruiting when it has a noticeable advantage in the field and wait to counter the next wave of enemy units.&lt;br /&gt;
&lt;br /&gt;
==Unit purpose and goals==&lt;br /&gt;
&lt;br /&gt;
We should implement a method to recruit units with a purpose. This purpose can be to control the waterway, scout as much as possible, protect a certain hex/zone and so on. These goals should be mainly controlled by a created scenario, but I believe it would be possible to make the AI detect which goal are important and select them. This will be useful as it will make the AI more organized and try to accomplish small goals one by one, each goal making the AI closer to victory.&lt;br /&gt;
&lt;br /&gt;
This also leads to the problem of ‘forcing’ the units we just recruited for a certain goal to try and accomplish that goal. So, if we make 3 scouts for scouting they should scout, not attack. One idea to do this is implementing a kind of unit based formula. For instance, a unit that scouts should try to maximize a formula related to scouting, such as the total area covered by the AI’s units.&lt;br /&gt;
&lt;br /&gt;
==Customizability==&lt;br /&gt;
&lt;br /&gt;
The new recruiting algorithm should be fully controlled by LUA commands. This can make writing scenarios easier and configuring how the AI recruits could be done directly from the WML. This includes limiting the number of units of each type, or the percentage of a unit that should be in field (example: maximum 5 archers or maximum 50% archers of all the units).&lt;br /&gt;
&lt;br /&gt;
All the recruiting features should be fully controlled by flags in WML. So, if we want to disable the counter-recruit we should simply state that in the scenario. This should also have a timestamp so we can force the AI to begin counter-recruiting after a certain number turns (7 for example).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
I’ve selected “AI: Refactor recruitment algorithm”.&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
I chose this project because I would really like to see these ideas in Wesnoth and because I believe that it is suited for me. Also, I would really like to learn and work with LUA. In the last weeks I saw the basics of how LUA is integrated with C++ in Wesnoth, and it seemed really interesting, and it is an idea I would like to work on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;300pt&amp;quot;| Time Frame !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
| 14 June - 23 June (10 days) || Adding support to recruit with more leaders&lt;br /&gt;
|-&lt;br /&gt;
| 24 June - 28 June (5 days) ||  Making the AI recruit more optimally considering the multiple leaders&lt;br /&gt;
|-&lt;br /&gt;
| 28 June - 4 July (7 days) || Reworking the recruiting algorithm to make it hard for enemies to counter recruit&lt;br /&gt;
|-&lt;br /&gt;
| 5 July - 17 July (13 days) || Adding the feature to Counter-recruiting when necessary/good&lt;br /&gt;
|-&lt;br /&gt;
| 17 July - 21 July (5 days) ||  Testing the changes so far, adding small Customization features from idea 3 &lt;br /&gt;
|-&lt;br /&gt;
| 22 July- 29 July (8 days) || Adding simple goals when recruiting, making units respect those simple goals.&lt;br /&gt;
|-&lt;br /&gt;
| 30 July- 2 August (4 days) || Preparing for mid term Evaluation and start working on more complex goals&lt;br /&gt;
|-&lt;br /&gt;
| 2  August - 7 August (8 days) || Adding the complex goals&lt;br /&gt;
|-&lt;br /&gt;
| 8  August - 21 August (14 days) || Optional: Making the AI detect useful goals that will help win the game and testing all changes&lt;br /&gt;
|-&lt;br /&gt;
| 22  August - 4 September (14 day) || Customization: Limiting number of units&lt;br /&gt;
|-&lt;br /&gt;
| 5 September - 14 September (10 days) ||  Customization: Adding general customization features&lt;br /&gt;
|-&lt;br /&gt;
| 15 September - 23 September (9 days) || Testing all the features and preparing for final evaluation&lt;br /&gt;
|-&lt;br /&gt;
| After SOC (PLAN) || Continue working for Wesnoth &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. It will also expand my practical knowledge of AI and algorithms and will help me better understand the LUA programming language. Moreover, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked guidance or a clear goal).&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50693</id>
		<title>User:Dragos/GsoC 2013/AI: Refactor recruitment algorithm</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50693"/>
		<updated>2013-04-30T20:01:53Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Recruitment 2013]]&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
This application is a draft and it will be subject to changes.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Refactor the recruitment algorithm &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I propose to work on the &amp;quot;Refactor the recruiting algorithm&amp;quot; project. The new implemented algorithm should be very customizable from LUA (this will be extremely useful to help campaign creation). The new recruiting algorithm should also be capable of doing the listed features in the project description. &lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
I will divide the project in 3 main ideas, each will its own small ideas.&lt;br /&gt;
&lt;br /&gt;
==Optimal recruiting==&lt;br /&gt;
&lt;br /&gt;
This idea is somewhat broad and contains many small ideas that will accomplish the needed optimality of recruiting.&lt;br /&gt;
&lt;br /&gt;
It’s very important that the AI will recruit optimally (or at least as optimal as possible). This includes recruiting with more than one leader and select the best units for each leader.&lt;br /&gt;
&lt;br /&gt;
The algorithm should take into account the enemy units, their position and the map in general to make the best recruiting decisions. (This is already taken into account but we should still integrate it with multiple leader recruit. Sometimes, for example, is better to only recruit with the second leader then only with the first).&lt;br /&gt;
&lt;br /&gt;
We should also take into account the that are already on the field. So, if our group of units already counters archers, we should not try as hard to recruit archers.&lt;br /&gt;
&lt;br /&gt;
This should also take into account what happens when the AI recruits first, as it should be as hard as possible for the enemy to counter-recruit. Also, it should stop recruiting when it has a noticeable advantage in the field and wait to counter the next wave of enemy units.&lt;br /&gt;
&lt;br /&gt;
==Unit purpose and goals==&lt;br /&gt;
&lt;br /&gt;
We should implement a method to recruit units with a purpose. This purpose can be to control the waterway, scout as much as possible, protect a certain hex/zone and so on. These goals should be mainly controlled by a created scenario, but I believe it would be possible to make the AI detect which goal are important and select them. This will be useful as it will make the AI more organized and try to accomplish small goals one by one, each goal making the AI closer to victory.&lt;br /&gt;
&lt;br /&gt;
This also leads to the problem of ‘forcing’ the units we just recruited for a certain goal to try and accomplish that goal. So, if we make 3 scouts for scouting they should scout, not attack. One idea to do this is implementing a kind of unit based formula. For instance, a unit that scouts should try to maximize a formula related to scouting, such as the total area covered by the AI’s units.&lt;br /&gt;
&lt;br /&gt;
==Customizability==&lt;br /&gt;
&lt;br /&gt;
The new recruiting algorithm should be fully controlled by LUA commands. This can make writing scenarios easier and configuring how the AI recruits could be done directly from the WML. This includes limiting the number of units of each type, or the percentage of a unit that should be in field (example: maximum 5 archers or maximum 50% archers of all the units).&lt;br /&gt;
&lt;br /&gt;
All the recruiting features should be fully controlled by flags in WML. So, if we want to disable the counter-recruit we should simply state that in the scenario. This should also have a timestamp so we can force the AI to begin counter-recruiting after a certain number turns (7 for example).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
I’ve selected “AI: Refactor recruitment algorithm”.&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
I chose this project because I would really like to see these ideas in Wesnoth and because I believe that it is suited for me. Also, I would really like to learn and work with LUA. In the last weeks I saw the basics of how LUA is integrated with C++ in Wesnoth, and it seemed really interesting, and it is an idea I would like to work on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. It will also expand my practical knowledge of AI and algorithms and will help me better understand the LUA programming language. Moreover, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked guidance or a clear goal).&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50655</id>
		<title>User:Dragos/GsoC 2013/AI: Refactor recruitment algorithm</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50655"/>
		<updated>2013-04-29T21:59:57Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Recruitment 2013]]&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
This application is a draft and it will be subject to changes.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Refactor the recruitment algorithm &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I propose to work on the &amp;quot;Refactor the recruiting algorithm&amp;quot; project. The new implemented algorithm should be very customizable from LUA (this will be extremely useful to help campaign creation). The new recruiting algorithm should also be capable of doing the listed features in the project description. &lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
I will divide the project in 3 main ideas, each will its own small ideas.&lt;br /&gt;
&lt;br /&gt;
==Optimal recruiting==&lt;br /&gt;
&lt;br /&gt;
This idea is somewhat broad and contains many small ideas that will accomplish the needed optimality of recruiting.&lt;br /&gt;
&lt;br /&gt;
It’s very important that the AI will recruit optimally (or at least as optimal as possible). This includes recruiting with more than one leader and select the best units for each leader.&lt;br /&gt;
&lt;br /&gt;
The algorithm should take into account the enemy units, their position and the map in general to make the best recruiting decisions. (This is already taken into account but we should still integrate it with multiple leader recruit. Sometimes, for example, is better to only recruit with the second leader then only with the first).&lt;br /&gt;
&lt;br /&gt;
We should also take into account the that are already on the field. So, if our group of units already counters archers, we should not try as hard to recruit archers.&lt;br /&gt;
&lt;br /&gt;
This should also take into account what happens when the AI recruits first, as it should be as hard as possible for the enemy to counter-recruit. Also, it should stop recruiting when it has a noticeable advantage in the field and wait to counter the next wave of enemy units.&lt;br /&gt;
&lt;br /&gt;
==Unit purpose and goals==&lt;br /&gt;
&lt;br /&gt;
We should implement a method to recruit units with a purpose. This purpose can be to control the waterway, scout as much as possible, protect a certain hex/zone and so on. These goals should be mainly controlled by a created scenario, but I believe it would be possible to make the AI detect which goal are important and select them. This will be useful as it will make the AI more organized and try to accomplish small goals one by one, each goal making the AI closer to victory.&lt;br /&gt;
&lt;br /&gt;
This also leads to the problem of ‘forcing’ the units we just recruited for a certain goal to try and accomplish that goal. So, if we make 3 scouts for scouting they should scout, not attack. One idea to do this is implementing a kind of unit based formula. For instance, a unit that scouts should try to maximize a formula related to scouting, such as the total area covered by the AI’s units.&lt;br /&gt;
&lt;br /&gt;
==Customizability==&lt;br /&gt;
&lt;br /&gt;
The new recruiting algorithm should be fully controlled by LUA commands. This can make writing scenarios easier and configuring how the AI recruits could be done directly from the WML. This includes limiting the number of units of each type, or the percentage of a unit that should be in field (example: maximum 5 archers or maximum 50% archers of all the units).&lt;br /&gt;
&lt;br /&gt;
All the recruiting features should be fully controlled by flags in WML. So, if we want to disable the counter-recruit we should simply state that in the scenario. This should also have a timestamp so we can force the AI to begin counter-recruiting after a certain number turns (7 for example).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. Working at this will also expand my practical knowledge of AI and algorithms. Also, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked the guidance and a clear goal)&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50654</id>
		<title>User:Dragos/GsoC 2013/AI: Refactor recruitment algorithm</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50654"/>
		<updated>2013-04-29T21:59:51Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas Refactor recruitment algorithm 2013]]&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
This application is a draft and it will be subject to changes.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Refactor the recruitment algorithm &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I propose to work on the &amp;quot;Refactor the recruiting algorithm&amp;quot; project. The new implemented algorithm should be very customizable from LUA (this will be extremely useful to help campaign creation). The new recruiting algorithm should also be capable of doing the listed features in the project description. &lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
I will divide the project in 3 main ideas, each will its own small ideas.&lt;br /&gt;
&lt;br /&gt;
==Optimal recruiting==&lt;br /&gt;
&lt;br /&gt;
This idea is somewhat broad and contains many small ideas that will accomplish the needed optimality of recruiting.&lt;br /&gt;
&lt;br /&gt;
It’s very important that the AI will recruit optimally (or at least as optimal as possible). This includes recruiting with more than one leader and select the best units for each leader.&lt;br /&gt;
&lt;br /&gt;
The algorithm should take into account the enemy units, their position and the map in general to make the best recruiting decisions. (This is already taken into account but we should still integrate it with multiple leader recruit. Sometimes, for example, is better to only recruit with the second leader then only with the first).&lt;br /&gt;
&lt;br /&gt;
We should also take into account the that are already on the field. So, if our group of units already counters archers, we should not try as hard to recruit archers.&lt;br /&gt;
&lt;br /&gt;
This should also take into account what happens when the AI recruits first, as it should be as hard as possible for the enemy to counter-recruit. Also, it should stop recruiting when it has a noticeable advantage in the field and wait to counter the next wave of enemy units.&lt;br /&gt;
&lt;br /&gt;
==Unit purpose and goals==&lt;br /&gt;
&lt;br /&gt;
We should implement a method to recruit units with a purpose. This purpose can be to control the waterway, scout as much as possible, protect a certain hex/zone and so on. These goals should be mainly controlled by a created scenario, but I believe it would be possible to make the AI detect which goal are important and select them. This will be useful as it will make the AI more organized and try to accomplish small goals one by one, each goal making the AI closer to victory.&lt;br /&gt;
&lt;br /&gt;
This also leads to the problem of ‘forcing’ the units we just recruited for a certain goal to try and accomplish that goal. So, if we make 3 scouts for scouting they should scout, not attack. One idea to do this is implementing a kind of unit based formula. For instance, a unit that scouts should try to maximize a formula related to scouting, such as the total area covered by the AI’s units.&lt;br /&gt;
&lt;br /&gt;
==Customizability==&lt;br /&gt;
&lt;br /&gt;
The new recruiting algorithm should be fully controlled by LUA commands. This can make writing scenarios easier and configuring how the AI recruits could be done directly from the WML. This includes limiting the number of units of each type, or the percentage of a unit that should be in field (example: maximum 5 archers or maximum 50% archers of all the units).&lt;br /&gt;
&lt;br /&gt;
All the recruiting features should be fully controlled by flags in WML. So, if we want to disable the counter-recruit we should simply state that in the scenario. This should also have a timestamp so we can force the AI to begin counter-recruiting after a certain number turns (7 for example).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. Working at this will also expand my practical knowledge of AI and algorithms. Also, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked the guidance and a clear goal)&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50651</id>
		<title>User:Dragos/GsoC 2013/AI: Refactor recruitment algorithm</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50651"/>
		<updated>2013-04-29T21:36:02Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Defense Strategies 2013]]&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
This application is a draft and it will be subject to changes.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Refactor the recruitment algorithm &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I propose to work on the &amp;quot;Refactor the recruiting algorithm&amp;quot; project. The new implemented algorithm should be very customizable from LUA (this will be extremely useful to help campaign creation). The new recruiting algorithm should also be capable of doing the listed features in the project description. &lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
I will divide the project in 3 main ideas, each will its own small ideas.&lt;br /&gt;
&lt;br /&gt;
==Optimal recruiting==&lt;br /&gt;
&lt;br /&gt;
This idea is somewhat broad and contains many small ideas that will accomplish the needed optimality of recruiting.&lt;br /&gt;
&lt;br /&gt;
It’s very important that the AI will recruit optimally (or at least as optimal as possible). This includes recruiting with more than one leader and select the best units for each leader.&lt;br /&gt;
&lt;br /&gt;
The algorithm should take into account the enemy units, their position and the map in general to make the best recruiting decisions. (This is already taken into account but we should still integrate it with multiple leader recruit. Sometimes, for example, is better to only recruit with the second leader then only with the first).&lt;br /&gt;
&lt;br /&gt;
We should also take into account the that are already on the field. So, if our group of units already counters archers, we should not try as hard to recruit archers.&lt;br /&gt;
&lt;br /&gt;
This should also take into account what happens when the AI recruits first, as it should be as hard as possible for the enemy to counter-recruit. Also, it should stop recruiting when it has a noticeable advantage in the field and wait to counter the next wave of enemy units.&lt;br /&gt;
&lt;br /&gt;
==Unit purpose and goals==&lt;br /&gt;
&lt;br /&gt;
We should implement a method to recruit units with a purpose. This purpose can be to control the waterway, scout as much as possible, protect a certain hex/zone and so on. These goals should be mainly controlled by a created scenario, but I believe it would be possible to make the AI detect which goal are important and select them. This will be useful as it will make the AI more organized and try to accomplish small goals one by one, each goal making the AI closer to victory.&lt;br /&gt;
&lt;br /&gt;
This also leads to the problem of ‘forcing’ the units we just recruited for a certain goal to try and accomplish that goal. So, if we make 3 scouts for scouting they should scout, not attack. One idea to do this is implementing a kind of unit based formula. For instance, a unit that scouts should try to maximize a formula related to scouting, such as the total area covered by the AI’s units.&lt;br /&gt;
&lt;br /&gt;
==Customizability==&lt;br /&gt;
&lt;br /&gt;
The new recruiting algorithm should be fully controlled by LUA commands. This can make writing scenarios easier and configuring how the AI recruits could be done directly from the WML. This includes limiting the number of units of each type, or the percentage of a unit that should be in field (example: maximum 5 archers or maximum 50% archers of all the units).&lt;br /&gt;
&lt;br /&gt;
All the recruiting features should be fully controlled by flags in WML. So, if we want to disable the counter-recruit we should simply state that in the scenario. This should also have a timestamp so we can force the AI to begin counter-recruiting after a certain number turns (7 for example).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. Working at this will also expand my practical knowledge of AI and algorithms. Also, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked the guidance and a clear goal)&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50650</id>
		<title>User:Dragos/GsoC 2013/AI: Implement a 'total defense' strategy</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50650"/>
		<updated>2013-04-29T21:35:27Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Defense Strategies 2013]]&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
This application is a draft and it will be subject to changes.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Implement a total defense strategy &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I intend to implement a total defense strategy for the Wesnoth AI. Currently the Wesnoth AI is really good at doing attacks but it's not that good at defending. The AI currently tries to maximize the formula (enemy losses - aggression*own_losses), which can't generate a defending behavior making it easy to defeat in certain situation.&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
==Make the AI do a ‘full retreat’==&lt;br /&gt;
&lt;br /&gt;
One idea that would make the AI defend better is to make a good method for the AI to retreat in certain situations (bad time of day and so on). This can be implemented as a candidate action or a stage action.&lt;br /&gt;
&lt;br /&gt;
==Analyzing the next turn==&lt;br /&gt;
&lt;br /&gt;
Taking into account what the enemy can do in their next turn (the enemy counter-attack) when the AI decides where and what to attack can help the defense.&lt;br /&gt;
&lt;br /&gt;
This change can go as far as refactoring the combat evaluation code so it will be easier to change how the attacks are rated.&lt;br /&gt;
&lt;br /&gt;
==Grouping the units==&lt;br /&gt;
&lt;br /&gt;
Currently when the aggression ( in the attack formula that maximizes (enemy losses - aggression*own_losses)) is set to 0 the AI only makes ‘good attacks’. We could force the units when they cannot find a good attack to group with the other units on the front line and stand united. Grouping the units has simple advantages, such as less overall surface area the enemy can attack from and stronger attacks.&lt;br /&gt;
&lt;br /&gt;
==Using support units==&lt;br /&gt;
&lt;br /&gt;
We can start using the support units more in the attack. If they do not have good attacks we should use them to help the weakest points of the defensive wall.&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
The changes will need extensive tests. We will need tests against AI and against real players so we can be sure the AI improves overall effectiveness and to be 100% sure we leave no loopholes that will make the AI easy to trick/defeat.&lt;br /&gt;
&lt;br /&gt;
Note: Implementing even only a couple of these ideas can solve the problem so we will make the aggression close to 0. Also in the development of the defense, it will be possible to find other ( even more useful) way of making the defense better.&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
I’ve selected improving the AI, more specifically implementing a ‘total defense’ strategy.&lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
This project combines thinking of a solution (and I consider that this will probably be the hardest part in this project) with working at a good implementation. I think that this mix of practical and theoretical work is perfect for my skills.&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;300pt&amp;quot;| Time Frame !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
| 14 June - 24 June (11 days) || Implementing the full retreat function and testing formulas for the positions&lt;br /&gt;
|-&lt;br /&gt;
| 4 June - 28 June (5 days) || Testing the full retreat and analyzing the available formulas to choose the best one &lt;br /&gt;
|-&lt;br /&gt;
| 28 June - 11 July (15 days) || Writing an algorithm to make the units group themselves when necessary&lt;br /&gt;
|-&lt;br /&gt;
| 11 July - 14 July (4 days) || Testing the grouping algorithm&lt;br /&gt;
|-&lt;br /&gt;
| 15 July - 4 August (21 days) || Refactoring combat evaluation code and working to take into account the next turn. (In this period I will also prepare for the midterm evaluation)&lt;br /&gt;
|-&lt;br /&gt;
| 5 August- 8 August (4 days) || Testing the next turn and the modifications to the combat evaluation&lt;br /&gt;
|-&lt;br /&gt;
| 9 August- 23 August (15 days) || Adding better usage for support units&lt;br /&gt;
|-&lt;br /&gt;
| 24  August - 24 August (1 day) || Testing the support units individually and all together&lt;br /&gt;
|-&lt;br /&gt;
| 25 August - 10 September (17 days) || Implementing ideas that may come during the time I work on the project. If there aren’t any new ideas I will reallocate the time as necessary &lt;br /&gt;
(See notes 1 and 3)&lt;br /&gt;
|-&lt;br /&gt;
| 11 September - 23 September (13 days) || Extensive testing of all the ideas applied together, with help from Wesnoth players (if possible), preparing for the final evaluation, writing necessary documentation&lt;br /&gt;
|-&lt;br /&gt;
| After SOC (PLAN) || Continue working for Wesnoth &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
1. I’ve allocated some time from 25 August to 10 September to implement new ideas if they come. In the case that I have no other ideas, I will reallocate the time for the ideas that need it more and/or I will have an after midterm testing phase, like the one at the end of the project (Note 3).&lt;br /&gt;
&lt;br /&gt;
2. After each implementation, I will use a couple of days to test the implementation formula and to search for bugs. The last testing phase, that takes a week, will test all the combined ideas working together to see how the AI behaves. This testing phase will (hopefully) be done by me and other people from the Wesnoth community. I hope the last testing phase will help tweak the existing ideas, to make them perform even better.&lt;br /&gt;
&lt;br /&gt;
3. There is a possibility to add a similar testing phase after the midterm evaluation, to see if we need to focus more time on some aspects of the project. I emphasized so much on testing because I believe that it’s hard to predict how the AI will act while developing it.&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. Working at this will also expand my practical knowledge of AI and algorithms. Also, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked the guidance and a clear goal)&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50648</id>
		<title>User:Dragos/GsoC 2013/AI: Refactor recruitment algorithm</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Refactor_recruitment_algorithm&amp;diff=50648"/>
		<updated>2013-04-29T21:19:35Z</updated>

		<summary type="html">&lt;p&gt;Dragos: Created page with '{{SoC2013Student}} Category:SoC Ideas AI Defense Strategies 2013  =Note= This application is a draft and it will be subject to changes.  =Description= &amp;lt;h4&amp;gt;Dragos Ristache: Re…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Defense Strategies 2013]]&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
This application is a draft and it will be subject to changes.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Refactor the recruitment algorithm &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. Working at this will also expand my practical knowledge of AI and algorithms. Also, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked the guidance and a clear goal)&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50562</id>
		<title>User:Dragos/GsoC 2013/AI: Implement a 'total defense' strategy</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50562"/>
		<updated>2013-04-29T01:43:23Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Defense Strategies 2013]]&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
This application is a draft and it will be subject to changes.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Implement a total defense strategy &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I intend to implement a total defense strategy for the Wesnoth AI. Currently the Wesnoth AI is really good at doing attacks but it's not that good at defending. The AI currently tries to maximize the formula (enemy losses - aggression*own_losses), which can't generate a defending behavior making it easy to defeat in certain situation.&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
==Make the AI do a ‘full retreat’==&lt;br /&gt;
&lt;br /&gt;
One idea that would make the AI defend better is to make a good method for the AI to retreat in certain situations (bad time of day and so on). This can be implemented as a candidate action or a stage action.&lt;br /&gt;
&lt;br /&gt;
==Analyzing the next turn==&lt;br /&gt;
&lt;br /&gt;
Taking into account what the enemy can do in their next turn (the enemy counter-attack) when the AI decides where and what to attack can help the defense.&lt;br /&gt;
&lt;br /&gt;
This change can go as far as refactoring the combat evaluation code so it will be easier to change how the attacks are rated.&lt;br /&gt;
&lt;br /&gt;
==Grouping the units==&lt;br /&gt;
&lt;br /&gt;
Currently when the aggression ( in the attack formula that maximizes (enemy losses - aggression*own_losses)) is set to 0 the AI only makes ‘good attacks’. We could force the units when they cannot find a good attack to group with the other units on the front line and stand united. Grouping the units has simple advantages, such as less overall surface area the enemy can attack from and stronger attacks.&lt;br /&gt;
&lt;br /&gt;
==Using support units==&lt;br /&gt;
&lt;br /&gt;
We can start using the support units more in the attack. If they do not have good attacks we should use them to help the weakest points of the defensive wall.&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
The changes will need extensive tests. We will need tests against AI and against real players so we can be sure the AI improves overall effectiveness and to be 100% sure we leave no loopholes that will make the AI easy to trick/defeat.&lt;br /&gt;
&lt;br /&gt;
Note: Implementing even only a couple of these ideas can solve the problem so we will make the aggression close to 0. Also in the development of the defense, it will be possible to find other ( even more useful) way of making the defense better.&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
I’ve selected improving the AI, more specifically implementing a ‘total defense’ strategy.&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
This project combines thinking of a solution (and I consider that this will probably be the hardest part in this project) with working at a good implementation. I think that this mix of practical and theoretical work is perfect for my skills.&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;300pt&amp;quot;| Time Frame !! Milestone&lt;br /&gt;
|-&lt;br /&gt;
| 14 June - 24 June (11 days) || Implementing the full retreat function and testing formulas for the positions&lt;br /&gt;
|-&lt;br /&gt;
| 4 June - 28 June (5 days) || Testing the full retreat and analyzing the available formulas to choose the best one &lt;br /&gt;
|-&lt;br /&gt;
| 28 June - 11 July (15 days) || Writing an algorithm to make the units group themselves when necessary&lt;br /&gt;
|-&lt;br /&gt;
| 11 July - 14 July (4 days) || Testing the grouping algorithm&lt;br /&gt;
|-&lt;br /&gt;
| 15 July - 4 August (21 days) || Refactoring combat evaluation code and working to take into account the next turn. (In this period I will also prepare for the midterm evaluation)&lt;br /&gt;
|-&lt;br /&gt;
| 5 August- 8 August (4 days) || Testing the next turn and the modifications to the combat evaluation&lt;br /&gt;
|-&lt;br /&gt;
| 9 August- 23 August (15 days) || Adding better usage for support units&lt;br /&gt;
|-&lt;br /&gt;
| 24  August - 24 August (1 day) || Testing the support units individually and all together&lt;br /&gt;
|-&lt;br /&gt;
| 25 August - 10 September (17 days) || Implementing ideas that may come during the time I work on the project. If there aren’t any new ideas I will reallocate the time as necessary &lt;br /&gt;
(See notes 1 and 3)&lt;br /&gt;
|-&lt;br /&gt;
| 11 September - 23 September (13 days) || Extensive testing of all the ideas applied together, with help from Wesnoth players (if possible), preparing for the final evaluation, writing necessary documentation&lt;br /&gt;
|-&lt;br /&gt;
| After SOC (PLAN) || Continue working for Wesnoth &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
1. I’ve allocated some time from 25 August to 10 September to implement new ideas if they come. In the case that I have no other ideas, I will reallocate the time for the ideas that need it more and/or I will have an after midterm testing phase, like the one at the end of the project (Note 3).&lt;br /&gt;
&lt;br /&gt;
2. After each implementation, I will use a couple of days to test the implementation formula and to search for bugs. The last testing phase, that takes a week, will test all the combined ideas working together to see how the AI behaves. This testing phase will (hopefully) be done by me and other people from the Wesnoth community. I hope the last testing phase will help tweak the existing ideas, to make them perform even better.&lt;br /&gt;
&lt;br /&gt;
3. There is a possibility to add a similar testing phase after the midterm evaluation, to see if we need to focus more time on some aspects of the project. I emphasized so much on testing because I believe that it’s hard to predict how the AI will act while developing it.&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. Working at this will also expand my practical knowledge of AI and algorithms. Also, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked the guidance and a clear goal)&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50521</id>
		<title>User:Dragos/GsoC 2013/AI: Implement a 'total defense' strategy</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50521"/>
		<updated>2013-04-28T10:09:05Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Defense Strategies 2013]]&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
This application is a draft and it will be subject to changes.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Implement a total defense strategy &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I intend to implement a total defense strategy for the Wesnoth AI. Currently the Wesnoth AI is really good at doing attacks but it's not that good at defending. The AI currently tries to maximize the formula (enemy losses - aggression*own_losses), which can't generate a defending behavior making it easy to defeat in certain situation.&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
==Make the AI do a ‘full retreat’==&lt;br /&gt;
&lt;br /&gt;
One idea that would make the AI defend better is to make a good method for the AI to retreat in certain situations (bad time of day and so on). This can be implemented as a candidate action or a stage action.&lt;br /&gt;
&lt;br /&gt;
==Analyzing the next turn==&lt;br /&gt;
&lt;br /&gt;
Taking into account what the enemy can do in their next turn (the enemy counter-attack) when the AI decides where and what to attack can help the defense.&lt;br /&gt;
&lt;br /&gt;
This change can go as far as refactoring the combat evaluation code so it will be easier to change how the attacks are rated.&lt;br /&gt;
&lt;br /&gt;
==Grouping the units==&lt;br /&gt;
&lt;br /&gt;
Currently when the aggression ( in the attack formula that maximizes (enemy losses - aggression*own_losses)) is set to 0 the AI only makes ‘good attacks’. We could force the units when they cannot find a good attack to group with the other units on the front line and stand united. Grouping the units has simple advantages, such as less overall surface area the enemy can attack from and stronger attacks.&lt;br /&gt;
&lt;br /&gt;
==Using support units==&lt;br /&gt;
&lt;br /&gt;
We can start using the support units more in the attack. If they do not have good attacks we should use them to help the weakest points of the defensive wall.&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
The changes will need extensive tests. We will need tests against AI and against real players so we can be sure the AI improves overall effectiveness and to be 100% sure we leave no loopholes that will make the AI easy to trick/defeat.&lt;br /&gt;
&lt;br /&gt;
Note: Implementing even only a couple of these ideas can solve the problem so we will make the aggression close to 0. Also in the development of the defense, it will be possible to find other ( even more useful) way of making the defense better.&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
I’ve selected improving the AI, more specifically implementing a ‘total defense’ strategy.&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
This project combines thinking of a solution (and I consider that this will probably be the hardest part in this project) with working at a good implementation. I think that this mix of practical and theoretical work is perfect for my skills.&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. Working at this will also expand my practical knowledge of AI and algorithms. Also, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked the guidance and a clear goal)&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50442</id>
		<title>User:Dragos/GsoC 2013/AI: Implement a 'total defense' strategy</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50442"/>
		<updated>2013-04-25T01:03:02Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Defense Strategies 2013]]&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
This application is a draft and it will be subject to changes.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Implement a total defense strategy &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I intent to implement a total defense strategy for the Wesnoth AI. Currently the Wesnoth AI is really good at doing attacks but it's not that good at defending. The AI currently tries to maximize the formula (enemy losses - aggression*own_losses), which can't generate a defending behavior making it easy to defeat in certain situation.&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
==Make the AI do a ‘full retreat’==&lt;br /&gt;
&lt;br /&gt;
One idea that would make the AI defend better is to make a good method for the AI to retreat in certain situations (bad time of day and so on). This can be implemented as a candidate action or a stage action.&lt;br /&gt;
&lt;br /&gt;
==Analyzing the next turn==&lt;br /&gt;
&lt;br /&gt;
Taking into account what the enemy can do in their next turn (the enemy counter-attack) when the AI decides where and what to attack can help the defense.&lt;br /&gt;
&lt;br /&gt;
This change can go as far as refactoring the combat evaluation code so it will be easier to change how the attacks are rated.&lt;br /&gt;
&lt;br /&gt;
==Grouping the units==&lt;br /&gt;
&lt;br /&gt;
Currently when the aggression ( in the attack formula that maximizes (enemy losses - aggression*own_losses)) is set to 0 the AI only makes ‘good attacks’. We could force the units when they cannot find a good attack to group with the other units on the front line and stand united. Grouping the units has simple advantages, such as less overall surface area the enemy can attack from and stronger attacks.&lt;br /&gt;
&lt;br /&gt;
==Using support units==&lt;br /&gt;
&lt;br /&gt;
We can start using the support units more in the attack. If they do not have good attacks we should use them to help the weakest points of the defensive wall.&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
The changes will need extensive tests. We will need tests against AI and against real players so we can be sure the AI improves overall effectiveness and to be 100% sure we leave no loopholes that will make the AI easy to trick/defeat.&lt;br /&gt;
&lt;br /&gt;
Note: Implementing even only a couple of these ideas can solve the problem so we will make the aggression close to 0. Also in the development of the defense, it will be possible to find other ( even more useful) way of making the defense better.&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
I’ve selected improving the AI, more specifically implementing a ‘total defense’ strategy.&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
This project combines thinking of a solution (and I consider that this will probably be the hardest part in this project) with working at a good implementation. I think that this mix of practical and theoretical work is perfect for my skills.&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
Working at a project like Wesnoth will provide invaluable experience. Working at this will also expand my practical knowledge of AI and algorithms. Also, I’m sure that this Summer of Code will prepare me for working in the future for open-source organisations and programs. (I always felt that I wanted to work for an open-source project, but lacked the guidance and a clear goal)&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
I plan to continue coding for Wesnoth after the SOC. I believe that continually working for an open-source project offers both individual benefits and, especially, benefits for the community. &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50394</id>
		<title>User:Dragos/GsoC 2013/AI: Implement a 'total defense' strategy</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50394"/>
		<updated>2013-04-22T22:35:39Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Defense Strategies 2013]]&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
This application is a draft and it will be subject to changes.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Implement a total defense strategy &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I intent to implement a total defense strategy for the Wesnoth AI. Currently the Wesnoth AI is really good at doing attacks but it's not that good at defending. The AI currently tries to maximize the formula (enemy losses - aggression*own_losses), which can't generate a defending behavior making it easy to defeat in certain situation.&lt;br /&gt;
&lt;br /&gt;
TODO: Add more first-level sections to detail your proposal&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
I’ve selected improving the AI, more specifically implementing a ‘total defense’ strategy.&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
This project combines thinking of a solution (and I consider that this will probably be the hardest part in this project) with working at a good implementation. I think that this mix of practical and theoretical work is perfect for my skills.&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50393</id>
		<title>User:Dragos/GsoC 2013/AI: Implement a 'total defense' strategy</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50393"/>
		<updated>2013-04-22T22:27:28Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Defense Strategies 2013]]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Implement a total defense strategy &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I intent to implement a total defense strategy for the Wesnoth AI. Currently the Wesnoth AI is really good at doing attacks but it's not that good at defending. The AI currently tries to maximize the formula (enemy losses - aggression*own_losses), which can't generate a defending behavior making it easy to defeat in certain situation.&lt;br /&gt;
&lt;br /&gt;
TODO: Add more first-level sections to detail your proposal&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
I’ve selected improving the AI, more specifically implementing a ‘total defense’ strategy.&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
This project combines thinking of a solution (and I consider that this will probably be the hardest part in this project) with working at a good implementation. I think that this mix of practical and theoretical work is perfect for my skills.&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50392</id>
		<title>User:Dragos/GsoC 2013/AI: Implement a 'total defense' strategy</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50392"/>
		<updated>2013-04-22T22:21:24Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Defense Strategies 2013]]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Implement a total defense strategy &amp;lt;/h4&amp;gt;&lt;br /&gt;
TODO: Write a small (1-4 sentences) description of your proposal here.&lt;br /&gt;
&lt;br /&gt;
TODO: Add more first-level sections to detail your proposal&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
&lt;br /&gt;
My name is Dragos Florian Ristache, and I am 20 years old. I have been a Computer Science student for a semester at Jacobs University Bremen, and starting this fall, I will study Computer Science at the University of Southampton. I have been working in C++ and participating in numerous competitions since the 9th grade (so for around 5 years).&lt;br /&gt;
&lt;br /&gt;
In the later years I started working with other languages and technologies (Python/C#).  &lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
&lt;br /&gt;
drasisu [at] yahoo [dot] com&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
ristachedragos [at] gmail [dot] com&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
&lt;br /&gt;
dragos on the forum and the IRC.&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
I think summer of code is the perfect way to gain a lot of practical experience. In addition, working at big project will also help my programming and thinkings skills.&lt;br /&gt;
&lt;br /&gt;
Because I’ve been participating and training for many competitions in high school I haven’t had the chance to focus on the practical part of Computer Science and I think this would be the perfect chance to do so.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
&lt;br /&gt;
I will be studying Computer Science, starting this fall at University of Southampton.&lt;br /&gt;
&lt;br /&gt;
(note* This year, I’ve studied a semester at Jacobs University Bremen. I have also had the chance to take many online courses during the ‘gap’ semester. The two most important I would like to mention would be: Berkley’s Introduction to Artificial Intelligence and Caltech’s Machine Learning course)&lt;br /&gt;
&lt;br /&gt;
=== What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
&lt;br /&gt;
I’m from Romania and will mostly be available from 7 am to 7 pm GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
&lt;br /&gt;
I do not have any commitments or vacations planned so far.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
&lt;br /&gt;
I’ve only worked at small individual projects.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I haven’t developed software on my own, but on numerous occasions I’ve worked in team environments at Computer Science competitions. This competitions ranged between 5 hours to months and this is one of the main reasons I believe I work well in a team environment.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
No, I haven’t participated before.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
No, this would be my first open source development project.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
Yes, I do consider myself a gamer. I also think that this is one of the main reasons I chose this project (and even why I started studying computer science)&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
I consider myself a competitive gamer in some regards. When I find a game that is at the same time challenging and fun I usually invest a lot of time at getting really good at the said game.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
I generally play all types of games. I really like strategy games ( I constantly play Starcraft 2 for example). RPG are one of my favorite types, the same can be said about shooters and puzzle games.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
I usually prefer challenging opponents and I like it when the game has a high difficulty.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
When I’m playing a game I’m usually interested in both, with a little inclination to story, but when I analyze a game and decide if I should keep playing or not, the gameplay is the biggest factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
I’ve been playing Wesnoth for a couple of weeks. I’m inclined to play the single player mainly because of the AI.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====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.====&lt;br /&gt;
&lt;br /&gt;
I’ve worked on 3 “demo-patches” as instructed by Crab_.&lt;br /&gt;
&lt;br /&gt;
1. I’ve created a lua function to display a label over each hex.&lt;br /&gt;
&lt;br /&gt;
2. I’ve also created a mirror recruit for the AI in C++. This is in case the AI is playing a 1v1 against the same race. Using this function the AI will recruit the exact units the enemy recruited.&lt;br /&gt;
&lt;br /&gt;
3. I’ve created a naive retreat function. When used the AI units will start retreating away from the enemies and to the safest positions on the map.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.===&lt;br /&gt;
&lt;br /&gt;
I studied one year at an international high school and semester at an international university (where the teaching and working language was English). I also scored a 110 (out of 120) on the TOEFL iBT. Those are the main reasons I consider myself good at written english.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
Romanian and English.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
&lt;br /&gt;
I occasionally spend the time on internet forums discussing strategies or other game related information so yes, I would consider myself good at interacting with other players.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
&lt;br /&gt;
When I have the necessary knowledge to give someone advice, I do.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
&lt;br /&gt;
Yes! I think advice from other people is one of the best ways to grow as a programmer and as a person.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
&lt;br /&gt;
When I reach a high enough level at something to have an outline on what areas I need improving and what areas I reached a ‘good enough’ level for my task I am able to sort useful from useless criticism.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
&lt;br /&gt;
This depends on what stage I am at learning the code base. When I just want to learn how everything works and how everything is structured I will probably just code a proof of concept, but when I gained enough information about the project I think well ahead of the code I write, as to not waste time.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
I’ve selected improving the AI, more specifically implementing a ‘total defense’ strategy.&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.=== &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
This project combines thinking of a solution (and I consider that this will probably be the hardest part in this project) with working at a good implementation. I think that this mix of practical and theoretical work is perfect for my skills.&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
    Git (used for all commits)&lt;br /&gt;
&lt;br /&gt;
I’ve used Git a couple of times and I am somewhat familiar&lt;br /&gt;
&lt;br /&gt;
    C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
I’ve been working in C++ for around 5 years, so I would consider myself good at it&lt;br /&gt;
&lt;br /&gt;
   STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I’ve been using STL for a long time but I only have minimal experience with Boost and Sdl/&lt;br /&gt;
&lt;br /&gt;
   Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
I’ve worked with Python numerous types so I find myself familiar with the language&lt;br /&gt;
&lt;br /&gt;
    build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I used scons and cmake in the weeks before the applications&lt;br /&gt;
&lt;br /&gt;
    WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Minimal experience&lt;br /&gt;
&lt;br /&gt;
    Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
While working on a demo-patch for wesnoth I learned a bit of Lua and LuaAI&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I mainly use Code::Blocks and Eclipse. I use Code::Blocks because it suited my needs in high school while programming for competitions and I started using Eclipse because it helped me in some projects I worked on. (But for Wesnoth I only used Code::Blocks)&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
I worked in C/C++,C# and Python. I consider that I know C/C++ at a high level and Python/C# at a medium-level.&lt;br /&gt;
&lt;br /&gt;
===Would you mind talking with your mentor on telephone / internet phone?===&lt;br /&gt;
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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general, students should be as verbose as possible in their answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I agree and will add my phone number in the google application.&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50326</id>
		<title>User:Dragos/GsoC 2013/AI: Implement a 'total defense' strategy</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50326"/>
		<updated>2013-04-20T18:41:31Z</updated>

		<summary type="html">&lt;p&gt;Dragos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC_Ideas_Your_Own_Ideas2013]]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Implement a total defense strategy &amp;lt;/h4&amp;gt;&lt;br /&gt;
TODO: Write a small (1-4 sentences) description of your proposal here.&lt;br /&gt;
&lt;br /&gt;
TODO: Add more first-level sections to detail your proposal&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
dragos&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
TODO: fill out the questionnaire, on your copy of this page. Question are here : [[SoC_Information_for_Google#Does your organization have an application template you would like to see students use?]]&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50325</id>
		<title>User:Dragos/GsoC 2013/AI: Implement a 'total defense' strategy</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Dragos/GsoC_2013/AI:_Implement_a_%27total_defense%27_strategy&amp;diff=50325"/>
		<updated>2013-04-20T18:40:57Z</updated>

		<summary type="html">&lt;p&gt;Dragos: Created page with '{{SoC2013Student}} Category:SoC_Ideas_Your_Own_Ideas2013  =Description= &amp;lt;h4&amp;gt;Dragos Ristache: Implement a total defense strategy &amp;lt;/h4&amp;gt; TODO: Write a small (1-4 sentences) desc…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2013Student}}&lt;br /&gt;
[[Category:SoC_Ideas_Your_Own_Ideas2013]]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Dragos Ristache: Implement a total defense strategy &amp;lt;/h4&amp;gt;&lt;br /&gt;
TODO: Write a small (1-4 sentences) description of your proposal here.&lt;br /&gt;
&lt;br /&gt;
TODO: Add more first-level sections to detail your proposal&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
My IRC nickname is &amp;quot;dragos&amp;quot; or &amp;quot;dragos_&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
TODO: fill out the questionnaire, on your copy of this page. Question are here : [[SoC_Information_for_Google#Does your organization have an application template you would like to see students use?]]&lt;/div&gt;</summary>
		<author><name>Dragos</name></author>
		
	</entry>
</feed>