SoC2012 Ayne Multiplayer Engine Refactoring

From The Battle for Wesnoth Wiki
Revision as of 15:30, 3 April 2012 by Ayne (talk | contribs)


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

Anja Keicher - Improve wesnoth's engine to allow better transitions between scenarios

The idea is to refactor the code that links scenarios and adding comments to make future changes easier and add the possibilty to change settings between scenarios in new and improved ways, as well as interaction with GUI2 dialogues.

Additional

I would start by refactoring the current code and adding comments, to make it easier for myself and other developers to change it later. Until the start of the project and while I'm refactoring I would play the game more thoroughly and talk to people to determine what exactly the “fun things” to be added to the functionality are.


IRC

Ayne

SoC Application

Submitted to google

Questionnaire

1) Basics

1.1) Write a small introduction to yourself.

1) Basics

1.1) Write a small introduction to yourself.

My name is Anja Keicher. I'm a 21 year old student from Germany currently studying in the UK. I spent the first two years of my Bachelor degree at Hochschule Osnabrueck in Germany studying European Media Computer Science, then went to Edinburgh Napier University in Scotland to finish the degree in Games Development.

1.2) State your preferred email address.

I will put it in the GSoC application.

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

Ayne

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

It sounds like an excellent opportunity to do what I enjoy doing, work on a large community project, and collect a lot of valuable experience. It would also allow me to earn money to help fund my studies through working on something relevant to my studies.

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

That's a bit complicated. The short version is: Games Development as part of a Bachelor degree in Media Computer Science. I'm in the last semester of my Bachelor degree. The Games Development part is at Edinburgh Napier University in the UK, the Media Computer Science part at Hochschule Osnabrueck (University of Applied Sciences Osnabrueck) in Germany.

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

I currently live in the UK and would most likely be on IRC between 11am and 12am GMT.

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

I plan to take a vacation from the 3rd to 7th July. Other than that there will be one weekend in June and a few separate days in August where I will be unavailable (dates to be confirmed).

2) Experience

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

University projects covering a wide range of subjects, including games using ActionScript3, XNA, Groovy and for Android devices, stock and database managing software, and websites.

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

The practical side of my studies in Germany was almost exclusively in teams. The teams I have worked in so far were generally 2 to 5 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?

This is my first time participating in GsoC.

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

This is the first time I'm involved in an open source project.

2.5) Gaming experience - Are you a gamer?

Definitely. Gaming is what got me interested in developing software rather than just using it in the first place.

2.5.1) What type of gamer are you?

Generally casual, though when I find a game I like I'll try to spend any time I can spare playing it. I'm a quality player rather than quantity, a game has to catch my attention, but if I like it I will play it thoroughly and several times to explore different aspects of the game.

2.5.2) What type of games?

Mostly single-player RPGs such as the Elder Scrolls series, Fallout, Dragon Age, Mass Effect etc; though I do enjoy puzzle games like Portal and strategy games like Age of Empires (or Wesnoth) as well.

2.5.3) What type of opponents do you prefer?

AI opponents. It allows me to play the way I want, and I actually stand a chance ;)

2.5.4) Are you more interested in story or gameplay?

I'm very story driven, but if I just wanted the story I'd read a book or watch a movie. The gameplay definitely is an important aspect as well, and has to be right, otherwise I can't enjoy the story. Not all games are the same though, with some the story is more important and with others the story is just an excuse the enjoy the gameplay.

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

I've started playing Wesnoth when I first saw it on the list of GsoC projects and have been playing it a bit every day since to get a feeling for it. I haven't really tried multiplayer yet, but usually I prefer playing single-player or multiplayer with the human players rather than against them.

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.

https://gna.org/patch/?3235


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 spent some time living in New Zealand and I currently live and study in Scotland. I haven't had problems communicating with anyone in many years. It's not perfect, but speaking or writing in English is definitely not a problem.

3.2) What spoken languages are you fluent in?

English, German

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

I haven't interacted with the Wesnoth player community yet, but I generally don't have problems getting along with people, or staying calm and polite during conflicts.

3.4) Do you give constructive advice?

I try to give either constructive advice or none at all. If I can help someone or give them advice then I'm happy to do so.

3.5) Do you receive advice well?

As long as it's constructive I'm always grateful for pointers on how to improve my work.

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

Generally, yes.

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'm perfectly capable of making decisions myself, but if it's a major change I prefer to discuss it with other people first, especially if I'm new to a project. In my experience that's more efficient in the long run.


4) Project

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

I chose the project “Improve wesnoth's engine to allow better transitions between scenarios”. My first priority would be to clean up the code and add comments while I play the game some more to get a better idea of what could and what should be added to the transitions.

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

-

4.3) Why did you choose this project?

It looks like a nice mix of solid software engineering and games development that represents my studies and experience so far quite well. I think it would be a good introduction into the world of big community projects and open source development for me.

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 start of coding: Familiarizing myself with the game, the code and the community as much as I can while focusing my courseworks and exams. If I get accepted, start talking to people to get an idea of what needs doing and what might be a nice addition. Start of coding until early June: Refactor the existing code. Early June until end of mid August Continue refactoring if I haven't finished yet. Start implementing the “should be added” list. After that start on the “could be added” list Late July until mid August Write documentation

Apart from one weekend in June, the 5 days in early July, and a few days in August (never more than two at a time) I should be available to work weekdays and weekends as I will finish uni in early May.

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

I'm not familiar enough with the Wesnoth code yet to give technical detail.

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

More programming experience, especially with large projects.

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

A friendly developing community and the feeling that I can continue to contribute to the project.


5) Practical considerations

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

Subversion (used for all commits) I have used Subclipse (Subversion plugin for Eclipse)

C++ (language used for all the normal source code) We mostly used C and C++ during my first 3 semesters at university. I'm a bit rusty, but it shouldn't take me long to remember all the things I learned.

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

Python (optional, mainly used for tools) None

build environments (eg cmake/scons) Used cmake once, have written a few make files by hand

WML (the wesnoth specific scenario language) None

Lua (used in combination with WML to create scenarios) None

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

My preferred IDE is Eclipse, mostly because I had to use it for most of my modules at university and have gotten used to its features, keyboard shortcuts and GUI.

5.3) What programming languages are you fluent in?

Java, C++, C, C# I haven't used C and C++ much over the last year, but I think it wouldn't take me long to get the hang of it again.

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

I don't mind talking on the phone. I will add my phone number to the google application, and I can also provide my Skype details if necessary.