User:Shofixti/GSoC13/Questionnaire

From The Battle for Wesnoth Wiki

Contents

1) Basics

1.1) Write a small introduction to yourself.

  • Hello chaps, my name is Mike Daoust and I’m a professional geek.

I’m a Canadian student currently studying computer science at Laurentian University. My hobbies include game design, experimenting with virtual reality, world domination and the occasional game of D&D. I was introduced to GSOC by a good friend of mine who used to be a mentor in the program and I was downright excited to see that Wesnoth was a participant! I’ve put countless hours into playing Wesnoth on my Ipad and actually blame my low marks in calculus on how addictive the game can be.

I have a long history with collaborative game design projects and to be frank would be excited to be a part of the development in Wesnoth as well as learn a little more about how the ever growing open-source community operates.

1.2) State your preferred email address.

  • the.mike.daoust(at)gmail(dot)com

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

  • Shofixti

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

  • You mean besides needing to pay for my coming school year? Well, mostly I find that the open source community represents an incredible opportunity to challenge the very nature of developmental buisness practices. It seems like a way of democraticizing the creation process of applications and services… And to me, that seems like something worth being a part of.

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

  • Currently I am studying Computer Science at Laurentian University, where I have just completed my second year of school. I plan on graduating with a Bachelor of Computer Science with Specialization in Game Design if my university makes good on it’s promise to introduce that degree before I graduate. (Otherwise I’d be aiming for a regular ol’ Bachelor of Computer Science)

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

  • I’m from Canada and living in the province of Ontario, so my time zone is Eastern Time (UTC -5:00). Keeping my time zone in mind, I am available to be in IRC most days from 9:00 AM – 5:00 PM infrequently and from 5:00 PM – Midnight(Give or take a few hours, depending on how many energy drinks I have on hand) constantly.

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

  • Yes I do have other commitments, myself and my brother are in the process of starting a small web design and software company here in my hometown of Sudbury. GSOC would receive my priority over a buisness project unless a strict deadline was in play. In either case, I have set aside time for both the buisness and GSOC and am fully confident that neither will interfere too much with the other.

Additionally, I have plans to visit Scotland for a week late in the summer. The date is to be determined.

2) Experience

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

  • An old MMOFPS by the name of Paintball 3D (Worked on it for 3 years)
  • A web system for a fitness magazine which keeps track of acheivment-style goals
  • An android app for a survey researching first nation children’s quality of life
  • A (as of yet unpublished) text based adventure game engine.
  • A cheque creation tool used by local banks here in Sudbury
  • Countless small projects that never went anywhere, in my childhood.

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

  • Yes, my work on Paintball 3D was with a team from The Netherlands, The States, China, Canada and Brazil. Additionally, my experience as a web developer has nessecitated that I learn how to cooperate with others and maintain good communication practices in order to ensure that the job done is as much my creative and technical expertise as it is a product of the client’s vision.

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?

  • No, I was only made aware of it this year.

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

  • No, I am not. This would be my first foray into the realm of open source development. I believe that makes it even more exciting.

2.5) Gaming experience - Are you a gamer?

  • Hell yes. University means I don’t have the time that I might want to be able to put into gaming these days, but I still like to consider gaming a passion of mine. I own just about every console since (and including) the Atari 2600, I've spent way more money than would be considered healthy on my gaming PC and a part of me feels obligated to at least try every game that I hear about which sounds promising.

2.5.1) What type of gamer are you?

  • This is an unfair question. To limit one’s self to a particular genre of games, or try to identify too strongly with being a “hard core” or “casual” gamer, only serves to limit the palette of games you can associate with! I prefer to think of myself as just a gamer. Somebody who will play any game for it’s own value, not just based on it’s genre or target audience.

2.5.2) What type of games?

  • I make it a point not to limit myself to a particular genre, but I particularly enjoy Strategy games and RPGs (I’m honestly not just saying that for the sake of this application!). On the other side of the spectrum, I suffer from MMO fatigue and get a little bored with the lack of evolution in FPS games.

2.5.3) What type of opponents do you prefer?

  • Honestly? The silent kinds. If you’re better than I am, I’d prefer not to hear you gloat. If you’re losing, I’d prefer not to hear you blame it on something else. The anonymity of the internet allows us to vent our frustration far too easily, so it’s usually better for both parties if they just stay silent.

2.5.4) Are you more interested in story or gameplay?

  • Tough question. I think it would depend on the game itself. There are many games where a strong story would only serve to clog the fluid mechanics of the gameplay, but then there are others where the story acts as the immersive element needed to emotionally attach the player to the game in order to make the gameplay the strongest it can be. I believe strongly in the medium of game design for story telling, but I don’t believe every game should be that.

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 have indeed played Wesnoth before! As for how long, well… Lets just say my marks first year might have been a bit higher had I spent more time paying attention in class and less time playing Wesnoth on my Ipad.

I almost exclusively played singleplayer. My forays into multiplayer have met with only painful, frustrating defeats and it put me off a little. Plus the campaigns bring an element of persistency between maps that I really enjoyed.

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 repository (during the evaluation period or earlier) please state so.

  • I have not yet submitted any patches.
  • TODO: Submit a patch. Or two. I heard something about a "2 patch your in" system

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 don’t know any other language, so I better damn well be fluent in English!

But honestly just refer to the rest of this application as proof that I have a masterful understanding of the written English language. I even spell colour properly, unlike most of my continent.

  • That being said, I still sound like an idiot 80% of the time.

3.2) What spoken languages are you fluent in?

  • English. That’s all.

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

  • You can say that again… I MEAN, uh, I possess the ability to get along well with all types of people in a professional manor and never generally lose my cool online or off. I believe that a friendly professional-yet-detached attitude is always the best approach within most contexts.

3.4) Do you give constructive advice?

  • The ability to provide constructive advice is almost a requirement to the jobs I usually take on. I believe very strongly that any advice worth giving should always be backed up with reasoning and almost never given in an absolute statement.

3.5) Do you receive advice well?

  • I believe that as programmers we must always be open to new advice. Without the ability to adapt and change our approach as better ones present themselves we would surely be left behind in this industry. An industry which is moving forward faster than any other in the history of mankind.

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

  • Is there really such a thing as a useless criticism? Every criticism and suggestion should follow the same treatment: to be looked at objectively and openly for merit. Usually, if somebody has taken the time to suggest something, there’s merit to be found somewhere.

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

  • Just given the two options in this case, I think I would more describe myself as the second one. I think that “exploratory coding” is very important to understand the difficulties and possible solutions in a problem. Even if the work must be discarded later, I think that usually the lessons learned from the mistakes in the experimentation lead to a better solution for the end result. Now, all of this is not to say that I’d rather work “on an island”. I know all too well that different perspectives lend unique viewpoints to a problem and that all too often these combinations of viewpoints lead to a solution that could never have been seen from just one individual.

In summary: I’d describe myself as quite autonomous in nature but that does not foreclude my cooperation with others.


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?

  • Yes, AI: Refactor recruitment algorithm
  • The 7 points covered in the ideas page for this project would be my highest priority
  • My overarching theme in the development in a re-factoring of the AI would be "Smarter and more Human". I can think of a few very minor ideas to make the AI behave closer to a human than it currently is. These include purpose driven recruitment and use of limited knowledge in fog of war games.
  • It's also very important that the AI be very configurable (if that's even a word) by the scenario editor.

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

  • I did not. All of my own project ideas would likely be shot down. I'm too new here to think I know what this project needs more than you folks do.

4.3) Why did you choose this project?

  • Conversations on IRC with a few other development members really set my creative blood on fire for AI design. It made me remember how much I enjoyed experimenting with AI long ago when I used to experiment in 3D engines... It's something i'd love to tackle again.
  • Additionally, I believe that a smarter AI recruitment, especially a purpose driven one, could change the gameplay experience of single player scenarios to an extreme.

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".

  • Please keep in mind that this is only the broadest of estimates:
  • Most of May: Work with whoever will help me in IRC to learn everything there is to know about development in Wesnoth. This way when coding starts i'm already ready to go! (Maybe even with some early prototypes)
  • Early-Mid June: Focus on creating the initial framework of a new AI based on the old. Allow for new systems such as Multi-Leader recruitment, Per-Leader recruitment tables and assigning a purpose to each unit. (Perhaps someday I can get around to making these purposes matter, gameplay wise, but that sounds outside the scope of this project)
  • Mid-Late June: Refine all of the terrible mistakes I made in the previous two weeks into a solid starting point for the new AI.
  • July: Examine each of the "Seven Points" the project should hit on, and find creative, elegant solutions for each.
  • August: Continue to refine work on the "Seven Points", AI recruitment should at this point be taking shape as a superior replacement to old AI
  • September: Finish work on AI recruitment for GSOC. In all likelihood, continue work on AI even after GSOC is over, in order to implement the "purpose driven recruitment" changes into actual gameplay

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

  • Each unit created by an AI should receive a "purpose" attribute for later reference by the AI when issuing movement and combat commands.
  • Simple path-finding algorithms will be used to find likely routes to either hostile forces or capture targets. These algorithms will then build a data structure, likely a tree, containing the terrain types, which will then be reduced to averages and usable values in order to determine which unit types would work best. Performance may be a concern here, so I will refine my approach as needed. (I'm an adept Assembly programmer, so if need be I can reduce some algorithms to assembly code in order to promote optimization)
  • The recruitment stage will be subdivided into leader recruitment stages, using a similar system of CA values to determine which leader should produce in what order. This can take into account location of keep, gold distribution per leader, available unit types, etc.
  • A conservation mode flag will be added
  • In truth, I don't know much about the workings of the Wesnoth source to be confident enough to provide exact implementation details. I need more hands on experience first.

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

  • Primarily I would like to get to better acquaint myself with the workings of an open-source community project.
  • Improving my proficiency with C++ is always a bonus (I'm pretty well versed, but this is a great opportunity to stay in practice over the summer)
  • I also want to take this time to learn how to use Visual Studio. So many jobs out there require experience with it that I think it's high time I moved out of Eclipse and got some.

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

  • I already mostly plan to. You folks seem almost weirdly nice in the IRC dev channel.

5) Practical considerations

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

Git (used for all commits)

  • Yes. But only on a surface level

C++ (language used for all the normal source code)

  • I've been working with C style languages since I was 12. I've also taken 2 coursed in C++ and am quite comfortable in it.

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

  • Sadly, I have no experience here.

Python (optional, mainly used for tools)

  • Yes, I've built a web server in it.

build environments (eg cmake/scons)

  • Normally, I let my IDE handle building. So no.

WML (the wesnoth specific scenario language)

  • Alas, not.

Lua (used in combination with WML to create scenarios)

  • Yes, I have worked on over 3 projects which use LUA. This ranged from a stupid Zelda MMO a friend of mine was working on, to World of Warcraft plugins, to mods for various games. I do not, however, have any professional experience in LUA.

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

  • I am very familiar with Eclipse, but have decided to use Visual Studio for this project. As I mentioned before, I feel it's a good idea to learn the tool that so many job positions demand.

5.3) What programming languages are you fluent in?

  • Java, Python, C++, C, Assembly, LUA, HTML/CSS/PHP, SQL, WDL (Not related to Wesnoth), Ruby and Actionscript 3

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!

No problems at all here. I'll add my number in to the google application.

This page was last edited on 27 April 2013, at 18:10.