Difference between revisions of "SummerOfCodeProposal Velory"

From The Battle for Wesnoth Wiki
(AI Improvement Idea)
(AI Improvement Idea)
Line 51: Line 51:
 
This attribute will contain value which is how many unit needed in squad.In squad idea Ai will divide units to squads -4 people squads- for example if ai side have only 3 men or 13 man maybe ai will break squads but write squad_empty_slot to 1-2,3-  then if we recruit  unit ai will check squads if squad_empty_slot 's value != 0 and if any squads found ai will add unit to this squad if ai cant find any squad which is have empty slot ai will give unit to squad_leader promotion and refer squad_empty_slot to 3.
 
This attribute will contain value which is how many unit needed in squad.In squad idea Ai will divide units to squads -4 people squads- for example if ai side have only 3 men or 13 man maybe ai will break squads but write squad_empty_slot to 1-2,3-  then if we recruit  unit ai will check squads if squad_empty_slot 's value != 0 and if any squads found ai will add unit to this squad if ai cant find any squad which is have empty slot ai will give unit to squad_leader promotion and refer squad_empty_slot to 3.
  
 
+
ps:i will add new functions to this area soon...
  
 
'''Strategy(Attacking/Capturing/Moving):'''
 
'''Strategy(Attacking/Capturing/Moving):'''
Line 57: Line 57:
 
There will be makeStrategy method. We will define priority variable. So in makeStrategy method we will list leader's available movement points and take a look at enemies,capture available villages. If any village that we can immediately capture squad will capture this village first after that we will list enemy formation(for example how many unit that we can attack etc.) and we will doAttack method and this method will call isWeak function.isWeak will calculate who is stronger at this state.With this method ai will also look other allied squads for if this squad will attack can other allied squads attack this turn or can other squad come near of this squad for help other turns.Then ai will decide how stronger that we are.If our squad stronger than enemy squad , our squad will attack.If not,  Can our squad be stronger than enemy with help of other allied squads?(can they attack too or can they come near of us).So if decide is we stronger than enemy -lets kill- other hand -retreat.When retreating squad can go near of other squads that far from us. Then squad can merge with other squads in following turns if enemy will follow us.
 
There will be makeStrategy method. We will define priority variable. So in makeStrategy method we will list leader's available movement points and take a look at enemies,capture available villages. If any village that we can immediately capture squad will capture this village first after that we will list enemy formation(for example how many unit that we can attack etc.) and we will doAttack method and this method will call isWeak function.isWeak will calculate who is stronger at this state.With this method ai will also look other allied squads for if this squad will attack can other allied squads attack this turn or can other squad come near of this squad for help other turns.Then ai will decide how stronger that we are.If our squad stronger than enemy squad , our squad will attack.If not,  Can our squad be stronger than enemy with help of other allied squads?(can they attack too or can they come near of us).So if decide is we stronger than enemy -lets kill- other hand -retreat.When retreating squad can go near of other squads that far from us. Then squad can merge with other squads in following turns if enemy will follow us.
  
Recruitment:
+
=Recruitment:=
  
 
In recruitment state ai will call attemptRecruit method. This method will look if the leader staying at keep.If not method will look if leader can reach keep in this turn.So if leader cant reach keep, ai will pass recruitment state. But if leader is staying in keep or can reach castle(this method will return true) ai will call availableRecruits method that includes learn how many gold we have and which units can we recruit with this money. After that ai call willAvailablRecruits method which includes if we wait one turn which units will be available for us. At at last ai will call strongEnough method for can we wait one turn to recruit(i mean do we strong enough to live next turns). After all of this calls ai will decide which strategy is good wait? or recruit now
 
In recruitment state ai will call attemptRecruit method. This method will look if the leader staying at keep.If not method will look if leader can reach keep in this turn.So if leader cant reach keep, ai will pass recruitment state. But if leader is staying in keep or can reach castle(this method will return true) ai will call availableRecruits method that includes learn how many gold we have and which units can we recruit with this money. After that ai call willAvailablRecruits method which includes if we wait one turn which units will be available for us. At at last ai will call strongEnough method for can we wait one turn to recruit(i mean do we strong enough to live next turns). After all of this calls ai will decide which strategy is good wait? or recruit now

Revision as of 07:51, 23 March 2009

Personal Information/Introduction

Name: Burkay Özdemir

Age: 21

Gender:Male

Education: 3 of 4 Year Degree, Computer Engineering

Wesnoth Forum ID: velory

IRC ID: Velory

GNA ID: velory

Email Address: veloryATundreamDOTnet , ghostprocATgmailDOTcom


AI Improvement Idea

I've changed my ideas since i learned Formula Ai language.Here's my improvement ideas about breaking squad etc.

Adding Global Functions and variables to Formula AI

Loop structure Idea:

'while' function:I think most important requirement for Formula language is loop structures,adding the loop structures will allow run one or more lines of code repetitively.Loops will decrease complexity of codes.And we have a chance to trace all items in lists and add conditional to them.Function syntax will looklike that

while(i=0)(<assignment>,if(found,i = 1,0))

Selection Idea:

'specific_choose' function:Specific choose function will allow to choose specific items(not highest).Function syntax will look like that <result> = choose(<inputl list >,<number>,[<string>,]<formula>) its like choose function but we can choose order of item.

Follower Idea: 'push_queue' function: This function allow us push unit's movements to queue.For example if we want to follow one unit(for example leader of the squad) we will push his movements(movements is coordinates passed from unit when he is moving) to one queue for follower unit.

'pop_queue' function: This function allow us pop unit's movements from queue.So after we push one unit's movements(movements is coordinates passed from unit when he is moving),we will pop for follower unit and we let follower unit to follow leader unit.

Squad Division Idea: 'squad_leader' attribute: I want to implement squad_leader attribute to all variables then we can check if unit is squad_leader choose by AI.(squad_leader can have two value 1 or 0)

'squad_empty_slot' attribute: This attribute will contain value which is how many unit needed in squad.In squad idea Ai will divide units to squads -4 people squads- for example if ai side have only 3 men or 13 man maybe ai will break squads but write squad_empty_slot to 1-2,3- then if we recruit unit ai will check squads if squad_empty_slot 's value != 0 and if any squads found ai will add unit to this squad if ai cant find any squad which is have empty slot ai will give unit to squad_leader promotion and refer squad_empty_slot to 3.

ps:i will add new functions to this area soon...

Strategy(Attacking/Capturing/Moving):

There will be makeStrategy method. We will define priority variable. So in makeStrategy method we will list leader's available movement points and take a look at enemies,capture available villages. If any village that we can immediately capture squad will capture this village first after that we will list enemy formation(for example how many unit that we can attack etc.) and we will doAttack method and this method will call isWeak function.isWeak will calculate who is stronger at this state.With this method ai will also look other allied squads for if this squad will attack can other allied squads attack this turn or can other squad come near of this squad for help other turns.Then ai will decide how stronger that we are.If our squad stronger than enemy squad , our squad will attack.If not, Can our squad be stronger than enemy with help of other allied squads?(can they attack too or can they come near of us).So if decide is we stronger than enemy -lets kill- other hand -retreat.When retreating squad can go near of other squads that far from us. Then squad can merge with other squads in following turns if enemy will follow us.

Recruitment:

In recruitment state ai will call attemptRecruit method. This method will look if the leader staying at keep.If not method will look if leader can reach keep in this turn.So if leader cant reach keep, ai will pass recruitment state. But if leader is staying in keep or can reach castle(this method will return true) ai will call availableRecruits method that includes learn how many gold we have and which units can we recruit with this money. After that ai call willAvailablRecruits method which includes if we wait one turn which units will be available for us. At at last ai will call strongEnough method for can we wait one turn to recruit(i mean do we strong enough to live next turns). After all of this calls ai will decide which strategy is good wait? or recruit now

Patches

[Patch 1138]-I've implemented one of Formula AI poisoning improvements suggestions on the EasyCoding page,under the guidance of boucman and with help of Dragonking.

Basics And Other Questions

Informal Introduction:

I am interested in GsoC and especially Wesnoth to improve my skills about Game Developing and also Open Source Developing.At the same time while improving myself i want to add somethings to game from myself and evolve this great game.

Experience:

I am at the end of third of four year bachelor education in Computer Engineering. After these years i became experienced about some computer languages(C,C++,Java,Perl,Python,C#,SQL etc.). And i experienced both procedural design and Object Oriented Design(including UML Design).I'm in advanced level in both C C++ and Java languages.I'm also the chief of the game development group in my school. I have developed many projects for School and a little for some companies. When i was intern -last summer- i had developed a Flight Simulation for Defence Industry. I worked on Linux(ubuntu) to develop,i used C++,Open Gl and Sdl libraries,image generators (MPV,CIGI).I developed whole simulation myself with help of my intern mentor. About teamworking the most crowded project that I have ever worked, included four people. If I get acception to this project, this will be my first time working with GSoC and the biggest open source project that i have ever worked on.

I'm a passionate gamer.My game genres of choices are Fantasy Role Playing games,MMORPGs,Real time Strategies,Simulations and Adventures. I'm playing Computer and Console games since i was 8 years old. First game that i played is Prehistoric. My priorities in games are about storyline and theme, not the graphics. So i believe that new generation games have huge problems about that.I'm playing Wesnoth about 2 week and i really enjoyed it reminded me Heroes III but Wesnoth's content is more flexible than Heroes and have gooder Theme. Game is harder then most turn based games and need to create good strategy for the win.

Communication skills:

My primary spoken/written language is Turkish.So english is my second language. But I have no problems interacting with others in a professional or social contacts.I could give and also receive constructive advices.

Project:

From the project ideas that I saw,I thought what I would like to participate in most will be "Write a primitive library for Formula AI". Im not too familiar with AI developing but its is in my interests. I'm trying to be familiar with formula AI about 1.5 week -playing game , looking to header files and class reference , read documentations about FAI on wiki , looking for forum threads etc. - So I choose this project because i know c++ well and i have also some real life experience on c++.Also i think i can learn quickly how AI is processing and i can develop new primitive library to AI.

About timeline; Generally my school ending at 2 p.m(GMT) and im usually awake to 12-1 a.m(GMT).At fridays my school ending at 10 a.m so i'm empty whole day after 10 a.m these days and off course i'm empty all weekends.(Turkey using GMT +2 btw).But i can both work and develop or research when i'm at school.Although i have exams at starting 25May and finishing at 7 June(And my school is ending at this day too). So in this two weeks i may not be doing much.On summer i have a internship but it will end at 4 p.m everyday(except Weekends-On weekends i can research and develop all day) and i can awake those days to 12-1 a.m too. So i can work much these hours(after 4.pm) and i can be online generally at 4 p.m on summer(at June-July).But i can develop when im at work(= before 4.pm) however it may not too much.And would have no problem for me to talking over the phone, internet or otherwise.

I wish to participate in the Google Summer of Code and especially Wesnoth because i want to be a Game Developer and Summer of Code is my chance to do that.I'm trying to improve myself but i need a mentor and i need to do something that is worthy.In Turkey, Game Development is really weak issue so finding a good mentor and good community is really hard.And also i want to take place as a Open Source Developer cause my philosophy about Softwares correspond with Open Source philosophy. I believe that knowledge and information would be free, I want to stay as developer in Wesnoth after GSoC. So im looking to GSoC as chance to boost myself and the door to being in developer team in Wesnoth.

Practical considerations:

I am using Subversion(svn).I'm good at C++ and writing about 2.5 years with C++ and i know Python about a year.And i'm using environments (eg cmake/autotools/scons) about 2 year. I am normally use Java and Python for development cause this languages have really good readability,reliability also they have good support for abstraction although they are really strong in their roles.And off course they are Open Source!!. I am using eclipse and qt4 in Linux(for java). When i'm writing c++ or python code on linux i generally use vim editor. On windows i'm using both visual studio and eclipse for developing.

Experienced Languages: C,C++,Java,Python,C#,Perl,PhP,Mysql,Javascript,Html,Xml,Action Script 3,(Cinema 4d this is not language but i used for design some 3d objects)

Experienced Libraries and components: Sdl,OpenGl,Directx,CiGi,Xna,pyGame(just introduction state)