SoC2012 Fristi Teach That AI

From The Battle for Wesnoth Wiki
Revision as of 17:01, 27 March 2012 by Crab (talk | contribs) (SoC Application)


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



This is a Summer of Code 2012 student page


Description

Kevin Wyckmans - Teach That AI!

As stated on the idea page I want to extend the lua capabilities and implement the necessary code to allow the AI to finish the main Wesnoth campaigns. On top of this it should be able to this in a more or less optimal way, that may or may not be specified by the user.

Your Suggestions

Still working on these

IRC

Fristi, Fristii, Fristilus

SoC Application

Submitted to google

Questionnaire

1) Basics

1.1) Write a small introduction to yourself.

I am Kevin, 23-year old computer science student living in Antwerp, Belgium. I like enjoying life!

1.2) State your preferred email address.

kevinwijckmans [AT] gmail [DOT] com

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

Fristi

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

I would love to get started in the open source world and community. As of late I realized I was more or less wasting my free time, I wanted to fill it in with a purpose. Learn things, get to know people, this kind of stuff.

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

I am studying computer science, specializing in Software Engineering. Currently in my 1st Master at the University of Antwerp

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

Belgium. I can join irc at 17.00 pm untill 01.00 a.m. from now untill the end of may. Starting July I can be online most of the day, say from 00.00pm to 2 or 3 a.m.

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

Untill the end of may I have classes. I am supposed to have exams in June but I only have to take one, should only keep me busy for about three days. Nothing else to do.


2) Experience

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

I have worked on various assignments for university courses. This included:

  • a basic facebook clone (Very, very simple)
  • A Breakout clone
  • A basic graphics engine
  • A C compiler
  • A basic distributed file system

Unfortunately I did not work on any large external projects yet.

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

A lot of the work at University was in group. Quite a lot of works has been done in pairs. For one project we had to work with four or five people.

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

Nope.

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

Not applicable.

2.5) Gaming experience - Are you a gamer?

Yes, I very much am! As in, if I have the time to do it. I used to play a lot of games when I was younger. Now I don't have that much time anymore, but I do like it if I have some spare time.

2.5.1) What type of gamer are you?

Single player out of habit; I do like multiplayer with friends.

2.5.2) What type of games?

RPG, RTS, Action, ... Something that can deliver an experience. 

2.5.3) What type of opponents do you prefer?

Friendly ones, regardless of how good they are

2.5.4) Are you more interested in story or gameplay?

Story is important to get you immersed in a game, but it's nothing without decent gameplay. Same the other way around, decent gameplay can keep you interested for a while, but long term, you need story.

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

Yes, it's hard to say for how long, it has been coming and going the past few years. Everytime I decide to migrate to Linux it's one of the first things I install. So yes, I did play.

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


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

I have not contributed any patches yet, but I am trying to submit one before the application period ends to show I am really motivated.


3) Communication skills


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

I am quite fluent in English, spoken as well as written.

3.2) What spoken languages are you fluent in?

Dutch and English


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

Yeah, I played MMO's for a while, I grew a tough skin.

3.4) Do you give constructive advice?

I try.

3.5) Do you receive advice well?

If it's decent advice, coming from people I know that know their stuff.

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

Yeah, I can do it.

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

I do like to know where I am going when programming. This does not have to be very detailed, just a high level view of where I have to end.


4) Project

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

AI: teach the AI to play Wesnoth's mainline campaigns

I want to concentrate on the AI being able to not only finish the campaigns, but finish them in an optimal as possible way. Maybe even allow a user to specify what is seen as "optimal".

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


4.3) Why did you choose this project?

I choose this project because I have some experience with AI and the concept of AI interests me greatly. In University we had to program Pac-Man to win the game as efficiently as possible. I had an enormous amount of fun with this project. I really, really liked it. 

I had another project in which I described the behaviour of agents using statecharts. This resulted in some emergent behaviour and was really nice to see.

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

  • Now until 6th of April: Communicate with wesnoth devs and try and finish a patch.
  • 24th april - 21st of May: Intensively get to know mentor, get to know the code, I want to be able to get started with coding at once when the period starts, so everything should be clear, I should have a good idea where to do what.

I indicated the dev. period in weeks according to the GSoC calendar

  • 15th of june to 19th of june: My only exam + study time
  • Week 1 + 2: Expanding low-level Lua capabilities (if needed)
  • Week 3 - 7: Implement the necessary behaviour and let the AI progress through the different campaigns.
  • Week 8: All the mainline campaigns have to be able to be completed by the AI. [REQUIRED]
  • 14th of July: My Birthday, will not be able to work for two days.
  • Week 9 - 12: Allow a user to make adjustements to what is deemed "optimal". [Optional]
  • Week 13: [Buffer]

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

While I do have experience programming AI, at this moment I do not know enough about the Wesnoth source to go into a lot of detail. I am working on that and I hope to be able to expand on this by the 6th of April 

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

I expect to know how it feels like to be part of a team working on a real-life project of a decent size. I want to have learned something and got to know some new people.

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

If I have finished this project I am sure I would stick around, I would have gained knowledge and insight into Wesnoth and I would not want to let it go to waste.


5) Practical considerations

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

  • Subversion (used for all commits) - Used it a lot the first 3 years of university (now GIT)
  • C++ (language used for all the normal source code) - Very familiar, though a bit rusty
  • STL, Boost, Sdl (C++ libraries used by Wesnoth) - Used STL and SDL quite a lot, a bit of experience using boost.
  • Python (optional, mainly used for tools) - Is a language I am using frequently at this moment.
  • build environments (eg cmake/scons) - I have some experience using makefiles.
  • WML (the wesnoth specific scenario language) - Nope.
  • Lua (used in combination with WML to create scenarios) - A bit, did some little things in Lua, this would be something I would be practicing a lot before starting the project.

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

I have used a lot of tools, starting from vim to Eclipse. They each have their strengths and weaknesses. For small things in commandline I use vim once in a while. For larger projects I use Eclipse if possible because of the ease of use and tools available.

5.3) What programming languages are you fluent in?

I am fluent in C++ and python. I have used Java extensively aswell, but that is a while ago.

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

Nope, would not mind at all.