User:Champ/Questionaire

From The Battle for Wesnoth Wiki
Revision as of 09:12, 8 April 2011 by Timotei21 (talk | contribs) (since this is *not* a proposal, strip the template so it won't be included in main page, but just with the link from the proposal)

Contents

Questionnaire

Basics

Write a small introduction to yourself.

My name is Min Xiang. I am a 22 year old student from the P.R.China, my major is computer science.
I'm fond of algorithms and data structure and I'm good at team work. As a proving myself, I participated ACM-ICPC(International Collegiate Programming Contest) in the year 2008~2009 and got 34th place in ACM-ICPC World Final 2009.
I like playing computer games as well as programming.

State your preferred email address.

cff29546 (at) gmail.com

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

  • irc: champ
  • irc alternate: MinXiang
  • Wesnoth forums: champ
  • gna.org: champ

Why do you want to participate in summer of code?

It is a good opportunity to gain experience in real open source project, sience I've only done works for fun.
Collaborating and making friends bring me lots of pleasure.
Contributing to the game project which I love makes me satisfied.
It is much more fun dealing with code than any other jobs in summer.

What are you studying, subject, level and school?

I'm a postgraduate with Computer Science major at Beijing University of Posts and Telecommunications. I'm in my first year of postgraduate study.

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

I live in Beijing, China(GMT+8). I am most probably available on IRC between 2:00 and 15:00 UTC. My working schedule is somewhat flexible. Small adjust can be made.

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

My research in school lab may expand into summer period. By then, I may need to stay at lab on weekday morning, but i'll be rarely assigned work by school.
Additionally, I'll take TOEFL test at 23th July.

Experience

What programs/software have you worked on before?

  • A variety of programming projects for high school and college classes.
  • Over 500 algorithmic problems solved to prepair for ACM-ICPC World Final in 2009.
  • Capslock Command - A quick command daemon for Windows. It works like this: At any time, you hold down the capslock type command, then release capslock will trigger it. It was developed in Windows using MinGW/GCC.
  • Task Timer - A UDP based network accessible auto timing command executor. Implemented in Windows using MinGW/GCC and Winsock.
  • A script that can auto login our school wifi access auth, which is https based. Write with python.

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

Yes, in programming contests, I used to work in a team of 3 people and share one computer through the entire contest and get a very good rank.

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. This is the first time I participate Google Summer of Code.

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

No. I'm not involved with any open source projects currently.

Gaming experience - Are you a gamer?

Yes, I enjoy game.

What type of gamer are you?

I love games with creations, even they may be tiny in size. I love games with interesting points that make me feel worthy to spend time on it. Everything like new ways of display game, new battle mode or new AI system make the NPC smarter can attract me.

What type of games?

I play many kinds of games. I love stratergy games most, especially turn-based stratergy games (SLG), such as 'Heroes of Might and Magic', 'Fire Emblem' and many Board Games in real world.

What type of opponents do you prefer?

I prefer opponents that give moves which I can't predict, no matter it is human or computer.

Are you more interested in story or gameplay?

It is a hard choice. Best games offers both good gameplay and brilliant story line. Actually gameplay is more important, since many famous traditional Board Games(like Minesweeper, Blackjack and Go) does not have any story line. I do think the game should remove the story line if a story line is not that good.

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

Yes. I've been played it since I switched to linux January this year.
I just played some campaign in single player mode.

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 havn't worked with wesnoth before.

Communication skills

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 not a native English speaker, but I think my written English is alright.

What spoken languages are you fluent in?

Chinese (native) English (average)

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

I don't clear about wesnoth players community. But I have experience interacting with other game players. I'll try my best to do it when necessary.

Do you give constructive advice?

Yes. I pointed out and fixed the most pitfalls in our team during the time I was prepairing for the ACM-ICPC 2008~2009.

Do you receive advice well?

I think I do. I'm glad to receive helpful advices.

Are you good at sorting useful criticisms from useless ones?

Yes, I think I can.

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 always try to make everythink clear before I start coding. But I do these making clear via trial and error also discuss, so I would like to minimize these thrown away code. But if the risk is worthy taken I'll just take try.

Project

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: I selected [Lua AI improvement] project from your ideas list. I would like to focus on ensuring the safety of Lua AI scripts that in mulit-player games.

Why did you choose this project?

  • Do something useful for the game I like.
  • Making Lua script interpretor just getting more knowledge about basic principles about core system's architecture.
  • I wanna try a rights management system. Rights management seems a problem anywhere have, especially in this case many data is partial shared.

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 - May 23th: Study and Research the Lua AI script system and C++ interpretor architecture. Assess difficult of means of adding rights management.
    • Milestone: By May 23th, know scripting system scheme and possible ways of adjustments.
  • May 23th - June 15th: Add basic access management prototype design.
    • Milestone: By June 15th , Basic access control function test.
  • June 15th - July 15th: Refine and fix bugs of access control.
    • Milestone: By July 15th (Midterm), Access control test.
  • July 15th - August 15th: Adaptive changes for access control and additional task (Virtual Resources) design.
  • August 15 - August 26: Refine and test.
    • Milestone: By August 26th (Final deadline) Access control test pass, and Virtual Resources functioning.

Include as much technical detail about your implementation as you can

  • Use both user access control and token access control to manage player based resources and terrain based resources.
    Each resources have a owner(player or the game), some resources require tokens. lua may only read resources it owned or it belongs to a token owned.
    when a Lua script is submitted to interpretor, use submittor as user. check every lua accessed data.
  • Check the accessiblity at the C++ object level, make the check transparent to Lua.
  • Provide a data structure (which can be a dupication of existing one) to allow Lua to make moves virtually or virtually hypothesis so that AI script can evaluate certain cases.

What do you expect to gain from this project?

A better unserstanding of creating and maintaining Script Interpretation System. Get start in real opensource projects.

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

My interested in the project, possible improvment point. And the friendship I might make in the summer. Also the amount of my free time.

Practical considerations

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

  • Subversion (used for all commits)
    Yes, basic usage.
  • C++ (language used for all the normal source code)
    Yes, I have been working with C and C++ for 4 years for different works and programming contests.
  • STL, Boost, Sdl (C++ libraries used by Wesnoth)
    Only know about STL, used for algorithm and data structure template.
  • Python (optional, mainly used for tools)
    Yes, I use Python as a common purpose scripting tool.
  • build environments (eg cmake/autotools/scons)
    I do not have any experience with cmake, autotools, or scons.
  • WML (the wesnoth specific scenario language)
    No, I'm new to WML.
  • Lua (used in combination with WML to create scenarios)
    No, but willing to learn.

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

I used to use Dev-C++ and Code::blocks in Windows. I generally use vim for all development in Ubuntu currently.

What programming languages are you fluent in?

C, C++, Python.

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 am willing to communicate with a mentor by phone, if IRC or mail fail.