Difference between revisions of "Dragonofair0/GSoC2014 project idea"

From The Battle for Wesnoth Wiki
 
(One intermediate revision by the same user not shown)
Line 3: Line 3:
  
 
==ATTENTION==
 
==ATTENTION==
'''This page is a work in progress'''  However, my descriptions section is fairly complete.
+
'''This page is a work in progress'''  However, my descriptions and questionnaire sections are fairly complete.
  
 
==Description==
 
==Description==
 
<h4>Ben Kenawell - SDL2 Project Proposal</h4>
 
<h4>Ben Kenawell - SDL2 Project Proposal</h4>
 
'''Descriptive Summary of Proposal'''<br>
 
'''Descriptive Summary of Proposal'''<br>
I would like to work on moving the event and input handling from SDL 1.2 handling to SDL 2.0.   
+
I would like to work on moving the event and input handling from SDL 1.2 handling to SDL 2.0.  To accomplish this I will be considerate of the many differences between the versions including how text input is handled and the differences in event handling.  In performing both these tasks, I will be aware of a possible Android or iOS port (since I would love to see that myself), so that my code will perform as smoothly on mobile operating systems as it already does on desktop OSes.
 
 
To accomplish this I will be considerate of the many differences between the versions including  
 
 
 
how text input is handled and the differences in event handling.  In performing both these  
 
 
 
tasks, I will be aware of a possible Android or iOS port (since I would love to see that  
 
 
 
myself), so that my code will perform as smoothly on mobile operating systems as it already  
 
 
 
does on desktop OSes.
 
  
 
'''First Level Sections'''<br>
 
'''First Level Sections'''<br>
One major change in event handling is how the thought process behind the keyboard works.  The  
+
One major change in event handling is how the thought process behind the keyboard works.  The keyboard has become like a many buttoned controller, instead of text inputs.  This will be a major change I will work on, in order to make Battle for Wesnoth more keyboard-layout independent.  Mouse input will remain similar, except for the mousewheel which, with better support in SDL 2.0, will be more useful for scrolling around the screen.  This change may also help with two-finger scrolling across a screen where the comptuer reports this as a mousewheel, ultimately aiding in the creation of a mobile port.  Event handling will have similar ideas in mind.  While the actual code has not changed very much, those differences will be taken care of as well as a new style of event handler for certain important events, i.e. events that affect the state of the app (open/closed) will be monitored more closely so that progress may be saved.  I have taken this into consideration along with the other event handler changes in order to deal with the "garbage collector," which is the nightmare of mobile operating systems.  I fear that in the near future (at least with Windows machines), that the garbage collector's presence might make an appearance in desktops, and this measure would increase the longevity of my changes as well as more easily enable mobile ports.
 
 
keyboard has become like a many buttoned controller, instead of text inputs.  This will be a  
 
 
 
major change I will work on, in order to make Battle for Wesnoth more keyboard-layout  
 
 
 
independent.  Mouse input will remain similar, except for the mousewheel which, with better  
 
 
 
support in SDL 2.0, will be more useful for scrolling around the screen.  This change may also  
 
 
 
help with two-finger scrolling across a screen where the comptuer reports this as a mousewheel,  
 
 
 
ultimately aiding in the creation of a mobile port.  Event handling will have similar ideas in  
 
 
 
mind.  While the actual code has not changed very much, those differences will be taken care of  
 
 
 
as well as a new style of event handler for certain important events, i.e. events that affect  
 
 
 
the state of the app (open/closed) will be monitored more closely so that progress may be  
 
 
 
saved.  I have taken this into consideration along with the other event handler changes in  
 
 
 
order to deal with the "garbage collector," which is the nightmare of mobile operating systems.  
 
 
 
  I fear that in the near future (at least with Windows machines), that the garbage collector's  
 
 
 
presence might make an appearance in desktops, and this measure would increase the longevity of  
 
 
 
my changes as well as more easily enable mobile ports.
 
  
 
==IRC==
 
==IRC==
Line 57: Line 19:
 
<h4>1) Basics</h4>
 
<h4>1) Basics</h4>
 
1.1)Write a small introduction to yourself.
 
1.1)Write a small introduction to yourself.
My name is Ben Kenawell.  For fear of repeating myself when answering the next questions, I  
+
My name is Ben Kenawell.  For fear of repeating myself when answering the next questions, I love playing soccer and running track and field.  Now I may repeat some of this below but, my favorite pastime is by far coding, and so when I heard of Google Summer of Code, I instantly loved the idea.  My younger brother and I both play Wesnoth an obscene amount, so when I found this project it sounded perfect.  My interests range from software to hardware of computers, but my roots lay in computer software, and that is where I am strongest.
 
 
love playing soccer and running track and field.  Now I may repeat some of this below but, my  
 
 
 
favorite pastime is by far coding, and so when I heard of Google Summer of Code, I instantly  
 
 
 
loved the idea.  My younger brother and I both play Wesnoth an obscene amount, so when I found  
 
 
 
this project it sounded perfect.  My interests range from software to hardware of computers,  
 
 
 
but my roots lay in computer software, and that is where I am strongest.
 
  
 
1.2)State your preferred email address.
 
1.2)State your preferred email address.
Line 76: Line 28:
  
 
1.4)Why do you want to participate in summer of code?
 
1.4)Why do you want to participate in summer of code?
I would love to participate because I love coding my summers away and getting paid for it is a  
+
I would love to participate because I love coding my summers away and getting paid for it is a bonus.  Additionally, I would love to develop for a game that I play so often and love so much.
 
 
bonus.  Additionally, I would love to develop for a game that I play so often and love so much.
 
  
 
1.5)What are you studying, subject, level and school?
 
1.5)What are you studying, subject, level and school?
I will be studying computer engineering as a college freshman in the fall at either Rennsalaer  
+
I will be studying computer engineering as a college freshman in the fall at either Rennsalaer Polytechnic Institute in New York, or Penn State in Pennsylvania.  Currently I am a high school senior studying all I can about computers and programming in a school that admittedly lacks resources.  However, I have helped them push programming courses along and I am sure I understand the concepts better because of it.
 
 
Polytechnic Institute in New York, or Penn State in Pennsylvania.  Currently I am a high school  
 
 
 
senior studying all I can about computers and programming in a school that admittedly lacks  
 
 
 
resources.  However, I have helped them push programming courses along and I am sure I  
 
 
 
understand the concepts better because of it.
 
  
 
1.6)What country are you from, at what time are you most likely to be able to join IRC?
 
1.6)What country are you from, at what time are you most likely to be able to join IRC?
I am from the United States of America, in the Eastern Time Zone.  Before school ends, it would  
+
I am from the United States of America, in the Eastern Time Zone.  Before school ends, it would likely be in the evenings (7:00 or 8:00 EST).  During the summer, I don't have much of a schedule and could log on as needed.  Most likely I will work in the mornings and evenings, but my schedule is very flexible.
 
 
likely be in the evenings (7:00 or 8:00 EST).  During the summer, I don't have much of a  
 
 
 
schedule and could log on as needed.  Most likely I will work in the mornings and evenings, but  
 
 
 
my schedule is very flexible.
 
  
1.7)Do you have other commitments for the summer period ? Do you plan to take any vacations ?  
+
1.7)Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.
 
+
I do not have any commitments this summer and the only vacation I plan to take is for my cousin's wedding the second to third weeks in June.  I will also be gone for a day or two over the Fourth of July.
If yes, when.
 
I do not have any commitments this summer and the only vacation I plan to take is for my  
 
 
 
cousin's wedding the second to third weeks in June.  I will also be gone for a day or two over  
 
 
 
the Fourth of July.
 
  
 
<h4>2) Experience</h4>
 
<h4>2) Experience</h4>
 
2.1)What programs/software have you worked on before?
 
2.1)What programs/software have you worked on before?
The two languages I have programmed heavily in are Java with the Eclipse IDE, and C# with  
+
The two languages I have programmed heavily in are Java with the Eclipse IDE, and C# with Microsoft's Visual Studio IDE.  I have also programmed for the Arduino and I am somewhat fluent in C and C++.  I am not afraid to buckle down with a new language, and I love learning the intricacies of computer programming languages.  I also have some experience with Python and Processing (which is based off of Java)
 
 
Microsoft's Visual Studio IDE.  I have also programmed for the Arduino and I am somewhat fluent  
 
 
 
in C and C++.  I am not afraid to buckle down with a new language, and I love learning the  
 
 
 
intricacies of computer programming languages.  I also have some experience with Python and  
 
 
 
Processing (which is based off of Java)
 
 
 
2.2)Have you developed software in a team environment before? (As opposed to hacking on
 
 
 
something on your own)
 
I have.  The largest project I ave worked on has spanned the last two years and included me
 
 
 
working on a team to create, from scratch, a Windows tablet application.  It started as three
 
 
 
students working together and grew to 11 students with myself as the team leader.  I think I
 
 
 
prefer a team environment because it gives me someone who understands me to bounce ideas off
 
 
 
of, and I feel like it makes the process more efficient (to a certain degree) because two
 
  
people are working at once, getting twice the work done.
+
2.2)Have you developed software in a team environment before? (As opposed to hacking on something on your own)
 +
I have.  The largest project I ave worked on has spanned the last two years and included me working on a team to create, from scratch, a Windows tablet application.  It started as three students working together and grew to 11 students with myself as the team leader.  I think I prefer a team environment because it gives me someone who understands me to bounce ideas off of, and I feel like it makes the process more efficient (to a certain degree) because two people are working at once, getting twice the work done.
  
2.3)Have you participated to the Google Summer of Code before? As a mentor or a student? In  
+
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 never participated in the GSoC before, as this is my first opportunity as a high school senior.  However, I am thrilled by the possibility, and plan to work my hardest to finish with a solid project.
  
what project? Were you successful? If not, why?
+
2.4)Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.
I have never participated in the GSoC before, as this is my first opportunity as a high school
+
GSoC also marks my start into the world of open source development projects.  In years past, I have been working on school projects, some spanning years, in my attempt to further my knowledge of programming.  Now I feel I am knowledgeable enough to be a helpful developer, and I hope to learn even more through my experiences with open source.  I love everything about open source, starting with it being free and ending with me being to endlessly modify code just to prove I can.  In the past, I have done that to make sure I was truly understanding what I was learning, and now I am ready to apply this and contribute to open source code.
 
 
senior.  However, I am thrilled by the possibility, and plan to work my hardest to finish with
 
 
 
a solid project.
 
 
 
2.4)Are you already involved with any open source development projects? If yes, please describe  
 
 
 
the project and the scope of your involvement.
 
GSoC also marks my start into the world of open source development projects.  In years past, I  
 
 
 
have been working on school projects, some spanning years, in my attempt to further my  
 
 
 
knowledge of programming.  Now I feel I am knowledgeable enough to be a helpful developer, and  
 
 
 
I hope to learn even more through my experiences with open source.  I love everything about  
 
 
 
open source, starting with it being free and ending with me being to endlessly modify code just  
 
 
 
to prove I can.  In the past, I have done that to make sure I was truly understanding what I  
 
 
 
was learning, and now I am ready to apply this and contribute to open source code.
 
  
 
2.5)Gaming experience - Are you a gamer?
 
2.5)Gaming experience - Are you a gamer?
I am a gamer.  The two games I am torn between right now are Wesnoth and Elder Scrolls V:  
+
I am a gamer.  The two games I am torn between right now are Wesnoth and Elder Scrolls V: Skyrim.  Usually I end up playing Wesnoth because the strategy and tactics are much more intriguing.
 
 
Skyrim.  Usually I end up playing Wesnoth because the strategy and tactics are much more  
 
 
 
intriguing.
 
  
 
2.5.1)What type of gamer are you?
 
2.5.1)What type of gamer are you?
I would call myself an action/strategy gamer.  I love action games, especially like Assassin's  
+
I would call myself an action/strategy gamer.  I love action games, especially like Assassin's Creed and Skyrim where I can roam around the world and there is still plenty to do besides the main storyline.  But I also love stratgy games, which is how Wesnoth fits so perfectly into my life.  I have played other similar games like Fire Emblem, but none of them have the size and playablity that Wesnoth does.  I can play a ton of different campaigns a ton of different ways.
 
 
Creed and Skyrim where I can roam around the world and there is still plenty to do besides the  
 
 
 
main storyline.  But I also love stratgy games, which is how Wesnoth fits so perfectly into my  
 
 
 
life.  I have played other similar games like Fire Emblem, but none of them have the size and  
 
 
 
playablity that Wesnoth does.  I can play a ton of different campaigns a ton of different ways.
 
  
 
2.5.2)What type of games?
 
2.5.2)What type of games?
As described above, I love open worlds like Assassin's Creed or Skyrim, and to a lesser extent,  
+
As described above, I love open worlds like Assassin's Creed or Skyrim, and to a lesser extent, Pokemon.  I also love turn based strategy games (real time ones eventually stress me out too much, although I enjoy them too).  I have found Wesnoth to be a perfect fit for this hole in my life, although I also enjoy playing Fire Emblem and other similar titles.
 
 
Pokemon.  I also love turn based strategy games (real time ones eventually stress me out too  
 
 
 
much, although I enjoy them too).  I have found Wesnoth to be a perfect fit for this hole in my  
 
 
 
life, although I also enjoy playing Fire Emblem and other similar titles.
 
  
 
2.5.3)What type of opponents do you prefer?
 
2.5.3)What type of opponents do you prefer?
I prefer opponents that test my ability to win a scenario without seriously impeding the final  
+
I prefer opponents that test my ability to win a scenario without seriously impeding the final result.  While I enjoy seemingly impossible opponents, they often times make me too frustrated, to the point where I come back later to get a fresh look at the battlefield (this is how I handle programming a lot, but my trial and error there doesn't get units killed).  I hate losing units because I know that I won't every have that same soldier again, which makes me a very cautious player as well.  I prefer AIs most of the time so people don't get impatient when I implement new strategies.
 
 
result.  While I enjoy seemingly impossible opponents, they often times make me too frustrated,  
 
 
 
to the point where I come back later to get a fresh look at the battlefield (this is how I  
 
 
 
handle programming a lot, but my trial and error there doesn't get units killed).  I hate  
 
 
 
losing units because I know that I won't every have that same soldier again, which makes me a  
 
 
 
very cautious player as well.  I prefer AIs most of the time so people don't get impatient when  
 
 
 
I implement new strategies.
 
  
 
2.5.4)Are you more interested in story or gameplay?
 
2.5.4)Are you more interested in story or gameplay?
I would say I am more interested in gameplay.  While a good story keeps me involved, I do  
+
I would say I am more interested in gameplay.  While a good story keeps me involved, I do realize I am just playing a game.  Therefore, I tend to focus on <em>how</em> I'm accomplishing a task rather than <em>why</em> I am doing so.
 
 
realize I am just playing a game.  Therefore, I tend to focus on <em>how</em> I'm accomplishing  
 
 
 
a task rather than <em>why</em> I am doing so.
 
 
 
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.
 
If this hasn't been obvious from my other questions, I have played Wesnoth, and I love playing
 
 
 
Wesnoth.  I do not play it as often as I would like, so I end up playing single player
 
 
 
campaigns.  While I have had the game for maybe two years now, I have never gotten so involved
 
 
 
that I have expanded to multiplayer or finished many campaigns by myself.  While I love gaming,
 
  
I don't play video games very often.  However, I have been kept pretty up-to-date by my little  
+
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.
 +
If this hasn't been obvious from my other questions, I have played Wesnoth, and I love playing Wesnoth.  I do not play it as often as I would like, so I end up playing single player campaigns.  While I have had the game for maybe two years now, I have never gotten so involved that I have expanded to multiplayer or finished many campaigns by myself.  While I love gaming, I don't play video games very often.  However, I have been kept pretty up-to-date by my little brother who is obsessed with the game and loves telling me everything he does in Wesnoth from multiplayer campaigns to single player and everything.  Now that he knows I plan on working with this community over the summer, he has also been giving me many ideas on how the game could be improved.
  
brother who is obsessed with the game and loves telling me everything he does in Wesnoth from
+
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.
 
+
Sadly, I have never contributed any patches to Wesnoth, nor do I have commit access to the repository. I have begun to pursue some simple patches to become more familiar with Wesnoth code, but that is my extent of personally working with the Wesnoth code.
multiplayer campaigns to single player and everything.  Now that he knows I plan on working
 
 
 
with this community over the summer, he has also been giving me many ideas on how the game
 
 
 
could be improved.
 
 
 
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.
 
Sadly, I have never contributed any patches to Wesnoth, nor do I have commit access to the  
 
 
 
repository. I have begun to pursue some simple patches to become more familiar with Wesnoth  
 
 
 
code, but that is my extent of personally working with the Wesnoth code.
 
  
 
<h4>3) Communication Skills</h4>
 
<h4>3) Communication Skills</h4>
3.1)Though most of our developers are not native English speakers, English is the project's  
+
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 am a native English speaker and therefore have a high level of fluency in written (and spoken) English.
working language. Describe your fluency level in written English.
 
I am a native English speaker and therefore have a high level of fluency in written (and  
 
 
 
spoken) English.
 
  
 
3.2)What spoken languages are you fluent in?
 
3.2)What spoken languages are you fluent in?
 
I would say I am fluent in English and could muddle through some Spanish, maybe.
 
I would say I am fluent in English and could muddle through some Spanish, maybe.
  
3.3)Are you good at interacting with other players? Our developer community is friendly, but  
+
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 am very good at staying calm no matter what other players are saying or how much they yell.  For this reason, I think I am good at interacting with other players, even when they can get a bit rough.  I don't take a lot of what I hear to heart when things get out of hand, so it is hard to get under my skin.
the player community can be a bit rough.
 
I am very good at staying calm no matter what other players are saying or how much they yell.   
 
 
 
For this reason, I think I am good at interacting with other players, even when they can get a  
 
 
 
bit rough.  I don't take a lot of what I hear to heart when things get out of hand, so it is  
 
 
 
hard to get under my skin.
 
  
 
3.4)Do you give constructive advice?
 
3.4)Do you give constructive advice?
I believe that if it's not nice, don't say it at all.  Destructive criticism falls in that "not  
+
I believe that if it's not nice, don't say it at all.  Destructive criticism falls in that "not nice" category, so I do my best to only give constructive advice.  I think I can be tough on people, but never to tear them down.  We are all working towards a common goal, with all kinds of different skill levels.
 
 
nice" category, so I do my best to only give constructive advice.  I think I can be tough on  
 
 
 
people, but never to tear them down.  We are all working towards a common goal, with all kinds  
 
 
 
of different skill levels.
 
  
 
3.5)Do you receive advice well?
 
3.5)Do you receive advice well?
Going along with my previous statement, I try to apply the advice I get, in hopes it will make  
+
Going along with my previous statement, I try to apply the advice I get, in hopes it will make me a better programmer.  The internet is great for when I get stuck on a problem, but only other people can give me the kind of advice I need to grow as a coder.
 
 
me a better programmer.  The internet is great for when I get stuck on a problem, but only  
 
 
 
other people can give me the kind of advice I need to grow as a coder.
 
  
 
3.6)Are you good at sorting useful criticisms from useless ones?
 
3.6)Are you good at sorting useful criticisms from useless ones?
Sorting useful criticisms from useless ones is something of a skill.  Some people make it  
+
Sorting useful criticisms from useless ones is something of a skill.  Some people make it obvious, because their comments won't help me learn more about programming.  The real trick is sorting the off-track advice from the right advice.  Sometimes this takes a little research on each tangent, but I am confident in my ability to sort the useful from the useless.  And I know I have the irc and multiple other sources if I need additional advice.
 
 
obvious, because their comments won't help me learn more about programming.  The real trick is  
 
  
sorting the off-track advice from the right advice.  Sometimes this takes a little research on
+
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 am very autonomous when it comes to my work, until I get stuck on a problem.  If I have an idea of where I need to go, but I'm not sure of the implementation, I would code a "proof of concept" that I could modify endlessly without messing up the main program.  Even if the code gets thrown out at the end of the day, chances are I've learned something from it.  When I am stuck on a problem, or I am not sure which direction to start, that is when I start a discussion on what plan of attack might be best, from what I think is feasible.  While I might not get too in depth about one particular solution, at the end of my discussions I usually have a pretty god idea of what I need.
each tangent, but I am confident in my ability to sort the useful from the useless.  And I know
 
 
 
I have the irc and multiple other sources if I need additional advice.
 
 
 
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 am very autonomous when it comes to my work, until I get stuck on a problem.  If I have an  
 
 
 
idea of where I need to go, but I'm not sure of the implementation, I would code a "proof of  
 
 
 
concept" that I could modify endlessly without messing up the main program.  Even if the code  
 
 
 
gets thrown out at the end of the day, chances are I've learned something from it.  When I am  
 
 
 
stuck on a problem, or I am not sure which direction to start, that is when I start a  
 
 
 
discussion on what plan of attack might be best, from what I think is feasible.  While I might  
 
 
 
not get too in depth about one particular solution, at the end of my discussions I usually have  
 
 
 
a pretty god idea of what I need.
 
  
 
<h4>4) Project</h4>
 
<h4>4) Project</h4>
4.1)Did you select a project from our list? If that is the case, what project did you select?  
+
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 did choose a project from the list:  The SDL 2.0 project, specifically dealing with how events are handled.  I am especially interested in how this could lead to a mobile version of the game, which I think would mean users would play more often.  Even in its most basic form though, and after reading over the migration guide, 2.0 sounds like a huge step forward for Wesnoth in both keeping it up-to-date and performing at its highest level.
What do you want to especially concentrate on?
 
I did choose a project from the list:  The SDL 2.0 project, specifically dealing with how  
 
 
 
events are handled.  I am especially interested in how this could lead to a mobile version of  
 
 
 
the game, which I think would mean users would play more often.  Even in its most basic form  
 
 
 
though, and after reading over the migration guide, 2.0 sounds like a huge step forward for  
 
 
 
Wesnoth in both keeping it up-to-date and performing at its highest level.
 
  
 
4.2)If you have invented your own project, please describe the project and the scope.
 
4.2)If you have invented your own project, please describe the project and the scope.
I did not invent my own project.  But don't be surprised if I spend some time of the side  
+
I did not invent my own project.  But don't be surprised if I spend some time of the side adding features that would allow the game to work on mobile, if I find the time to do so.  These changes would directly link back to my main project, and would just be small so they didn't interfere with my main objectives.
 
 
adding features that would allow the game to work on mobile, if I find the time to do so.   
 
 
 
These changes would directly link back to my main project, and would just be small so they  
 
 
 
didn't interfere with my main objectives.
 
  
 
4.3)Why did you choose this project?
 
4.3)Why did you choose this project?
I chose this project because I want Wesnoth to stay relevant, and how events are handled is  
+
I chose this project because I want Wesnoth to stay relevant, and how events are handled is paramount to this goal.  Additionally, I think this project effects the response time of the program, and I believe I can handle this problem efficiently.  On a side, mobile computing crosses my mind, because a lot of the changes from 1.2 to 2.0 are the inclusion of this functionality.
  
paramount to this goal.  Additionally, I think this project effects the response time of the
+
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".
 
+
This timeline will be subject to change as summer gets closer, but all the major events are already on here.  The only other things I would be doing over the summer would be maybe a quick visit to the college I'm attending once or twice. Timeline:
program, and I believe I can handle this problem efficiently.  On a side, mobile computing
 
 
 
crosses my mind, because a lot of the changes from 1.2 to 2.0 are the inclusion of this
 
 
 
functionality.
 
 
 
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".
 
This timeline will be subject to change as summer gets closer, but all the major events are  
 
 
 
already on here.  The only other things I would be doing over the summer would be maybe a quick  
 
 
 
visit to the college I'm attending once or twice. Timeline:
 
 
'''TODO:''' Exact timeline
 
'''TODO:''' Exact timeline
  
 
4.5)Include as much technical detail about your implementation as you can
 
4.5)Include as much technical detail about your implementation as you can
This section too, you will see more and more of as the March 21 deadline continues to approach.  
+
This section too, you will see more and more of as the March 21 deadline continues to approach.  Currently though, I need to change how all the event methods work and especially how the key board is handled since 2.0 changes the keyboard into a 101 button controller instead of actual letters.  There are definitely advantages to this, such as making it more layout-independent, but it means I need to change how input is received.  This change also means that I must change how all text is received (through a different method).  The benefit of this is that it could make the game able to support many more languages much easier.
 
 
  Currently though, I need to change how all the event methods work and especially how the key  
 
 
 
board is handled since 2.0 changes the keyboard into a 101 button controller instead of actual  
 
 
 
letters.  There are definitely advantages to this, such as making it more layout-independent,  
 
 
 
but it means I need to change how input is received.  This change also means that I must change  
 
 
 
how all text is received (through a different method).  The benefit of this is that it could  
 
 
 
make the game able to support many more languages much easier.
 
 
'''TODO:''' Add additional technical details
 
'''TODO:''' Add additional technical details
  
 
4.6)What do you expect to gain from this project?
 
4.6)What do you expect to gain from this project?
Monetarily, I hope to gain $5500 dollars.  But I only write that first because it seems so  
+
Monetarily, I hope to gain $5500 dollars.  But I only write that first because it seems so unusual in open source development.  What I am really looking forward to gaining is acceptance into a community of knowledgeable and clever programmers as well as the experience of programming.  My knowledge so far has already opened many doors, and I can't imagine how many more doors it could open as I gain even more experience.
 
 
unusual in open source development.  What I am really looking forward to gaining is acceptance  
 
 
 
into a community of knowledgeable and clever programmers as well as the experience of  
 
 
 
programming.  My knowledge so far has already opened many doors, and I can't imagine how many  
 
 
 
more doors it could open as I gain even more experience.
 
  
 
4.7)What would make you stay in the Wesnoth community after the conclusion of SOC?
 
4.7)What would make you stay in the Wesnoth community after the conclusion of SOC?
After SOC, the game itself would make me want to stay in the Wesnoth community.  I do love the  
+
After SOC, the game itself would make me want to stay in the Wesnoth community.  I do love the game, and the people I have meant have been phenomenal.  Being a large open source development project, it would be great to continue work on, even after I stopped being paid for my help.  The experience here I'm sure is invaluable, and to say I worked on my favorite video game is like giving a little kid candy.
 
 
game, and the people I have meant have been phenomenal.  Being a large open source development  
 
 
 
project, it would be great to continue work on, even after I stopped being paid for my help.   
 
 
 
The experience here I'm sure is invaluable, and to say I worked on my favorite video game is  
 
 
 
like giving a little kid candy.
 
  
 
<h4>5) Practical considerations</h4>
 
<h4>5) Practical considerations</h4>
 
5.1)Are you familiar with any of the following tools or languages?
 
5.1)Are you familiar with any of the following tools or languages?
I am somewhat familiar with Git and C++.  I am confident in my Python.  But I admit I have  
+
I am somewhat familiar with Git and C++.  I am confident in my Python.  But I admit I have never worked much with STL, Boost, SDL, the build environments, WML, or Lua.  After looking at the SDL code, I think I have a grasp of it, and I will certainly look at the other pieces I might need for my project.
 
 
never worked much with STL, Boost, SDL, the build environments, WML, or Lua.  After looking at  
 
 
 
the SDL code, I think I have a grasp of it, and I will certainly look at the other pieces I  
 
 
 
might need for my project.
 
  
 
5.2)Which tools do you normally use for development? Why do you use them?
 
5.2)Which tools do you normally use for development? Why do you use them?
I usually work with Java and the Android SDK through the Eclipse IDE because I love programming  
+
I usually work with Java and the Android SDK through the Eclipse IDE because I love programming for Android (it was the platform I first learned how to program, to a certain degree), so it has been given a special place in my heart.  Also, Java is the only language taught at my school and therefore is the only I am most familiar with.  After looking over C and C++ documentation, I plan on making the jump and getting serious with those soon, and I have started a little bit, if not very much yet.
 
 
for Android (it was the platform I first learned how to program, to a certain degree), so it  
 
 
 
has been given a special place in my heart.  Also, Java is the only language taught at my  
 
 
 
school and therefore is the only I am most familiar with.  After looking over C and C++  
 
 
 
documentation, I plan on making the jump and getting serious with those soon, and I have  
 
 
 
started a little bit, if not very much yet.
 
  
 
5.3)What programming languages are you fluent in?
 
5.3)What programming languages are you fluent in?
I am fluent in Java, C#, and Python.  I can work my way through C and C++ code (I have done a  
+
I am fluent in Java, C#, and Python.  I can work my way through C and C++ code (I have done a lot of this with programming an Arduino), but I have not tried to write and compile very much of my own work.  In my experience, there isn't much of a barrier here because they are so close to C#, which is also close to Java.  The only outlier here is really Python, which seems to bear a resemblance to other types of programming languages, making me a somewhat rounded student.
 
 
lot of this with programming an Arduino), but I have not tried to write and compile very much  
 
 
 
of my own work.  In my experience, there isn't much of a barrier here because they are so close  
 
 
 
to C#, which is also close to Java.  The only outlier here is really Python, which seems to  
 
 
 
bear a resemblance to other types of programming languages, making me a somewhat rounded  
 
 
 
student.
 
 
 
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 feel comfortable talking to my mentor on the telephone or over the internet.  When meetings
 
 
 
do not work out, this is how I have them, so I already have some experience here.  I will
 
 
 
submit my phone number via the google application!
 
[[SoC_Information_for_Google#Does your organization have an application template you would like
 
  
to see students use?|SoC Information for Google]]
+
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 feel comfortable talking to my mentor on the telephone or over the internet.  When meetings do not work out, this is how I have them, so I already have some experience here.  I will submit my phone number via the google application!
 +
[[SoC_Information_for_Google#Does your organization have an application template you would like to see students use?|SoC Information for Google]]

Latest revision as of 03:25, 15 March 2014


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



This is a Summer of Code 2014 student page


ATTENTION

This page is a work in progress However, my descriptions and questionnaire sections are fairly complete.

Description

Ben Kenawell - SDL2 Project Proposal

Descriptive Summary of Proposal
I would like to work on moving the event and input handling from SDL 1.2 handling to SDL 2.0. To accomplish this I will be considerate of the many differences between the versions including how text input is handled and the differences in event handling. In performing both these tasks, I will be aware of a possible Android or iOS port (since I would love to see that myself), so that my code will perform as smoothly on mobile operating systems as it already does on desktop OSes.

First Level Sections
One major change in event handling is how the thought process behind the keyboard works. The keyboard has become like a many buttoned controller, instead of text inputs. This will be a major change I will work on, in order to make Battle for Wesnoth more keyboard-layout independent. Mouse input will remain similar, except for the mousewheel which, with better support in SDL 2.0, will be more useful for scrolling around the screen. This change may also help with two-finger scrolling across a screen where the comptuer reports this as a mousewheel, ultimately aiding in the creation of a mobile port. Event handling will have similar ideas in mind. While the actual code has not changed very much, those differences will be taken care of as well as a new style of event handler for certain important events, i.e. events that affect the state of the app (open/closed) will be monitored more closely so that progress may be saved. I have taken this into consideration along with the other event handler changes in order to deal with the "garbage collector," which is the nightmare of mobile operating systems. I fear that in the near future (at least with Windows machines), that the garbage collector's presence might make an appearance in desktops, and this measure would increase the longevity of my changes as well as more easily enable mobile ports.

IRC

dragonofair0

Questionnaire

1) Basics

1.1)Write a small introduction to yourself. My name is Ben Kenawell. For fear of repeating myself when answering the next questions, I love playing soccer and running track and field. Now I may repeat some of this below but, my favorite pastime is by far coding, and so when I heard of Google Summer of Code, I instantly loved the idea. My younger brother and I both play Wesnoth an obscene amount, so when I found this project it sounded perfect. My interests range from software to hardware of computers, but my roots lay in computer software, and that is where I am strongest.

1.2)State your preferred email address. You can reach me at bjk25cc3@gmail.com

1.3)If you have chosen a nick for IRC and Wesnoth forums, what is it? My chosen nickname is Dragonofair0 for both the wesnoth forums and irc.

1.4)Why do you want to participate in summer of code? I would love to participate because I love coding my summers away and getting paid for it is a bonus. Additionally, I would love to develop for a game that I play so often and love so much.

1.5)What are you studying, subject, level and school? I will be studying computer engineering as a college freshman in the fall at either Rennsalaer Polytechnic Institute in New York, or Penn State in Pennsylvania. Currently I am a high school senior studying all I can about computers and programming in a school that admittedly lacks resources. However, I have helped them push programming courses along and I am sure I understand the concepts better because of it.

1.6)What country are you from, at what time are you most likely to be able to join IRC? I am from the United States of America, in the Eastern Time Zone. Before school ends, it would likely be in the evenings (7:00 or 8:00 EST). During the summer, I don't have much of a schedule and could log on as needed. Most likely I will work in the mornings and evenings, but my schedule is very flexible.

1.7)Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when. I do not have any commitments this summer and the only vacation I plan to take is for my cousin's wedding the second to third weeks in June. I will also be gone for a day or two over the Fourth of July.

2) Experience

2.1)What programs/software have you worked on before? The two languages I have programmed heavily in are Java with the Eclipse IDE, and C# with Microsoft's Visual Studio IDE. I have also programmed for the Arduino and I am somewhat fluent in C and C++. I am not afraid to buckle down with a new language, and I love learning the intricacies of computer programming languages. I also have some experience with Python and Processing (which is based off of Java)

2.2)Have you developed software in a team environment before? (As opposed to hacking on something on your own) I have. The largest project I ave worked on has spanned the last two years and included me working on a team to create, from scratch, a Windows tablet application. It started as three students working together and grew to 11 students with myself as the team leader. I think I prefer a team environment because it gives me someone who understands me to bounce ideas off of, and I feel like it makes the process more efficient (to a certain degree) because two people are working at once, getting twice the work done.

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 never participated in the GSoC before, as this is my first opportunity as a high school senior. However, I am thrilled by the possibility, and plan to work my hardest to finish with a solid project.

2.4)Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement. GSoC also marks my start into the world of open source development projects. In years past, I have been working on school projects, some spanning years, in my attempt to further my knowledge of programming. Now I feel I am knowledgeable enough to be a helpful developer, and I hope to learn even more through my experiences with open source. I love everything about open source, starting with it being free and ending with me being to endlessly modify code just to prove I can. In the past, I have done that to make sure I was truly understanding what I was learning, and now I am ready to apply this and contribute to open source code.

2.5)Gaming experience - Are you a gamer? I am a gamer. The two games I am torn between right now are Wesnoth and Elder Scrolls V: Skyrim. Usually I end up playing Wesnoth because the strategy and tactics are much more intriguing.

2.5.1)What type of gamer are you? I would call myself an action/strategy gamer. I love action games, especially like Assassin's Creed and Skyrim where I can roam around the world and there is still plenty to do besides the main storyline. But I also love stratgy games, which is how Wesnoth fits so perfectly into my life. I have played other similar games like Fire Emblem, but none of them have the size and playablity that Wesnoth does. I can play a ton of different campaigns a ton of different ways.

2.5.2)What type of games? As described above, I love open worlds like Assassin's Creed or Skyrim, and to a lesser extent, Pokemon. I also love turn based strategy games (real time ones eventually stress me out too much, although I enjoy them too). I have found Wesnoth to be a perfect fit for this hole in my life, although I also enjoy playing Fire Emblem and other similar titles.

2.5.3)What type of opponents do you prefer? I prefer opponents that test my ability to win a scenario without seriously impeding the final result. While I enjoy seemingly impossible opponents, they often times make me too frustrated, to the point where I come back later to get a fresh look at the battlefield (this is how I handle programming a lot, but my trial and error there doesn't get units killed). I hate losing units because I know that I won't every have that same soldier again, which makes me a very cautious player as well. I prefer AIs most of the time so people don't get impatient when I implement new strategies.

2.5.4)Are you more interested in story or gameplay? I would say I am more interested in gameplay. While a good story keeps me involved, I do realize I am just playing a game. Therefore, I tend to focus on how I'm accomplishing a task rather than why I am doing so.

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. If this hasn't been obvious from my other questions, I have played Wesnoth, and I love playing Wesnoth. I do not play it as often as I would like, so I end up playing single player campaigns. While I have had the game for maybe two years now, I have never gotten so involved that I have expanded to multiplayer or finished many campaigns by myself. While I love gaming, I don't play video games very often. However, I have been kept pretty up-to-date by my little brother who is obsessed with the game and loves telling me everything he does in Wesnoth from multiplayer campaigns to single player and everything. Now that he knows I plan on working with this community over the summer, he has also been giving me many ideas on how the game could be improved.

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. Sadly, I have never contributed any patches to Wesnoth, nor do I have commit access to the repository. I have begun to pursue some simple patches to become more familiar with Wesnoth code, but that is my extent of personally working with the Wesnoth code.

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 am a native English speaker and therefore have a high level of fluency in written (and spoken) English.

3.2)What spoken languages are you fluent in? I would say I am fluent in English and could muddle through some Spanish, maybe.

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 am very good at staying calm no matter what other players are saying or how much they yell. For this reason, I think I am good at interacting with other players, even when they can get a bit rough. I don't take a lot of what I hear to heart when things get out of hand, so it is hard to get under my skin.

3.4)Do you give constructive advice? I believe that if it's not nice, don't say it at all. Destructive criticism falls in that "not nice" category, so I do my best to only give constructive advice. I think I can be tough on people, but never to tear them down. We are all working towards a common goal, with all kinds of different skill levels.

3.5)Do you receive advice well? Going along with my previous statement, I try to apply the advice I get, in hopes it will make me a better programmer. The internet is great for when I get stuck on a problem, but only other people can give me the kind of advice I need to grow as a coder.

3.6)Are you good at sorting useful criticisms from useless ones? Sorting useful criticisms from useless ones is something of a skill. Some people make it obvious, because their comments won't help me learn more about programming. The real trick is sorting the off-track advice from the right advice. Sometimes this takes a little research on each tangent, but I am confident in my ability to sort the useful from the useless. And I know I have the irc and multiple other sources if I need additional advice.

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 am very autonomous when it comes to my work, until I get stuck on a problem. If I have an idea of where I need to go, but I'm not sure of the implementation, I would code a "proof of concept" that I could modify endlessly without messing up the main program. Even if the code gets thrown out at the end of the day, chances are I've learned something from it. When I am stuck on a problem, or I am not sure which direction to start, that is when I start a discussion on what plan of attack might be best, from what I think is feasible. While I might not get too in depth about one particular solution, at the end of my discussions I usually have a pretty god idea of what I need.

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 did choose a project from the list: The SDL 2.0 project, specifically dealing with how events are handled. I am especially interested in how this could lead to a mobile version of the game, which I think would mean users would play more often. Even in its most basic form though, and after reading over the migration guide, 2.0 sounds like a huge step forward for Wesnoth in both keeping it up-to-date and performing at its highest level.

4.2)If you have invented your own project, please describe the project and the scope. I did not invent my own project. But don't be surprised if I spend some time of the side adding features that would allow the game to work on mobile, if I find the time to do so. These changes would directly link back to my main project, and would just be small so they didn't interfere with my main objectives.

4.3)Why did you choose this project? I chose this project because I want Wesnoth to stay relevant, and how events are handled is paramount to this goal. Additionally, I think this project effects the response time of the program, and I believe I can handle this problem efficiently. On a side, mobile computing crosses my mind, because a lot of the changes from 1.2 to 2.0 are the inclusion of this functionality.

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". This timeline will be subject to change as summer gets closer, but all the major events are already on here. The only other things I would be doing over the summer would be maybe a quick visit to the college I'm attending once or twice. Timeline: TODO: Exact timeline

4.5)Include as much technical detail about your implementation as you can This section too, you will see more and more of as the March 21 deadline continues to approach. Currently though, I need to change how all the event methods work and especially how the key board is handled since 2.0 changes the keyboard into a 101 button controller instead of actual letters. There are definitely advantages to this, such as making it more layout-independent, but it means I need to change how input is received. This change also means that I must change how all text is received (through a different method). The benefit of this is that it could make the game able to support many more languages much easier. TODO: Add additional technical details

4.6)What do you expect to gain from this project? Monetarily, I hope to gain $5500 dollars. But I only write that first because it seems so unusual in open source development. What I am really looking forward to gaining is acceptance into a community of knowledgeable and clever programmers as well as the experience of programming. My knowledge so far has already opened many doors, and I can't imagine how many more doors it could open as I gain even more experience.

4.7)What would make you stay in the Wesnoth community after the conclusion of SOC? After SOC, the game itself would make me want to stay in the Wesnoth community. I do love the game, and the people I have meant have been phenomenal. Being a large open source development project, it would be great to continue work on, even after I stopped being paid for my help. The experience here I'm sure is invaluable, and to say I worked on my favorite video game is like giving a little kid candy.

5) Practical considerations

5.1)Are you familiar with any of the following tools or languages? I am somewhat familiar with Git and C++. I am confident in my Python. But I admit I have never worked much with STL, Boost, SDL, the build environments, WML, or Lua. After looking at the SDL code, I think I have a grasp of it, and I will certainly look at the other pieces I might need for my project.

5.2)Which tools do you normally use for development? Why do you use them? I usually work with Java and the Android SDK through the Eclipse IDE because I love programming for Android (it was the platform I first learned how to program, to a certain degree), so it has been given a special place in my heart. Also, Java is the only language taught at my school and therefore is the only I am most familiar with. After looking over C and C++ documentation, I plan on making the jump and getting serious with those soon, and I have started a little bit, if not very much yet.

5.3)What programming languages are you fluent in? I am fluent in Java, C#, and Python. I can work my way through C and C++ code (I have done a lot of this with programming an Arduino), but I have not tried to write and compile very much of my own work. In my experience, there isn't much of a barrier here because they are so close to C#, which is also close to Java. The only outlier here is really Python, which seems to bear a resemblance to other types of programming languages, making me a somewhat rounded student.

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 feel comfortable talking to my mentor on the telephone or over the internet. When meetings do not work out, this is how I have them, so I already have some experience here. I will submit my phone number via the google application! SoC Information for Google

This page was last edited on 15 March 2014, at 03:25.