|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|
Nicholas Colclasure - Improve wesnoth's engine to allow better transitions between scenarios
I will clean up the code which dictates scenario transition and alter it to allow for more sophisticated transitions.
Submitted to google
1.1) Write a small introduction to yourself.
I'm Nicholas Colclasure, a senior in high school learning programming.
1.2) State your preferred email address.
I'll put this in the GSoC app.
1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?
1.4) Why do you want to participate in summer of code?
I would like to get some experience with coding projects and working with others.
1.5) What are you studying, subject, level and school?
I'm in high school, but I plan to study Computer Science when I get to college.
1.6) What country are you from, at what time are you most likely to be able to join IRC?
I'm from the USA, and I'll most likely be able to get on IRC from 10:00 to 17:00 PST
1.7) Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.
As of yet, I have no vacation plans or other committments which could interfere with my work.
2.1) What programs/software have you worked on before?
I've made some relativley small programs in C, and Objective-C, and completed an intermediate Python course which involved some small programs.
2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)
I have not.
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 not participated in Google Summer of Code previously.
2.4) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.
2.5) Gaming experience - Are you a gamer?
2.5.1) What type of gamer are you?
I game in my free time, and I enjoy challenging myself.
2.5.2) What type of games?
I play a variety of genres, including RTS, FPS, platformers, and some SHMUPs.
2.5.3) What type of opponents do you prefer?
I enjoy a challenge in games I play.
2.5.4) Are you more interested in story or gameplay?
I mostly look for 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 played it a couple of times but I haven't really gotten a chance to play through it yet. I've played mostly single player thus far, but after I complete some campaigns I'll likely move on to multiplayer.
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.
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.
English is my first language, and so I am quite fluent.
3.2) What spoken languages are you fluent in?
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'm relatively good at keeping a cool head and taking other's perspectives.
3.4) Do you give constructive advice?
3.5) Do you receive advice well?
I'm pretty good at taking advice and acting on it.
3.6) Are you good at sorting useful criticisms from useless ones?
Yes, it's quite clear to me when a criticism is useful.
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 haven't done much group development in the past, but I would say that I am relatively autonomous in what development I have done. I am fine with working on a problem as I work out what I want to do, as I find it can help my planning.
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 selected the "Improve wesnoth's engine to allow better transitions between scenarios" project, and I will focus on cleaning up the code.
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 chose this because it seemed like a good starting place, and it should allow me get a feel for the codebase without tackling too much for me to handle.
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 will be in school for the first few days of the coding period, until June 2nd, and so won't be able to start working on the project until then. Other than that, I have no other summer plans.
Before the beginning of the coding time, I'll use what free time I have to familiarize myself with the codebase and get more of an idea of what exactly I will need to change. During the first month, I will work on rewriting the code so that proper practices are adhered to and make sure the code is consistent and clean, making sure to take in to account the future updates to transitions and make those as easy as possible. Next, probably late June/early July, I will work on adding the requested features, such as the ability to change recall lists or difficulty between scenarios. During this stage I will see wether reverse compatibility is feasible, and if so code with that in mind. Then, late July to early August I will make sure reverse compatibility is sound if possible, or work on save conversion if not possible. If the format is too drastically different, I will just work on stabilizing the new version.
4.5) Include as much technical detail about your implementation as you can
I plan to mostly re-implement most of the code, given the reported messy state of it currently. I will to my best to ensure that the transition code is as modular as possible, and properly isolated from the rest of the code, to hopefully ensure that further changes to scenario transition code will be quickly and easily implemented.
4.6) What do you expect to gain from this project?
I hope to gain experience working with a large group of people on a project. I also hope to get a foot into the open source community, and hopefully some long lasting connections.
4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?
I would love to stay and work more with the community if I find that I can be useful to it.
5) Practical considerations
5.1) Are you familiar with any of the following tools or languages?
- Subversion (used for all commits)
Not much experience.
- C++ (language used for all the normal source code)
I've read some, and know C, but haven't written any.
- STL, Boost, Sdl (C++ libraries used by Wesnoth)
- Python (optional, mainly used for tools)
Yes, I've taken classes and done a number of small, mostly toy projects.
- build environments (eg cmake/scons)\
Have not used these.
- WML (the wesnoth specific scenario language)
Haven't tried it out yet.
- Lua (used in combination with WML to create scenarios)
I've read some about Lua, but haven't had much of a chance to use it yet.
5.2) Which tools do you normally use for development? Why do you use them? I typically use Xcode for Objective-C and C development, as that is the standard environment on OS X. For python, and other languages I have toyed with, Textmate.
5.3) What programming languages are you fluent in? Python, C, Objective C.
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 will include my number in my GSoC application, and would be fine talking over telephone with my mentor.
In general, students should be as verbose as possible in their answers and feel free to elaborate.