Difference between revisions of "User:Zaroth"

From The Battle for Wesnoth Wiki
(Experience)
Line 158: Line 158:
 
==Project==
 
==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?'''
+
Due to Ivanovic's remark, moved this part to [[Zaroth Multiplayer Improvements]]
 
 
I chose [[SoC_Ideas_Multiplayer_Improvements_2011]]
 
 
 
Description of my proposal on how to tackle this project can be found here: [[Zaroth Multiplayer Improvements]]
 
 
 
''old version below''
 
 
 
I chose [[SoC Ideas Simple Content Manager]].
 
 
 
Description of my proposal on how to tackle this project can be found here: [[Zaroth Simple Content Manager]]
 
 
 
'''4.2) If you have invented your own project, please describe the project and the scope.'''
 
 
 
Not invented, but description can be found here: [[Zaroth Multiplayer Improvements]]
 
 
 
''old version below''
 
 
 
Not invented, but description can be found here: [[Zaroth Simple Content Manager]]
 
 
 
'''4.3) Why did you choose this project?'''
 
 
 
Since I'm an eager player of Wesnoth multiplayer games, it lies within my best interests to make it as good and enjoyable as possible - and several features are certainly missing. It also allows me to work on network code and networking is one of my main interests in programming.
 
 
 
''old version below''
 
 
 
It provides me with an opportunity to do some UI designing, on which I have previously read a lot on [http://www.joelonsoftware.com/uibook/fog0000000249.html Joel Spolsky's blog] and have been fascinated quite by. I expect testing usability (as in watching how average Joe uses it and stumbles - in this case my roommate using Mac probably).
 
 
 
Additional appeal provide the breadth of the audience - usefulness of this tool potentially won't be limited to Wesnoth community, at least in my vision.
 
 
 
'''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".'''
 
 
 
I would like to be able to start and finish coding a little earlier, due to the heavy-exam time on my university in August. However, to compensate that, I will be able to easily devote a lot of time (and love) to the project during May, June, and first half of July. By the end of 3rd week of July I'd like to have all the planned functionality coded and (mostly) tested. So during the second half of July the only thing left is detailed testing, bugfixing and preparing for my exams.
 
 
 
'''4.5) Include as much technical detail about your implementation as you can.'''
 
 
 
Implementation details as well as planned functionality and my overall vision can be found here: [[Zaroth Multiplayer Improvements]]
 
 
 
''old version below''
 
 
 
Implementation details as well as planned functionality and my overall vision can be found here: [[Zaroth Simple Content Manager]]
 
 
 
'''4.6) What do you expect to gain from this project?'''
 
 
 
I expect to learn how a game networking code can be written and see a working example of that.
 
 
 
Last, but definitely not least is a lot of first-rate contact with experienced developers - I hope to pick up a lot of good programming practices from that! I'll certainly be also looking a lot through existing, (hopefully) good code, so it'll be a teaching experience in many ways.
 
 
 
''old version below''
 
 
 
Certainly more experience in using Qt toolbox and designing intuitive UIs will come useful in later programming career, especially since Qt is on LGPL now and is becoming all-popular. Bonus points if I get the pleasure to code it in Python, which is always a nice experience.
 
 
 
I also want to use this opportunity and at least try test-driven development approach. I have no prior experience in writing unit tests (I have only read about it so far), so I may fail or not have enough time for that.
 
 
 
Last, but definitely not least is a lot of first-rate contact with experienced developers - I hope to pick up a lot of good programming practices from that! For example, since I am currently learning design patterns through the [http://en.wikipedia.org/wiki/Design_Patterns_%28book%29 "Gang of four" book] it would be also nice to put this in practice and make my approach to programming more organized. I surely hope there'll be some design patterns experts in Wesnoth developer community to consult about that. :-)
 
 
 
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''
 
 
 
A better question is what would make me not stay! I am already an eager, even if not very successful, [http://ladder.subversiva.org/profile.php?name=Zaroth ladder player] and I keep meeting friendly and interesting people in Wesnoth community - on the game server, forum and IRC. I see no reasons not to stay so far...
 
  
 
==Practical considerations==
 
==Practical considerations==

Revision as of 13:35, 9 April 2011


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



This is a Summer of Code 2011 student page
Project: SoC_Ideas_Multiplayer_Improvements_2011



Description

Zaroth - Multiplayer Improvements

Since the idea with Simple content manager may turn out to be redundant, I turned my attention to SoC_Ideas_Multiplayer_Improvements_2011. This is a bunch of smaller projects with the common theme of improving multiplayer rather than one big project.

Description of my vision of these improvements can be found here: Zaroth Multiplayer Improvements

Previous description

Zaroth - Simple Content Manager

I plan on writing a Qt (preferably PyQt) tool used to simplify and provide a layer of abstraction for common VCSes, as described here: SoC Ideas Simple Content Manager

Description of my proposal on how to tackle this project can be found here: Zaroth Simple Content Manager

IRC

zaroth

Questionnaire

Basics

1.1) Write a small introduction to yourself.

Hello! I'm Łukasz and if you seriously want to read through whole this long questionnaire and my answers to it, you'll probably get to know me and my tastes quite well. I hope I will be able to meet and get to know you as well. Nice to meet you!

1.2) State your preferred email address.

lukasz.dobrogowski(at)nospamthanks_gmail.com

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

Zaroth

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

Most of my reasons for joining GSoC at Wesnoth community are already listed in answers to questions 4.3 and 4.6. As for my reasons not related to the project's specifics and the will to become a more active member of Wesnoth community... What can I say? Recognizability of Google Summer of Code participants among Polish employers? Fun and satisfaction that I can have designing a nice and useful UI? All of them, probably.

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

Electrical Engineering and Telecommunication, 6th semester (I'm writing my bachelor's thesis in 7th - that is, winter semester 2011/2012), Warsaw University of Technology. Currently at a year-long (until Sep 2011) student exchange at Technische Universität München, Germany.

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

Right now I live in Germany, and I will probably be on IRC anywhere between 5:30 and 22:00 GMT (although certainly not active all of the specified time) from Monday to Friday. Since I like to make trips on weekends, I may be mostly not available during them.

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

In answer to question 4.4 I wrote a more elaborate answer for that. But in short: my exam period is in August, except that I plan no vacation.

Experience

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

Aside from university projects, not too much. My two internships so far concerned mostly robotics / cognitivistic stuff (mostly Matlab/C++), so there are not many things to show that are very relevant to this proposal.

Except maybe for this little tool that I quickly wrote using Python, PyQt and sqlite - our team needed a tool which would help some not tech-savvy people get the images with desired properties from the IAPS database. It took only a bit shorter than a week, but long enough for me to fell in love with simplicity of the tools I used. Therefore, I would gladly use them again in this project and further develop my skills in this area.

I also got accepted a small patch to Wesnoth, but that was long ago and under a different nick, so I don't consider it very relevant. I started submitting patches right now, however, and already some got accepted (see 2.6)

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

Yes, as partially mentioned above, during my internships I got to design, discuss and develop things in team.

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

I have no prior GSoC experience.

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

As mentioned before, I got a small patch with a feature to Wesnoth accepted long time ago. Got two small patches with features to Konversation (IRC client) accepted as well. Tried to put some life in the dev community and get started with Globulation2 code, but after all the codebase turned out to be a bit too intimidating for me and there are not many active devs to help (I hope that I will get around to coding something for Glob2 one day, it's a nice OSS game). A lot of hanging around on IRC channels of #gentoo, #kde, #wesnoth, #glob2, asking questions and sometimes answering them.

Not yet an official developer of any OSS project, sadly. I hope to change it this year :-)

2.5) Gaming experience - Are you a gamer?

Yes, however now a lot less active than a few years ago. (and it probably won't change again, the childhood has ended, it's time to work now...)

2.5.1) What type of gamer are you?

It's kind of hard to give a good answer for such a general question... Casual? Amateur? Fun-seeking? I guess the answers to questions below describe my "gamer type" better.

2.5.2) What type of games?

I'm playing regularly just two computer games: Go and Wesnoth. (and it didn't change for about a year now) I also had a knack for being a Dungeon Master in RPG games (and played cRPGs as well), but right now I don't have time anymore for the time-consuming preparations (or time-consuming gameplays in cRPGs) that DMing in RPGs need, so I switched to games that have shorter and more predictable playtime.

I am also fond of boardgames: Go, Settlers of Catan, Tigris & Euphrates, Arkham Horror to name a few. They don't need endless preparations for the game master and also provide a fun way to spend time with friends.

So, strategy games. If I had more time, I'd love to play more RPGs.

2.5.3) What type of opponents do you prefer?

Obviously having a sense of humour and easy-going, playing against trolls / arrogant people isn't fun. But apart from these obvious qualities, I like opponents who comment on the game afterwards (so I can more easily learn from my mistakes in Go / Wesnoth / other strategies), play along with fantasy theme or make the game in other ways more enjoyable.

2.5.4) Are you more interested in story or gameplay?

I can enjoy both. But if I was forced to choose, I'd say story. A really good story can sometimes make me play a game even with a gameplay I don't normally enjoy (i.e. FPS, platformers etc.)

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

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.

I know Wesnoth for roughly 3-4 years (I remember it well when I first discovered Wesnoth 1.2 in my openSUSE repository) and have sporadically played from time to time. This year I stumbled upon one of neki's videos, which ignited the will to play Wesnoth once again. I made a ladder account, started playing regularly, posting on the forum and generally became a more active member of the Wesnoth ecosystem :-)

And obviously I lean towards multiplayer - all games are more fun when played with other people! I finished most of the campaigns because I was interested in the Wesnoth world's history and other stories people tell with their campaigns, but when stuck, usually I didn't waste time restarting the whole scenario - debug mode or going just a turn-few turn earlier was usually the way I did it. The fun in campaigns for me lies in story/character development, not in "beating" scenarios or AIs. I much prefer to "beat" and talk to real people. (I guess I will have to change this attitude a bit if I decide to create a campaign, however - there are players who enjoy mostly gameplay after all and one can't neglect it)

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.

  • MP debug logging (accepted) - proposed by Crab_
  • changing WML default behaviour (accepted) - idea from forum, short exercise in codebase navigation
  • removing own_side (accepted) - some redundancy code I found while writing control panel patch
  • GUI2 design document readability improvements (waiting) - when I was learning basics of GUI2, this patch "just happened" due to my ability to see some typos/grammar mistakes as I read (I'm a guy who often makes notes of typos/errors as he reads books and later sends them to the author as an errata)
  • MP campaign support (not intended for inclusion) - hack that can prove that "I'm able to hack my way through the code to get the result I want to happen", according to Crab_ ;-)
  • first version of the control panel (waiting for test) - first implementation of the control panel idea
  • get_side_color() convenience function (waiting for test) - when I was writing the above patch, I suddenly found that I lacked a function in team.hpp, so I added it :-)
  • I got one other patch accepted to Wesnoth long time ago, however under a different nick (PM me for details).

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.

As it can hopefully be seen in this proposal, I have no problems with written English. If needed, I can prove this with a CPE, but I think that level of formality is not necessary here.

3.2) What spoken languages are you fluent in?

In order from most to least fluent:

  • Polish (mother tongue)
  • English (proficient)
  • German (communicative)
  • Russian (I'm not very good at Russian itself yet, but thanks to Polish-Russian likeliness I can easily communicate with Russians by adding a Polish word when I'm missing a Russian one)

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 have no problems with player interaction, I always try to be as understanding of the other side and amicable as possible. However, I do like fantasy-themed non-vulgar trash talking when playing Wesnoth games (as in "get back to your stinky caves, you puny mushroom-eaters (dwarves)"), , it adds a bit spice to the game for me - but I stop it as soon as I see that the other player is not interested / offended / not getting along with that.

3.4) Do you give constructive advice?

I always try to give reasons when critiquing - and improvement ideas as well, if I have any. If that is also what you understand by "constructive advice", we can agree that I always try to give constructive advice, can't we?

3.5) Do you receive advice well?

Again, it depends on the definition of "receiving advice well". I try not to easily discard (i.e. without at least looking into it) any advice that goes from people who are clearly superior to me, either in skill, experience or position. However, I'm also prone to not listening to "advice" when it's clear that the author didn't take any time to get acquainted with the topic.

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

At areas that I'm at least a bit proficient in (e.g. coding), sure. But as far as e.g. art goes, I couldn't tell pillow shading from banding ;-)

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?

It heavily depends on my "gut feeling" at the moment. If I feel that, based on my current knowledge, there is a clear way how to solve a problem, I won't wait until my teammate/mentor/boss appears and comments on it before starting implementing it. If it's not the case, I heavily prefer to have my ideas thoroughly discussed - nobody likes when his work is thrown away.

However, regardless of whether I implement my own or previously discussed ideas, I always prefer to communicate what I'm doing right now to my teammates to prefer doubling our work / reinventing the wheel.

Project

Due to Ivanovic's remark, moved this part to Zaroth Multiplayer Improvements

Practical considerations

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

  • Subversion (used for all commits) - sure, however after I managed to wrap my head around thinking in Git, SVN looks a bit basic
  • C++ (language used for all the normal source code) - yes, it was my first programming language and so far most heavily used by me
  • STL, Boost, Sdl (C++ libraries used by Wesnoth) - STL - good knowledge, Boost, SDL - little knowledge, enough to find what I need and read more on it to get started quickly
  • Python (optional, mainly used for tools) - after writing my last tool in PyQt I can say my skill's more than basic, it's average, but not yet very pythonic and proficient
  • build environments (eg cmake/scons) - CMake - basic, scons - just enough to build something with scons :-))
  • WML (the wesnoth specific scenario language) - basic
  • Lua (used in combination with WML to create scenarios) - none at all yet, but willing to learn and thanks to an add-on by Aethaeryn it will probably go fast.

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

For quick and dirty editing I use vim. For bigger projects I use Eclipse (java), KDevelop (my newly found love as C++ IDE) or Kate (Python, I may switch to KDevelop). Tools I use regardless of project are:

  • ack (irreplaceable for me, I love to use it for orientation in bigger projects)
  • Git (after the steep learning curve of DCVS, it's really nice and powerful)
  • Redmine (I would get lost in my personal projects without this)
  • Google (90 % of my questions are answered there)
  • IRC (remaining 10 % of my coding problems can be usually quickly solved by friendly people from relevant Freenode channel)
  • Doxygen/Javadoc (code docs), TeX (design docs), Inkscape/graphviz (diagrams) (because writing/formatting documentation by hand is so tedious)

5.3) What programming languages are you fluent in?

C/C++ (fluent), Python, Java, Matlab (averagely fluent)

5.4) Would you mind talking with your mentor on telephone / internet phone? (...)

I have no problem with that, but Skype is probably cheaper and more convenient, unless my mentor is from Germany, they have pretty cheap calls here :-)

SoC Application

Zaroth SoC application