<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Grantwu</id>
	<title>The Battle for Wesnoth Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Grantwu"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/Special:Contributions/Grantwu"/>
	<updated>2026-04-26T09:06:15Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29781</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29781"/>
		<updated>2009-04-03T15:45:45Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: /* Technical Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I submitted one patch from the easycoding section.  It was the only one about the savegame system so I did what it said.  &lt;br /&gt;
&lt;br /&gt;
[https://gna.org/patch/?1150 Patch#1]&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war in strategy games.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I've played a good amount of Wesnoth now.  I definitely enjoy both single player and multiplayer but my favorite way to play is cooperatively with a friend against AI opponents.  I'm definitely not a veteran Wesnoth player but I've probably wasted time where I should've been working on my proposal and such by playing the game a little too much.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Filter Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.  Finally, the class where I created my first game emphasized the important of UML and language-independent representation of code.  I feel like I can use what I learned from that class on this project.&lt;br /&gt;
&lt;br /&gt;
===Timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|March 25th - April 29th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|These are the remaining days of the school semester.  I plan on using this time to familiarize myself with everything Wesnoth.  Code, the community, everything.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|April 29th - May 23rd&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Begin working with my mentor on the overall design of how to change the save file structure.  I should be familiar enough with how everything works by this point to keep things moving, however, this is the most important part of the process so I a significant amount of time should be devoted to design.  UML diagrams and such will be drawn up during this time.  I'll still probably be getting fully up to speed with some of the deeper more intricate aspects of the source code.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|May 24rd - July 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Coding!  If this hasn't already begun it will at this point in time.  Actual programming of the new save system will begin now.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 10th - July 13th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Midterm reviews are due at this point so I think my mentor and I will take a look back at everything we've done.  Check for giant gaping design holes, etc.  Basically the midterm will be a good time to assess everything that's happened so far and see if there needs to be any change of direction with the original plan.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 13th - August 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|This is it!  The last month of work.  I'll be working frantically these days to finish up the new, reorganized, restructured, and more unified save system.  Hopefully things will be done before the 10th so that some serious testing can happen before the final code is submitted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Technical Details===&lt;br /&gt;
There is a lot of redundant info floating around in different places with the current savegame system.  There is also some code that takes away the encapsulation of some pretty vital objects.  Specifically, the team object found in team.cpp contains nearly all of the vital information on a player.  Despite this, the gamestatus.cpp file contains a player_info struct.  This struct basically duplicates all the info already found in team.cpp.  There's really no reason for the player_info struct to exist.  &lt;br /&gt;
&lt;br /&gt;
When it comes to encapsulation, the console_adapter.cpp file contains methods that have write access over data vital to save files when it really shouldn't.  Many of console_adapter.cpp's functions can be redone and should probably be placed in gamestatus.cpp.&lt;br /&gt;
&lt;br /&gt;
For the game_state and gamestatus classes, the gamestatus class takes a game_state object as in argument for several of its methods and it also for some reason is the method that reads in the player data even though game_state is the class that writes to a save file.  This seems unusual and should probably be changed with either a merger of the two classes or some reorganization of who reads and writes what data.&lt;br /&gt;
&lt;br /&gt;
Some of the redundant information between the [player] and [replay_start]-&amp;gt;[player] tags has been removed in the patch I submitted.&lt;br /&gt;
&lt;br /&gt;
My vision for the format of the savegame file is more or less summed up from the paragraphs above.  I want to reduce the redundant information so that savegame info is read and written to one location.  This will also make it potentially easier for savegame files to hold new info such as persistent kill information for a unit (I think this would be very cool, unless of course its already there and I just wasn't looking hard enough).&lt;br /&gt;
&lt;br /&gt;
This is just a brief overview of what I've learned so far from looking at the code and speaking with other Wesnoth devs.  I'll definitely have more to change after some more time with everything.&lt;br /&gt;
&lt;br /&gt;
===My Own Personal Gain===&lt;br /&gt;
I hope to become involved in an active open source project and community while gaining experience on working with a video game.  I'm pretty sure Wesnoth will provide both.&lt;br /&gt;
&lt;br /&gt;
===Continued Involvement===&lt;br /&gt;
I feel as though after reading the documentation and just lurking around the IRC channel and forums that the Wesnoth community is a very healthy one.  My continued involvement with the project is directly related to the activity of the community as a whole.  Also, getting the multiplayer campaigns fully functional is something I'm very interested in and will probably stick around and try to help push this initiative.&lt;br /&gt;
&lt;br /&gt;
==Practical Considerations==&lt;br /&gt;
===Languages===&lt;br /&gt;
All the required Computer Science courses taught through the College of Engineering here use C++.  I'm very familiar and comfortable with writing code in it and learning with C++.  I've built Wesnoth enough times with scons I've looked around some of the scripts so I think I'm pretty comfortable with it now.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
I write my code in either gedit or emacs.  I use gedit because its a convenient and modern editor while I use emacs when working on my schools remote computing environments.  I use g++ to compile my C++ code and I haven't needed to use anything else as of yet.&lt;br /&gt;
&lt;br /&gt;
===Fluent Programming Languages===&lt;br /&gt;
I am most familiar with C++.  I've spent two years working with it pretty extensively now.  I also feel that one of the courses I'm taking now is covering some of the most vital aspects of the language and object oriented programming in general.  The first part of the course was review but now we're going over abstract data types and the very important features that OO programming provides (from what I read, Wesnoth's lead dev is very passionate about encapsulation).&lt;br /&gt;
&lt;br /&gt;
===Fluent Spoken Languages===&lt;br /&gt;
I am fluent in English and spoken Mandarin Chinese.  I also know a bit of German.&lt;br /&gt;
&lt;br /&gt;
===Waking Hours===&lt;br /&gt;
I'm usually up from late morning to early morning.  10AM - 3AM are most likely.  During the summer I can be on IRC at almost all times though I like to keep an active and healthy lifestyle so I'll have to stray away from the keyboard at times.&lt;br /&gt;
&lt;br /&gt;
===Phone Calls===&lt;br /&gt;
I'd actually prefer to communicate on the phone.  Makes for a stronger relationship.  Unfortunately, computer science lends itself to digital communication due to the technical nature of the subject.&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29777</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29777"/>
		<updated>2009-04-03T13:57:57Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: /* Played Wesnoth */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I submitted one patch from the easycoding section.  It was the only one about the savegame system so I did what it said.  &lt;br /&gt;
&lt;br /&gt;
[https://gna.org/patch/?1150 Patch#1]&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war in strategy games.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I've played a good amount of Wesnoth now.  I definitely enjoy both single player and multiplayer but my favorite way to play is cooperatively with a friend against AI opponents.  I'm definitely not a veteran Wesnoth player but I've probably wasted time where I should've been working on my proposal and such by playing the game a little too much.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Filter Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.  Finally, the class where I created my first game emphasized the important of UML and language-independent representation of code.  I feel like I can use what I learned from that class on this project.&lt;br /&gt;
&lt;br /&gt;
===Timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|March 25th - April 29th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|These are the remaining days of the school semester.  I plan on using this time to familiarize myself with everything Wesnoth.  Code, the community, everything.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|April 29th - May 23rd&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Begin working with my mentor on the overall design of how to change the save file structure.  I should be familiar enough with how everything works by this point to keep things moving, however, this is the most important part of the process so I a significant amount of time should be devoted to design.  UML diagrams and such will be drawn up during this time.  I'll still probably be getting fully up to speed with some of the deeper more intricate aspects of the source code.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|May 24rd - July 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Coding!  If this hasn't already begun it will at this point in time.  Actual programming of the new save system will begin now.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 10th - July 13th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Midterm reviews are due at this point so I think my mentor and I will take a look back at everything we've done.  Check for giant gaping design holes, etc.  Basically the midterm will be a good time to assess everything that's happened so far and see if there needs to be any change of direction with the original plan.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 13th - August 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|This is it!  The last month of work.  I'll be working frantically these days to finish up the new, reorganized, restructured, and more unified save system.  Hopefully things will be done before the 10th so that some serious testing can happen before the final code is submitted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Technical Details===&lt;br /&gt;
There is a lot of redundant info floating around in different places with the current savegame system.  There is also some code that takes away the encapsulation of some pretty vital objects.  Specifically, the team object found in team.cpp contains nearly all of the vital information on a player.  Despite this, the gamestatus.cpp file contains a player_info struct.  This struct basically duplicates all the info already found in team.cpp.  There's really no reason for the player_info struct to exist.  &lt;br /&gt;
&lt;br /&gt;
When it comes to encapsulation, the console_adapter.cpp file contains methods that have write access over data vital to save files when it really shouldn't.  Many of console_adapter.cpp's functions can be redone and should probably be placed in gamestatus.cpp.&lt;br /&gt;
&lt;br /&gt;
For the game_state and gamestatus classes, the gamestatus class takes a game_state object as in argument for several of its methods and it also for some reason is the method that reads in the player data even though game_state is the class that writes to a save file.  This seems unusual and should probably be changed with either a merger of the two classes or some reorganization of who reads and writes what data.&lt;br /&gt;
&lt;br /&gt;
Some of the redundant information between the [player] and [snapshot] and [replay_start]-&amp;gt;[player] tags has been removed in the patch I submitted.  But in addition to this I realy wonder if the [player] tag in the [replay_start] section is really necessary.  I think maybe the starting information for a player should just be written to and read from the [snapshot] section since that's where this information is always read from after the start of a mission anyway.  Also, both [snapshot] and [replay_start] sections contain a lot of similar data.  This is like the player information idea where the game only uses [replay_start] for the beginning of missions and then uses information found in [snapshot] after that.  I feel like this is unnecessary and the replay_start section could be potentially removed.&lt;br /&gt;
&lt;br /&gt;
My vision for the format of the savegame file is more or less summed up from the paragraph above.  I want to reduce the redundant information so that savegame info is read and written to one location.  This will also make it potentially easier for savegame files to hold new info such as persistent kill information for a unit (I think this would be very cool, unless of course its already there and I just wasn't looking hard enough).&lt;br /&gt;
&lt;br /&gt;
This is just a brief overview of what I've learned so far from looking at the code and speaking with other Wesnoth devs.  I'll definitely have more to change after some more time with everything.&lt;br /&gt;
&lt;br /&gt;
===My Own Personal Gain===&lt;br /&gt;
I hope to become involved in an active open source project and community while gaining experience on working with a video game.  I'm pretty sure Wesnoth will provide both.&lt;br /&gt;
&lt;br /&gt;
===Continued Involvement===&lt;br /&gt;
I feel as though after reading the documentation and just lurking around the IRC channel and forums that the Wesnoth community is a very healthy one.  My continued involvement with the project is directly related to the activity of the community as a whole.  Also, getting the multiplayer campaigns fully functional is something I'm very interested in and will probably stick around and try to help push this initiative.&lt;br /&gt;
&lt;br /&gt;
==Practical Considerations==&lt;br /&gt;
===Languages===&lt;br /&gt;
All the required Computer Science courses taught through the College of Engineering here use C++.  I'm very familiar and comfortable with writing code in it and learning with C++.  I've built Wesnoth enough times with scons I've looked around some of the scripts so I think I'm pretty comfortable with it now.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
I write my code in either gedit or emacs.  I use gedit because its a convenient and modern editor while I use emacs when working on my schools remote computing environments.  I use g++ to compile my C++ code and I haven't needed to use anything else as of yet.&lt;br /&gt;
&lt;br /&gt;
===Fluent Programming Languages===&lt;br /&gt;
I am most familiar with C++.  I've spent two years working with it pretty extensively now.  I also feel that one of the courses I'm taking now is covering some of the most vital aspects of the language and object oriented programming in general.  The first part of the course was review but now we're going over abstract data types and the very important features that OO programming provides (from what I read, Wesnoth's lead dev is very passionate about encapsulation).&lt;br /&gt;
&lt;br /&gt;
===Fluent Spoken Languages===&lt;br /&gt;
I am fluent in English and spoken Mandarin Chinese.  I also know a bit of German.&lt;br /&gt;
&lt;br /&gt;
===Waking Hours===&lt;br /&gt;
I'm usually up from late morning to early morning.  10AM - 3AM are most likely.  During the summer I can be on IRC at almost all times though I like to keep an active and healthy lifestyle so I'll have to stray away from the keyboard at times.&lt;br /&gt;
&lt;br /&gt;
===Phone Calls===&lt;br /&gt;
I'd actually prefer to communicate on the phone.  Makes for a stronger relationship.  Unfortunately, computer science lends itself to digital communication due to the technical nature of the subject.&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29776</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29776"/>
		<updated>2009-04-03T13:55:09Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: /* Continued Involvement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I submitted one patch from the easycoding section.  It was the only one about the savegame system so I did what it said.  &lt;br /&gt;
&lt;br /&gt;
[https://gna.org/patch/?1150 Patch#1]&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war in strategy games.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I have played a little bit.  I didn't know about it until I saw it on GSoC's list of projects.  I plan on sinking my teeth into it more and if worse comes to worst at least I was introduced to a good game.  For the moment I'm going to try to get better at the game through single player and eventually make the dive into multiplayer.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Filter Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.  Finally, the class where I created my first game emphasized the important of UML and language-independent representation of code.  I feel like I can use what I learned from that class on this project.&lt;br /&gt;
&lt;br /&gt;
===Timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|March 25th - April 29th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|These are the remaining days of the school semester.  I plan on using this time to familiarize myself with everything Wesnoth.  Code, the community, everything.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|April 29th - May 23rd&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Begin working with my mentor on the overall design of how to change the save file structure.  I should be familiar enough with how everything works by this point to keep things moving, however, this is the most important part of the process so I a significant amount of time should be devoted to design.  UML diagrams and such will be drawn up during this time.  I'll still probably be getting fully up to speed with some of the deeper more intricate aspects of the source code.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|May 24rd - July 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Coding!  If this hasn't already begun it will at this point in time.  Actual programming of the new save system will begin now.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 10th - July 13th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Midterm reviews are due at this point so I think my mentor and I will take a look back at everything we've done.  Check for giant gaping design holes, etc.  Basically the midterm will be a good time to assess everything that's happened so far and see if there needs to be any change of direction with the original plan.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 13th - August 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|This is it!  The last month of work.  I'll be working frantically these days to finish up the new, reorganized, restructured, and more unified save system.  Hopefully things will be done before the 10th so that some serious testing can happen before the final code is submitted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Technical Details===&lt;br /&gt;
There is a lot of redundant info floating around in different places with the current savegame system.  There is also some code that takes away the encapsulation of some pretty vital objects.  Specifically, the team object found in team.cpp contains nearly all of the vital information on a player.  Despite this, the gamestatus.cpp file contains a player_info struct.  This struct basically duplicates all the info already found in team.cpp.  There's really no reason for the player_info struct to exist.  &lt;br /&gt;
&lt;br /&gt;
When it comes to encapsulation, the console_adapter.cpp file contains methods that have write access over data vital to save files when it really shouldn't.  Many of console_adapter.cpp's functions can be redone and should probably be placed in gamestatus.cpp.&lt;br /&gt;
&lt;br /&gt;
For the game_state and gamestatus classes, the gamestatus class takes a game_state object as in argument for several of its methods and it also for some reason is the method that reads in the player data even though game_state is the class that writes to a save file.  This seems unusual and should probably be changed with either a merger of the two classes or some reorganization of who reads and writes what data.&lt;br /&gt;
&lt;br /&gt;
Some of the redundant information between the [player] and [snapshot] and [replay_start]-&amp;gt;[player] tags has been removed in the patch I submitted.  But in addition to this I realy wonder if the [player] tag in the [replay_start] section is really necessary.  I think maybe the starting information for a player should just be written to and read from the [snapshot] section since that's where this information is always read from after the start of a mission anyway.  Also, both [snapshot] and [replay_start] sections contain a lot of similar data.  This is like the player information idea where the game only uses [replay_start] for the beginning of missions and then uses information found in [snapshot] after that.  I feel like this is unnecessary and the replay_start section could be potentially removed.&lt;br /&gt;
&lt;br /&gt;
My vision for the format of the savegame file is more or less summed up from the paragraph above.  I want to reduce the redundant information so that savegame info is read and written to one location.  This will also make it potentially easier for savegame files to hold new info such as persistent kill information for a unit (I think this would be very cool, unless of course its already there and I just wasn't looking hard enough).&lt;br /&gt;
&lt;br /&gt;
This is just a brief overview of what I've learned so far from looking at the code and speaking with other Wesnoth devs.  I'll definitely have more to change after some more time with everything.&lt;br /&gt;
&lt;br /&gt;
===My Own Personal Gain===&lt;br /&gt;
I hope to become involved in an active open source project and community while gaining experience on working with a video game.  I'm pretty sure Wesnoth will provide both.&lt;br /&gt;
&lt;br /&gt;
===Continued Involvement===&lt;br /&gt;
I feel as though after reading the documentation and just lurking around the IRC channel and forums that the Wesnoth community is a very healthy one.  My continued involvement with the project is directly related to the activity of the community as a whole.  Also, getting the multiplayer campaigns fully functional is something I'm very interested in and will probably stick around and try to help push this initiative.&lt;br /&gt;
&lt;br /&gt;
==Practical Considerations==&lt;br /&gt;
===Languages===&lt;br /&gt;
All the required Computer Science courses taught through the College of Engineering here use C++.  I'm very familiar and comfortable with writing code in it and learning with C++.  I've built Wesnoth enough times with scons I've looked around some of the scripts so I think I'm pretty comfortable with it now.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
I write my code in either gedit or emacs.  I use gedit because its a convenient and modern editor while I use emacs when working on my schools remote computing environments.  I use g++ to compile my C++ code and I haven't needed to use anything else as of yet.&lt;br /&gt;
&lt;br /&gt;
===Fluent Programming Languages===&lt;br /&gt;
I am most familiar with C++.  I've spent two years working with it pretty extensively now.  I also feel that one of the courses I'm taking now is covering some of the most vital aspects of the language and object oriented programming in general.  The first part of the course was review but now we're going over abstract data types and the very important features that OO programming provides (from what I read, Wesnoth's lead dev is very passionate about encapsulation).&lt;br /&gt;
&lt;br /&gt;
===Fluent Spoken Languages===&lt;br /&gt;
I am fluent in English and spoken Mandarin Chinese.  I also know a bit of German.&lt;br /&gt;
&lt;br /&gt;
===Waking Hours===&lt;br /&gt;
I'm usually up from late morning to early morning.  10AM - 3AM are most likely.  During the summer I can be on IRC at almost all times though I like to keep an active and healthy lifestyle so I'll have to stray away from the keyboard at times.&lt;br /&gt;
&lt;br /&gt;
===Phone Calls===&lt;br /&gt;
I'd actually prefer to communicate on the phone.  Makes for a stronger relationship.  Unfortunately, computer science lends itself to digital communication due to the technical nature of the subject.&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29775</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29775"/>
		<updated>2009-04-03T13:54:15Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: /* Technical Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I submitted one patch from the easycoding section.  It was the only one about the savegame system so I did what it said.  &lt;br /&gt;
&lt;br /&gt;
[https://gna.org/patch/?1150 Patch#1]&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war in strategy games.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I have played a little bit.  I didn't know about it until I saw it on GSoC's list of projects.  I plan on sinking my teeth into it more and if worse comes to worst at least I was introduced to a good game.  For the moment I'm going to try to get better at the game through single player and eventually make the dive into multiplayer.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Filter Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.  Finally, the class where I created my first game emphasized the important of UML and language-independent representation of code.  I feel like I can use what I learned from that class on this project.&lt;br /&gt;
&lt;br /&gt;
===Timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|March 25th - April 29th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|These are the remaining days of the school semester.  I plan on using this time to familiarize myself with everything Wesnoth.  Code, the community, everything.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|April 29th - May 23rd&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Begin working with my mentor on the overall design of how to change the save file structure.  I should be familiar enough with how everything works by this point to keep things moving, however, this is the most important part of the process so I a significant amount of time should be devoted to design.  UML diagrams and such will be drawn up during this time.  I'll still probably be getting fully up to speed with some of the deeper more intricate aspects of the source code.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|May 24rd - July 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Coding!  If this hasn't already begun it will at this point in time.  Actual programming of the new save system will begin now.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 10th - July 13th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Midterm reviews are due at this point so I think my mentor and I will take a look back at everything we've done.  Check for giant gaping design holes, etc.  Basically the midterm will be a good time to assess everything that's happened so far and see if there needs to be any change of direction with the original plan.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 13th - August 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|This is it!  The last month of work.  I'll be working frantically these days to finish up the new, reorganized, restructured, and more unified save system.  Hopefully things will be done before the 10th so that some serious testing can happen before the final code is submitted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Technical Details===&lt;br /&gt;
There is a lot of redundant info floating around in different places with the current savegame system.  There is also some code that takes away the encapsulation of some pretty vital objects.  Specifically, the team object found in team.cpp contains nearly all of the vital information on a player.  Despite this, the gamestatus.cpp file contains a player_info struct.  This struct basically duplicates all the info already found in team.cpp.  There's really no reason for the player_info struct to exist.  &lt;br /&gt;
&lt;br /&gt;
When it comes to encapsulation, the console_adapter.cpp file contains methods that have write access over data vital to save files when it really shouldn't.  Many of console_adapter.cpp's functions can be redone and should probably be placed in gamestatus.cpp.&lt;br /&gt;
&lt;br /&gt;
For the game_state and gamestatus classes, the gamestatus class takes a game_state object as in argument for several of its methods and it also for some reason is the method that reads in the player data even though game_state is the class that writes to a save file.  This seems unusual and should probably be changed with either a merger of the two classes or some reorganization of who reads and writes what data.&lt;br /&gt;
&lt;br /&gt;
Some of the redundant information between the [player] and [snapshot] and [replay_start]-&amp;gt;[player] tags has been removed in the patch I submitted.  But in addition to this I realy wonder if the [player] tag in the [replay_start] section is really necessary.  I think maybe the starting information for a player should just be written to and read from the [snapshot] section since that's where this information is always read from after the start of a mission anyway.  Also, both [snapshot] and [replay_start] sections contain a lot of similar data.  This is like the player information idea where the game only uses [replay_start] for the beginning of missions and then uses information found in [snapshot] after that.  I feel like this is unnecessary and the replay_start section could be potentially removed.&lt;br /&gt;
&lt;br /&gt;
My vision for the format of the savegame file is more or less summed up from the paragraph above.  I want to reduce the redundant information so that savegame info is read and written to one location.  This will also make it potentially easier for savegame files to hold new info such as persistent kill information for a unit (I think this would be very cool, unless of course its already there and I just wasn't looking hard enough).&lt;br /&gt;
&lt;br /&gt;
This is just a brief overview of what I've learned so far from looking at the code and speaking with other Wesnoth devs.  I'll definitely have more to change after some more time with everything.&lt;br /&gt;
&lt;br /&gt;
===My Own Personal Gain===&lt;br /&gt;
I hope to become involved in an active open source project and community while gaining experience on working with a video game.  I'm pretty sure Wesnoth will provide both.&lt;br /&gt;
&lt;br /&gt;
===Continued Involvement===&lt;br /&gt;
I feel as though after reading the documentation and just lurking around the IRC channel and forums that the Wesnoth community is a very healthy one.  My continued involvement with the project is directly related to the activity of the community as a whole.&lt;br /&gt;
&lt;br /&gt;
==Practical Considerations==&lt;br /&gt;
===Languages===&lt;br /&gt;
All the required Computer Science courses taught through the College of Engineering here use C++.  I'm very familiar and comfortable with writing code in it and learning with C++.  I've built Wesnoth enough times with scons I've looked around some of the scripts so I think I'm pretty comfortable with it now.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
I write my code in either gedit or emacs.  I use gedit because its a convenient and modern editor while I use emacs when working on my schools remote computing environments.  I use g++ to compile my C++ code and I haven't needed to use anything else as of yet.&lt;br /&gt;
&lt;br /&gt;
===Fluent Programming Languages===&lt;br /&gt;
I am most familiar with C++.  I've spent two years working with it pretty extensively now.  I also feel that one of the courses I'm taking now is covering some of the most vital aspects of the language and object oriented programming in general.  The first part of the course was review but now we're going over abstract data types and the very important features that OO programming provides (from what I read, Wesnoth's lead dev is very passionate about encapsulation).&lt;br /&gt;
&lt;br /&gt;
===Fluent Spoken Languages===&lt;br /&gt;
I am fluent in English and spoken Mandarin Chinese.  I also know a bit of German.&lt;br /&gt;
&lt;br /&gt;
===Waking Hours===&lt;br /&gt;
I'm usually up from late morning to early morning.  10AM - 3AM are most likely.  During the summer I can be on IRC at almost all times though I like to keep an active and healthy lifestyle so I'll have to stray away from the keyboard at times.&lt;br /&gt;
&lt;br /&gt;
===Phone Calls===&lt;br /&gt;
I'd actually prefer to communicate on the phone.  Makes for a stronger relationship.  Unfortunately, computer science lends itself to digital communication due to the technical nature of the subject.&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29720</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29720"/>
		<updated>2009-04-03T02:26:47Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: /* Technical Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I submitted one patch from the easycoding section.  It was the only one about the savegame system so I did what it said.  &lt;br /&gt;
&lt;br /&gt;
[https://gna.org/patch/?1150 Patch#1]&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war in strategy games.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I have played a little bit.  I didn't know about it until I saw it on GSoC's list of projects.  I plan on sinking my teeth into it more and if worse comes to worst at least I was introduced to a good game.  For the moment I'm going to try to get better at the game through single player and eventually make the dive into multiplayer.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Filter Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.  Finally, the class where I created my first game emphasized the important of UML and language-independent representation of code.  I feel like I can use what I learned from that class on this project.&lt;br /&gt;
&lt;br /&gt;
===Timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|March 25th - April 29th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|These are the remaining days of the school semester.  I plan on using this time to familiarize myself with everything Wesnoth.  Code, the community, everything.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|April 29th - May 23rd&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Begin working with my mentor on the overall design of how to change the save file structure.  I should be familiar enough with how everything works by this point to keep things moving, however, this is the most important part of the process so I a significant amount of time should be devoted to design.  UML diagrams and such will be drawn up during this time.  I'll still probably be getting fully up to speed with some of the deeper more intricate aspects of the source code.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|May 24rd - July 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Coding!  If this hasn't already begun it will at this point in time.  Actual programming of the new save system will begin now.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 10th - July 13th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Midterm reviews are due at this point so I think my mentor and I will take a look back at everything we've done.  Check for giant gaping design holes, etc.  Basically the midterm will be a good time to assess everything that's happened so far and see if there needs to be any change of direction with the original plan.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 13th - August 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|This is it!  The last month of work.  I'll be working frantically these days to finish up the new, reorganized, restructured, and more unified save system.  Hopefully things will be done before the 10th so that some serious testing can happen before the final code is submitted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Technical Details===&lt;br /&gt;
There is a lot of redundant info floating around in different places with the current savegame system.  There is also some code that takes away the encapsulation of some pretty vital objects.  Specifically, the team object found in team.cpp contains nearly all of the vital information on a player.  Despite this, the gamestatus.cpp file contains a player_info struct.  This struct basically duplicates all the info already found in team.cpp.  There's really no reason fro the player_info struct to exist.  When it comes to encapsulation, the console_adapter.cpp file contains methods that have write access over data vital to save files when it really shouldn't.  &lt;br /&gt;
&lt;br /&gt;
This is just a brief overview of what I've learned so far from looking at the code and speaking with other Wesnoth devs.  I'll definitely have more to change after some more time with everything.&lt;br /&gt;
&lt;br /&gt;
===My Own Personal Gain===&lt;br /&gt;
I hope to become involved in an active open source project and community while gaining experience on working with a video game.  I'm pretty sure Wesnoth will provide both.&lt;br /&gt;
&lt;br /&gt;
===Continued Involvement===&lt;br /&gt;
I feel as though after reading the documentation and just lurking around the IRC channel and forums that the Wesnoth community is a very healthy one.  My continued involvement with the project is directly related to the activity of the community as a whole.&lt;br /&gt;
&lt;br /&gt;
==Practical Considerations==&lt;br /&gt;
===Languages===&lt;br /&gt;
All the required Computer Science courses taught through the College of Engineering here use C++.  I'm very familiar and comfortable with writing code in it and learning with C++.  I've built Wesnoth enough times with scons I've looked around some of the scripts so I think I'm pretty comfortable with it now.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
I write my code in either gedit or emacs.  I use gedit because its a convenient and modern editor while I use emacs when working on my schools remote computing environments.  I use g++ to compile my C++ code and I haven't needed to use anything else as of yet.&lt;br /&gt;
&lt;br /&gt;
===Fluent Programming Languages===&lt;br /&gt;
I am most familiar with C++.  I've spent two years working with it pretty extensively now.  I also feel that one of the courses I'm taking now is covering some of the most vital aspects of the language and object oriented programming in general.  The first part of the course was review but now we're going over abstract data types and the very important features that OO programming provides (from what I read, Wesnoth's lead dev is very passionate about encapsulation).&lt;br /&gt;
&lt;br /&gt;
===Fluent Spoken Languages===&lt;br /&gt;
I am fluent in English and spoken Mandarin Chinese.  I also know a bit of German.&lt;br /&gt;
&lt;br /&gt;
===Waking Hours===&lt;br /&gt;
I'm usually up from late morning to early morning.  10AM - 3AM are most likely.  During the summer I can be on IRC at almost all times though I like to keep an active and healthy lifestyle so I'll have to stray away from the keyboard at times.&lt;br /&gt;
&lt;br /&gt;
===Phone Calls===&lt;br /&gt;
I'd actually prefer to communicate on the phone.  Makes for a stronger relationship.  Unfortunately, computer science lends itself to digital communication due to the technical nature of the subject.&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29719</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29719"/>
		<updated>2009-04-03T02:26:09Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: /* Technical Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I submitted one patch from the easycoding section.  It was the only one about the savegame system so I did what it said.  &lt;br /&gt;
&lt;br /&gt;
[https://gna.org/patch/?1150 Patch#1]&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war in strategy games.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I have played a little bit.  I didn't know about it until I saw it on GSoC's list of projects.  I plan on sinking my teeth into it more and if worse comes to worst at least I was introduced to a good game.  For the moment I'm going to try to get better at the game through single player and eventually make the dive into multiplayer.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Filter Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.  Finally, the class where I created my first game emphasized the important of UML and language-independent representation of code.  I feel like I can use what I learned from that class on this project.&lt;br /&gt;
&lt;br /&gt;
===Timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|March 25th - April 29th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|These are the remaining days of the school semester.  I plan on using this time to familiarize myself with everything Wesnoth.  Code, the community, everything.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|April 29th - May 23rd&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Begin working with my mentor on the overall design of how to change the save file structure.  I should be familiar enough with how everything works by this point to keep things moving, however, this is the most important part of the process so I a significant amount of time should be devoted to design.  UML diagrams and such will be drawn up during this time.  I'll still probably be getting fully up to speed with some of the deeper more intricate aspects of the source code.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|May 24rd - July 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Coding!  If this hasn't already begun it will at this point in time.  Actual programming of the new save system will begin now.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 10th - July 13th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Midterm reviews are due at this point so I think my mentor and I will take a look back at everything we've done.  Check for giant gaping design holes, etc.  Basically the midterm will be a good time to assess everything that's happened so far and see if there needs to be any change of direction with the original plan.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 13th - August 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|This is it!  The last month of work.  I'll be working frantically these days to finish up the new, reorganized, restructured, and more unified save system.  Hopefully things will be done before the 10th so that some serious testing can happen before the final code is submitted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Technical Details===&lt;br /&gt;
There is a lot of redundant info floating around in different places with the current savegame system.  There is also some code that takes away the encapsulation of some pretty vital objects.  Specifically, the team object found in team.cpp contains nearly all of the vital information on a player.  Despite this, the gamestatus.cpp file contains a player_info struct.  This struct basically duplicates all the info already found in team.cpp.  There's really no reason fro the player_info struct to exist.  When it comes to encapsulation, the console_adapter.cpp file contains methods that have write access over data vital to save files when it really shouldn't.  &lt;br /&gt;
&lt;br /&gt;
This is just a brief overview of what I've learned so far from looking at the code and speaking with other Wesnoth devs.&lt;br /&gt;
&lt;br /&gt;
===My Own Personal Gain===&lt;br /&gt;
I hope to become involved in an active open source project and community while gaining experience on working with a video game.  I'm pretty sure Wesnoth will provide both.&lt;br /&gt;
&lt;br /&gt;
===Continued Involvement===&lt;br /&gt;
I feel as though after reading the documentation and just lurking around the IRC channel and forums that the Wesnoth community is a very healthy one.  My continued involvement with the project is directly related to the activity of the community as a whole.&lt;br /&gt;
&lt;br /&gt;
==Practical Considerations==&lt;br /&gt;
===Languages===&lt;br /&gt;
All the required Computer Science courses taught through the College of Engineering here use C++.  I'm very familiar and comfortable with writing code in it and learning with C++.  I've built Wesnoth enough times with scons I've looked around some of the scripts so I think I'm pretty comfortable with it now.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
I write my code in either gedit or emacs.  I use gedit because its a convenient and modern editor while I use emacs when working on my schools remote computing environments.  I use g++ to compile my C++ code and I haven't needed to use anything else as of yet.&lt;br /&gt;
&lt;br /&gt;
===Fluent Programming Languages===&lt;br /&gt;
I am most familiar with C++.  I've spent two years working with it pretty extensively now.  I also feel that one of the courses I'm taking now is covering some of the most vital aspects of the language and object oriented programming in general.  The first part of the course was review but now we're going over abstract data types and the very important features that OO programming provides (from what I read, Wesnoth's lead dev is very passionate about encapsulation).&lt;br /&gt;
&lt;br /&gt;
===Fluent Spoken Languages===&lt;br /&gt;
I am fluent in English and spoken Mandarin Chinese.  I also know a bit of German.&lt;br /&gt;
&lt;br /&gt;
===Waking Hours===&lt;br /&gt;
I'm usually up from late morning to early morning.  10AM - 3AM are most likely.  During the summer I can be on IRC at almost all times though I like to keep an active and healthy lifestyle so I'll have to stray away from the keyboard at times.&lt;br /&gt;
&lt;br /&gt;
===Phone Calls===&lt;br /&gt;
I'd actually prefer to communicate on the phone.  Makes for a stronger relationship.  Unfortunately, computer science lends itself to digital communication due to the technical nature of the subject.&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29718</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29718"/>
		<updated>2009-04-03T02:20:40Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: /* Languages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I submitted one patch from the easycoding section.  It was the only one about the savegame system so I did what it said.  &lt;br /&gt;
&lt;br /&gt;
[https://gna.org/patch/?1150 Patch#1]&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war in strategy games.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I have played a little bit.  I didn't know about it until I saw it on GSoC's list of projects.  I plan on sinking my teeth into it more and if worse comes to worst at least I was introduced to a good game.  For the moment I'm going to try to get better at the game through single player and eventually make the dive into multiplayer.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Filter Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.  Finally, the class where I created my first game emphasized the important of UML and language-independent representation of code.  I feel like I can use what I learned from that class on this project.&lt;br /&gt;
&lt;br /&gt;
===Timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|March 25th - April 29th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|These are the remaining days of the school semester.  I plan on using this time to familiarize myself with everything Wesnoth.  Code, the community, everything.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|April 29th - May 23rd&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Begin working with my mentor on the overall design of how to change the save file structure.  I should be familiar enough with how everything works by this point to keep things moving, however, this is the most important part of the process so I a significant amount of time should be devoted to design.  UML diagrams and such will be drawn up during this time.  I'll still probably be getting fully up to speed with some of the deeper more intricate aspects of the source code.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|May 24rd - July 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Coding!  If this hasn't already begun it will at this point in time.  Actual programming of the new save system will begin now.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 10th - July 13th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Midterm reviews are due at this point so I think my mentor and I will take a look back at everything we've done.  Check for giant gaping design holes, etc.  Basically the midterm will be a good time to assess everything that's happened so far and see if there needs to be any change of direction with the original plan.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 13th - August 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|This is it!  The last month of work.  I'll be working frantically these days to finish up the new, reorganized, restructured, and more unified save system.  Hopefully things will be done before the 10th so that some serious testing can happen before the final code is submitted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Technical Details===&lt;br /&gt;
I'm going to leave this section unpopulated for now until I become more familiar with Wesnoth's source code.&lt;br /&gt;
&lt;br /&gt;
===My Own Personal Gain===&lt;br /&gt;
I hope to become involved in an active open source project and community while gaining experience on working with a video game.  I'm pretty sure Wesnoth will provide both.&lt;br /&gt;
&lt;br /&gt;
===Continued Involvement===&lt;br /&gt;
I feel as though after reading the documentation and just lurking around the IRC channel and forums that the Wesnoth community is a very healthy one.  My continued involvement with the project is directly related to the activity of the community as a whole.&lt;br /&gt;
&lt;br /&gt;
==Practical Considerations==&lt;br /&gt;
===Languages===&lt;br /&gt;
All the required Computer Science courses taught through the College of Engineering here use C++.  I'm very familiar and comfortable with writing code in it and learning with C++.  I've built Wesnoth enough times with scons I've looked around some of the scripts so I think I'm pretty comfortable with it now.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
I write my code in either gedit or emacs.  I use gedit because its a convenient and modern editor while I use emacs when working on my schools remote computing environments.  I use g++ to compile my C++ code and I haven't needed to use anything else as of yet.&lt;br /&gt;
&lt;br /&gt;
===Fluent Programming Languages===&lt;br /&gt;
I am most familiar with C++.  I've spent two years working with it pretty extensively now.  I also feel that one of the courses I'm taking now is covering some of the most vital aspects of the language and object oriented programming in general.  The first part of the course was review but now we're going over abstract data types and the very important features that OO programming provides (from what I read, Wesnoth's lead dev is very passionate about encapsulation).&lt;br /&gt;
&lt;br /&gt;
===Fluent Spoken Languages===&lt;br /&gt;
I am fluent in English and spoken Mandarin Chinese.  I also know a bit of German.&lt;br /&gt;
&lt;br /&gt;
===Waking Hours===&lt;br /&gt;
I'm usually up from late morning to early morning.  10AM - 3AM are most likely.  During the summer I can be on IRC at almost all times though I like to keep an active and healthy lifestyle so I'll have to stray away from the keyboard at times.&lt;br /&gt;
&lt;br /&gt;
===Phone Calls===&lt;br /&gt;
I'd actually prefer to communicate on the phone.  Makes for a stronger relationship.  Unfortunately, computer science lends itself to digital communication due to the technical nature of the subject.&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29717</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29717"/>
		<updated>2009-04-03T02:19:26Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: /* Timeline */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I submitted one patch from the easycoding section.  It was the only one about the savegame system so I did what it said.  &lt;br /&gt;
&lt;br /&gt;
[https://gna.org/patch/?1150 Patch#1]&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war in strategy games.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I have played a little bit.  I didn't know about it until I saw it on GSoC's list of projects.  I plan on sinking my teeth into it more and if worse comes to worst at least I was introduced to a good game.  For the moment I'm going to try to get better at the game through single player and eventually make the dive into multiplayer.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Filter Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.  Finally, the class where I created my first game emphasized the important of UML and language-independent representation of code.  I feel like I can use what I learned from that class on this project.&lt;br /&gt;
&lt;br /&gt;
===Timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|March 25th - April 29th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|These are the remaining days of the school semester.  I plan on using this time to familiarize myself with everything Wesnoth.  Code, the community, everything.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|April 29th - May 23rd&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Begin working with my mentor on the overall design of how to change the save file structure.  I should be familiar enough with how everything works by this point to keep things moving, however, this is the most important part of the process so I a significant amount of time should be devoted to design.  UML diagrams and such will be drawn up during this time.  I'll still probably be getting fully up to speed with some of the deeper more intricate aspects of the source code.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|May 24rd - July 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Coding!  If this hasn't already begun it will at this point in time.  Actual programming of the new save system will begin now.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 10th - July 13th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Midterm reviews are due at this point so I think my mentor and I will take a look back at everything we've done.  Check for giant gaping design holes, etc.  Basically the midterm will be a good time to assess everything that's happened so far and see if there needs to be any change of direction with the original plan.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 13th - August 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|This is it!  The last month of work.  I'll be working frantically these days to finish up the new, reorganized, restructured, and more unified save system.  Hopefully things will be done before the 10th so that some serious testing can happen before the final code is submitted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Technical Details===&lt;br /&gt;
I'm going to leave this section unpopulated for now until I become more familiar with Wesnoth's source code.&lt;br /&gt;
&lt;br /&gt;
===My Own Personal Gain===&lt;br /&gt;
I hope to become involved in an active open source project and community while gaining experience on working with a video game.  I'm pretty sure Wesnoth will provide both.&lt;br /&gt;
&lt;br /&gt;
===Continued Involvement===&lt;br /&gt;
I feel as though after reading the documentation and just lurking around the IRC channel and forums that the Wesnoth community is a very healthy one.  My continued involvement with the project is directly related to the activity of the community as a whole.&lt;br /&gt;
&lt;br /&gt;
==Practical Considerations==&lt;br /&gt;
===Languages===&lt;br /&gt;
All the required Computer Science courses taught through the College of Engineering here use C++.  I'm very familiar and comfortable with writing code in it and learning with C++.  I don't know very much Python and I'm not familiar with build environments.  Build environments are number one on my list of things to learn though.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
I write my code in either gedit or emacs.  I use gedit because its a convenient and modern editor while I use emacs when working on my schools remote computing environments.  I use g++ to compile my C++ code and I haven't needed to use anything else as of yet.&lt;br /&gt;
&lt;br /&gt;
===Fluent Programming Languages===&lt;br /&gt;
I am most familiar with C++.  I've spent two years working with it pretty extensively now.  I also feel that one of the courses I'm taking now is covering some of the most vital aspects of the language and object oriented programming in general.  The first part of the course was review but now we're going over abstract data types and the very important features that OO programming provides (from what I read, Wesnoth's lead dev is very passionate about encapsulation).&lt;br /&gt;
&lt;br /&gt;
===Fluent Spoken Languages===&lt;br /&gt;
I am fluent in English and spoken Mandarin Chinese.  I also know a bit of German.&lt;br /&gt;
&lt;br /&gt;
===Waking Hours===&lt;br /&gt;
I'm usually up from late morning to early morning.  10AM - 3AM are most likely.  During the summer I can be on IRC at almost all times though I like to keep an active and healthy lifestyle so I'll have to stray away from the keyboard at times.&lt;br /&gt;
&lt;br /&gt;
===Phone Calls===&lt;br /&gt;
I'd actually prefer to communicate on the phone.  Makes for a stronger relationship.  Unfortunately, computer science lends itself to digital communication due to the technical nature of the subject.&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29716</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29716"/>
		<updated>2009-04-03T02:13:13Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: /* Patches for Wesnoth */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I submitted one patch from the easycoding section.  It was the only one about the savegame system so I did what it said.  &lt;br /&gt;
&lt;br /&gt;
[https://gna.org/patch/?1150 Patch#1]&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war in strategy games.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I have played a little bit.  I didn't know about it until I saw it on GSoC's list of projects.  I plan on sinking my teeth into it more and if worse comes to worst at least I was introduced to a good game.  For the moment I'm going to try to get better at the game through single player and eventually make the dive into multiplayer.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Filter Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.  Finally, the class where I created my first game emphasized the important of UML and language-independent representation of code.  I feel like I can use what I learned from that class on this project.&lt;br /&gt;
&lt;br /&gt;
===Timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|March 25th - April 29th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|These are the remaining days of the school semester.  I plan on using this time to familiarize myself with everything Wesnoth.  Code, the community, everything.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|April 29th - May 23rd&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Begin working with my mentor on the overall design of how to change the save file structure.  I should be familiar enough with how everything works by this point to keep things moving, however, this is the most important part of the process so I a significant amount of time should be devoted to design.  UML diagrams and such will be drawn up during this time.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|May 24rd - June 14th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Prototyping should begin now.  This is also the prescribed &amp;quot;start coding!&amp;quot; time from Google.  Hopefully with the early start on the project this will give me time to come up with more than one prospective implementation idea to work with.  This way I can start prototyping and see if there are any unforeseen shortcomings to the proposed solutions.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|June 14th - June 16th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|After a few weeks of rapid prototyping I hope to discuss the results of all the test runs with my mentor.  We'll weigh the options and hopefully quickly come to a conclusion on what the ideal solution candidate.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|June 16th - July 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|At this point I'll begin the final implementation of the code.  Of course I'm still far from being done.  I'll work closely with my mentor to get the final product up and running by when Google requests us to turn in midterm reviews.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 10th - August 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot; width=&amp;quot;125&amp;quot;|So while my experience with open source is limited, from what I can see the success of any open source project is the community.  At this time I would like to release the final product to the community and try to use whatever good feedback I get.  I'll continue to polish it until the Google's given deadline and probably work on it beyond then.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Technical Details===&lt;br /&gt;
I'm going to leave this section unpopulated for now until I become more familiar with Wesnoth's source code.&lt;br /&gt;
&lt;br /&gt;
===My Own Personal Gain===&lt;br /&gt;
I hope to become involved in an active open source project and community while gaining experience on working with a video game.  I'm pretty sure Wesnoth will provide both.&lt;br /&gt;
&lt;br /&gt;
===Continued Involvement===&lt;br /&gt;
I feel as though after reading the documentation and just lurking around the IRC channel and forums that the Wesnoth community is a very healthy one.  My continued involvement with the project is directly related to the activity of the community as a whole.&lt;br /&gt;
&lt;br /&gt;
==Practical Considerations==&lt;br /&gt;
===Languages===&lt;br /&gt;
All the required Computer Science courses taught through the College of Engineering here use C++.  I'm very familiar and comfortable with writing code in it and learning with C++.  I don't know very much Python and I'm not familiar with build environments.  Build environments are number one on my list of things to learn though.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
I write my code in either gedit or emacs.  I use gedit because its a convenient and modern editor while I use emacs when working on my schools remote computing environments.  I use g++ to compile my C++ code and I haven't needed to use anything else as of yet.&lt;br /&gt;
&lt;br /&gt;
===Fluent Programming Languages===&lt;br /&gt;
I am most familiar with C++.  I've spent two years working with it pretty extensively now.  I also feel that one of the courses I'm taking now is covering some of the most vital aspects of the language and object oriented programming in general.  The first part of the course was review but now we're going over abstract data types and the very important features that OO programming provides (from what I read, Wesnoth's lead dev is very passionate about encapsulation).&lt;br /&gt;
&lt;br /&gt;
===Fluent Spoken Languages===&lt;br /&gt;
I am fluent in English and spoken Mandarin Chinese.  I also know a bit of German.&lt;br /&gt;
&lt;br /&gt;
===Waking Hours===&lt;br /&gt;
I'm usually up from late morning to early morning.  10AM - 3AM are most likely.  During the summer I can be on IRC at almost all times though I like to keep an active and healthy lifestyle so I'll have to stray away from the keyboard at times.&lt;br /&gt;
&lt;br /&gt;
===Phone Calls===&lt;br /&gt;
I'd actually prefer to communicate on the phone.  Makes for a stronger relationship.  Unfortunately, computer science lends itself to digital communication due to the technical nature of the subject.&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=EasyCoding&amp;diff=29568</id>
		<title>EasyCoding</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=EasyCoding&amp;diff=29568"/>
		<updated>2009-04-01T15:43:33Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: /* consistent player information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Foreword ==&lt;br /&gt;
This page is here to document easy to do coding tasks. It is not here to double the feature request database, and should only be filled by people that know the code well enough to judge the difficulty of a given task. &lt;br /&gt;
&lt;br /&gt;
If you are such a person, you should feel free to edit this page.&lt;br /&gt;
&lt;br /&gt;
If you're not, you should post a feature request and discuss your idea on the forum or IRC. A coder with better knowledge of the code might give you the green light to add your feature here.&lt;br /&gt;
&lt;br /&gt;
Anybody should feel free to add &amp;quot;clues&amp;quot; to any tasks, that is entry points, traps to avoid, person to contact to discuss and so on.&lt;br /&gt;
&lt;br /&gt;
If you plan to work on a feature, write your name at the bottom of the feature, with the date. Note that if you are too long at working on a feature I'll &amp;quot;free&amp;quot; it back (that is if you're not working on it. If you have problems implementing it, just tell us....)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Boucman|Boucman]] 20:48, 3 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Since bugs are sometimes a good opportunity to get a first idea of the code, i will add some here that are easy to fix as soon as i stumble upon them (the one i had in mind is fixed already ;-).&lt;br /&gt;
&lt;br /&gt;
--Yogi Bear, 28 February 2008&lt;br /&gt;
&lt;br /&gt;
== MP related features ==&lt;br /&gt;
&lt;br /&gt;
=== Use different font for in-game chat ===&lt;br /&gt;
Since commas and dots are apparently hard to tell apart. As per FR #7470 [https://gna.org/bugs/?7470]&lt;br /&gt;
&lt;br /&gt;
== WML related features ==&lt;br /&gt;
&lt;br /&gt;
=== WML configurable village income / upkeep ===&lt;br /&gt;
Preferably as a [scenario], [side] or [campaign] keys. As per FR #6301 [https://gna.org/bugs/?6301]&lt;br /&gt;
&lt;br /&gt;
=== Add support of [if] for [scenario] ===&lt;br /&gt;
As per FR #4539 [https://gna.org/bugs/?4539]&lt;br /&gt;
&lt;br /&gt;
=== Make [have_unit] optionaly use full SUF ===&lt;br /&gt;
[have_unit] by default uses SUF but does not apply it to recall list. Introduce an optional key that will allow to lift that limitation.&lt;br /&gt;
&lt;br /&gt;
=== Side-specific results ===&lt;br /&gt;
Giving result=defeat or result=victory for specific sides. ([http://gna.org/bugs/index.php?4960 FR #4960]) -- [[User:dlr365|dlr365]] -- patch submitted [https://gna.org/bugs/index.php?4960]&lt;br /&gt;
&lt;br /&gt;
=== Support for leaderless multiplayergames ===&lt;br /&gt;
Add support for the WML key victory_when_enemies_defeated= in the scenario tag during multiplayergames. ([https://gna.org/bugs/index.php?8106 FR #8106])&lt;br /&gt;
&lt;br /&gt;
=== Support for standalone multiplayer scenarios ===&lt;br /&gt;
There used to be support for standalone scenarios in the userdata tree, in reorganising the trees this feature got lost and an add-on is now required to add a scenario.&lt;br /&gt;
Re-add this feature. It is probably a good idea to mirror the mainline multiplayer tree.&lt;br /&gt;
&lt;br /&gt;
=== Other Ideas ===&lt;br /&gt;
See [[FutureWML]]; some ideas there are easier than others.&lt;br /&gt;
&lt;br /&gt;
== Improvements to FormulaAI ==&lt;br /&gt;
&lt;br /&gt;
Add new formula functions, or minor improvements to the formula language. Make it easier to debug the formula language.&lt;br /&gt;
&lt;br /&gt;
Please discuss these with Dragonking, Sirp or Boucman&lt;br /&gt;
&lt;br /&gt;
Use [[AI_Arena]] for testing custom formulas.&lt;br /&gt;
&lt;br /&gt;
=== Poisoning Improvement ===&lt;br /&gt;
&lt;br /&gt;
Writing a formula that will make units with poison attacks prioritize their targets to spead poison as much as possible, avoiding already poisoned units and other useless targets&lt;br /&gt;
&lt;br /&gt;
=== About to level formula ===&lt;br /&gt;
&lt;br /&gt;
Writing a formula that would handle units with only a few XP left to level and have them fight accordingly (most likely to kill or hit depending on XP needed, taking into account target's level)&lt;br /&gt;
&lt;br /&gt;
=== Healer improvements ===&lt;br /&gt;
&lt;br /&gt;
Handle units with healing power, moving them at places where they can provide the most healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Leader improvements ===&lt;br /&gt;
&lt;br /&gt;
A bit more complicated : special handling of units with leadership to have them support units. Only do it if it actually is usefull (less hits needed to kill the unit) and ability to help multiple units in a single turn (assuming enough MP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Berserker improvements ===&lt;br /&gt;
&lt;br /&gt;
The default AI's strategy of attacking as much as possible is very bad with berserker... A simple AI that would prevent the berserker from attacking (and keeping him close to fight without being exposed) and attack when the chance to kill is high enough would be an interesting addition&lt;br /&gt;
&lt;br /&gt;
=== Debugging help ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;* provide a way for a formula to have a text float over hex (for debugging purpose).&amp;lt;/s&amp;gt; done by [[SummerOfCodeProposal_AI_Improvement_Crab|Crab]], patch submitted [https://gna.org/bugs/?13230]&lt;br /&gt;
* in debug mode, have all AI move print their name in the log&lt;br /&gt;
&lt;br /&gt;
=== New type of candidate moves : Global ===&lt;br /&gt;
 &lt;br /&gt;
to be called only once with no implicit variable&lt;br /&gt;
&lt;br /&gt;
== GUI related features ==&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Note at the moment Mordante is working on a new GUI system, these &lt;br /&gt;
changes will probably affect the way these items need to be implemented.&lt;br /&gt;
Contact Mordante on IRC before starting to work on these.&lt;br /&gt;
  &lt;br /&gt;
--[[User:SkeletonCrew|SkeletonCrew]] 14:04, 9 March 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Theme Changes ===&lt;br /&gt;
&lt;br /&gt;
* allow custom themes to display values of WML variables ([http://gna.org/bugs/index.php?6209 FR #6209])&lt;br /&gt;
* hide the hourglass item from the statusbar when there is no timer&lt;br /&gt;
&lt;br /&gt;
=== Widget Changes ===&lt;br /&gt;
* show side number, name and team association information in the status table &lt;br /&gt;
* make games sortable in the lobby (open slots, total number of players, era, XP modifier, gold per village, fog/shroud) &lt;br /&gt;
* input history (chat, commands, ..) - note: rujasu is working on this feature&lt;br /&gt;
&lt;br /&gt;
== GUI2 related features ==&lt;br /&gt;
GUI2 is the new gui engine Mordante/SkeletonCrew is working on. &lt;br /&gt;
* Information on the wiki can be found here http://www.wesnoth.org/wiki/GUIToolkit&lt;br /&gt;
* The source code is under src/gui/&lt;br /&gt;
* The configuration config files are under data/gui/default&lt;br /&gt;
&lt;br /&gt;
Some tasks need the --new-widgets since the code is only shown in the experimental mode. Tasks which need this switch have the * in the title.&lt;br /&gt;
&lt;br /&gt;
=== Generic yes/no ok/cancel dialog ===&lt;br /&gt;
There's already a generic OK dialog &lt;br /&gt;
* src/gui/dialogs/message.[h|c]pp&lt;br /&gt;
* data/gui/default/window/message.cfg&lt;br /&gt;
&lt;br /&gt;
This dialog should have the option to show a cancel button as well and also let the caller of the dialog determine the text of the button. Maybe more buttons (4 in total) can be added to make the dialog more flexible.&lt;br /&gt;
&lt;br /&gt;
=== * Minimap ===&lt;br /&gt;
The minimap widget has already been made but is broken.&lt;br /&gt;
* src/gui/widgets/minimap.[c|h]pp&lt;br /&gt;
&lt;br /&gt;
The drawing code has been rewritten, but this widget hasn't been updated it's used in the MP connection dialog (which needs more work).&lt;br /&gt;
&lt;br /&gt;
=== * Savegame dialog ===&lt;br /&gt;
This is a new dialog to write and requires the minimap code to be fixed first. The dialog should mimic the current dialog. Sorting of a listbox and the proper alignment of the columns is not important (the engine doesn't support this yet). The code should only be used when --new-widgets is used as start switch since we're in a feature freeze at the moment.&lt;br /&gt;
&lt;br /&gt;
=== * Title screen ===&lt;br /&gt;
A start has been made for the new titlescreen&lt;br /&gt;
* src/gui/dialogs/title_screen.[c|h]pp&lt;br /&gt;
* data/gui/default/window/title_screen.cfg&lt;br /&gt;
This should be improved to include the buttons and alignment of the current title screen. The 'roll-over' image is not part of this task.&lt;br /&gt;
&lt;br /&gt;
=== Arrow keys for the slider ===&lt;br /&gt;
There's a new slider widget, but it doesn't support the keyboard yet.&lt;br /&gt;
gui/widgets/slider.[c|h]pp&lt;br /&gt;
&lt;br /&gt;
Clicking on the widget should capture the keyboard and then arrow left/right should move one step even if not all steps are visible.&lt;br /&gt;
&lt;br /&gt;
=== Slider sizing ===&lt;br /&gt;
There are some issues with the sizing of a slider.&lt;br /&gt;
gui/widgets/slider.[c|h]pp&lt;br /&gt;
&lt;br /&gt;
In a layout step it needs to try to shrink itself, not entirely sure where or how yet, best ask mordante on irc.&lt;br /&gt;
&lt;br /&gt;
== Savegame related stuff ==&lt;br /&gt;
&lt;br /&gt;
=== consistent player information ===&lt;br /&gt;
At the moment, the [player]-section for a campaign savegame will appear in two places: The root level of the savegame and the [replay_start]-section. This was due to a last-minute fix for 1.6 that was designed to be the least intrusive. The [player]-section should only be written to [replay_start] (and of course read from there as well).  Patch submitted: [https://gna.org/patch/index.php?1150] -grantwu&lt;br /&gt;
&lt;br /&gt;
=== fix bug #13268 (save corruption through undo/redo of recalls [https://gna.org/bugs/?13268] ===&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&lt;br /&gt;
=== More powerful village naming ===&lt;br /&gt;
'''Adding mountain names and other features to village names, having a second random name in village names'''&lt;br /&gt;
&lt;br /&gt;
Currently the village naming engine has a very good structure that could allow &lt;br /&gt;
more powerfull names to be generated. &lt;br /&gt;
Understanding how it works should be quite easy, and a few usefull improvements could be added.&lt;br /&gt;
&lt;br /&gt;
* Currently villages can use lake names and river names, this should be extended to other features like bridges, swamps, mountains etc...&lt;br /&gt;
* It would be nice to have a separate list of &amp;quot;first sylabus&amp;quot; and &amp;quot;last sylabus&amp;quot; for naming. That's not really needed in english, but some translations could use it&lt;br /&gt;
* Again, it is common to have villages with more than one &amp;quot;random&amp;quot; word in them. having a $name2 variable would be nice&lt;br /&gt;
&lt;br /&gt;
Euschn 24/03/2009&lt;br /&gt;
&lt;br /&gt;
=== Debug Mode ===&lt;br /&gt;
* New debug command functionality (setting additional status.variables, possibly terrain)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bugs ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
[[NotSoEasyCoding]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Future]]&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29260</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29260"/>
		<updated>2009-03-25T03:39:27Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: /* Timeline */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I have not yet submitted anything to the Wesnoth project but I plan on doing my best to change that.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war in strategy games.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I have played a little bit.  I didn't know about it until I saw it on GSoC's list of projects.  I plan on sinking my teeth into it more and if worse comes to worst at least I was introduced to a good game.  For the moment I'm going to try to get better at the game through single player and eventually make the dive into multiplayer.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Filter Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.  Finally, the class where I created my first game emphasized the important of UML and language-independent representation of code.  I feel like I can use what I learned from that class on this project.&lt;br /&gt;
&lt;br /&gt;
===Timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|March 25th - April 29th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|These are the remaining days of the school semester.  I plan on using this time to familiarize myself with everything Wesnoth.  Code, the community, everything.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|April 29th - May 23rd&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Begin working with my mentor on the overall design of how to change the save file structure.  I should be familiar enough with how everything works by this point to keep things moving, however, this is the most important part of the process so I a significant amount of time should be devoted to design.  UML diagrams and such will be drawn up during this time.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|May 24rd - June 14th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Prototyping should begin now.  This is also the prescribed &amp;quot;start coding!&amp;quot; time from Google.  Hopefully with the early start on the project this will give me time to come up with more than one prospective implementation idea to work with.  This way I can start prototyping and see if there are any unforeseen shortcomings to the proposed solutions.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|June 14th - June 16th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|After a few weeks of rapid prototyping I hope to discuss the results of all the test runs with my mentor.  We'll weigh the options and hopefully quickly come to a conclusion on what the ideal solution candidate.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|June 16th - July 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|At this point I'll begin the final implementation of the code.  Of course I'm still far from being done.  I'll work closely with my mentor to get the final product up and running by when Google requests us to turn in midterm reviews.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 10th - August 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot; width=&amp;quot;125&amp;quot;|So while my experience with open source is limited, from what I can see the success of any open source project is the community.  At this time I would like to release the final product to the community and try to use whatever good feedback I get.  I'll continue to polish it until the Google's given deadline and probably work on it beyond then.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Technical Details===&lt;br /&gt;
I'm going to leave this section unpopulated for now until I become more familiar with Wesnoth's source code.&lt;br /&gt;
&lt;br /&gt;
===My Own Personal Gain===&lt;br /&gt;
I hope to become involved in an active open source project and community while gaining experience on working with a video game.  I'm pretty sure Wesnoth will provide both.&lt;br /&gt;
&lt;br /&gt;
===Continued Involvement===&lt;br /&gt;
I feel as though after reading the documentation and just lurking around the IRC channel and forums that the Wesnoth community is a very healthy one.  My continued involvement with the project is directly related to the activity of the community as a whole.&lt;br /&gt;
&lt;br /&gt;
==Practical Considerations==&lt;br /&gt;
===Languages===&lt;br /&gt;
All the required Computer Science courses taught through the College of Engineering here use C++.  I'm very familiar and comfortable with writing code in it and learning with C++.  I don't know very much Python and I'm not familiar with build environments.  Build environments are number one on my list of things to learn though.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
I write my code in either gedit or emacs.  I use gedit because its a convenient and modern editor while I use emacs when working on my schools remote computing environments.  I use g++ to compile my C++ code and I haven't needed to use anything else as of yet.&lt;br /&gt;
&lt;br /&gt;
===Fluent Programming Languages===&lt;br /&gt;
I am most familiar with C++.  I've spent two years working with it pretty extensively now.  I also feel that one of the courses I'm taking now is covering some of the most vital aspects of the language and object oriented programming in general.  The first part of the course was review but now we're going over abstract data types and the very important features that OO programming provides (from what I read, Wesnoth's lead dev is very passionate about encapsulation).&lt;br /&gt;
&lt;br /&gt;
===Fluent Spoken Languages===&lt;br /&gt;
I am fluent in English and spoken Mandarin Chinese.  I also know a bit of German.&lt;br /&gt;
&lt;br /&gt;
===Waking Hours===&lt;br /&gt;
I'm usually up from late morning to early morning.  10AM - 3AM are most likely.  During the summer I can be on IRC at almost all times though I like to keep an active and healthy lifestyle so I'll have to stray away from the keyboard at times.&lt;br /&gt;
&lt;br /&gt;
===Phone Calls===&lt;br /&gt;
I'd actually prefer to communicate on the phone.  Makes for a stronger relationship.  Unfortunately, computer science lends itself to digital communication due to the technical nature of the subject.&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29259</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29259"/>
		<updated>2009-03-25T03:38:44Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: /* Why This Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I have not yet submitted anything to the Wesnoth project but I plan on doing my best to change that.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war in strategy games.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I have played a little bit.  I didn't know about it until I saw it on GSoC's list of projects.  I plan on sinking my teeth into it more and if worse comes to worst at least I was introduced to a good game.  For the moment I'm going to try to get better at the game through single player and eventually make the dive into multiplayer.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Filter Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.  Finally, the class where I created my first game emphasized the important of UML and language-independent representation of code.  I feel like I can use what I learned from that class on this project.&lt;br /&gt;
&lt;br /&gt;
===Timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|March 25th - April 29th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|These are the remaining days of the school semester.  I plan on using this time to familiarize myself with everything Wesnoth.  Code, the community, everything.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|April 29th - May 23rd&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Begin working with my mentor on the overall design of how to change the save file structure.  I should be familiar enough with how everything works by this point to keep things moving, however, this is the most important part of the process so I a significant amount of time should be devoted to design.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|May 24rd - June 14th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Prototyping should begin now.  This is also the prescribed &amp;quot;start coding!&amp;quot; time from Google.  Hopefully with the early start on the project this will give me time to come up with more than one prospective implementation idea to work with.  This way I can start prototyping and see if there are any unforeseen shortcomings to the proposed solutions.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|June 14th - June 16th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|After a few weeks of rapid prototyping I hope to discuss the results of all the test runs with my mentor.  We'll weigh the options and hopefully quickly come to a conclusion on what the ideal solution candidate.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|June 16th - July 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|At this point I'll begin the final implementation of the code.  Of course I'm still far from being done.  I'll work closely with my mentor to get the final product up and running by when Google requests us to turn in midterm reviews.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 10th - August 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot; width=&amp;quot;125&amp;quot;|So while my experience with open source is limited, from what I can see the success of any open source project is the community.  At this time I would like to release the final product to the community and try to use whatever good feedback I get.  I'll continue to polish it until the Google's given deadline and probably work on it beyond then.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Technical Details===&lt;br /&gt;
I'm going to leave this section unpopulated for now until I become more familiar with Wesnoth's source code.&lt;br /&gt;
&lt;br /&gt;
===My Own Personal Gain===&lt;br /&gt;
I hope to become involved in an active open source project and community while gaining experience on working with a video game.  I'm pretty sure Wesnoth will provide both.&lt;br /&gt;
&lt;br /&gt;
===Continued Involvement===&lt;br /&gt;
I feel as though after reading the documentation and just lurking around the IRC channel and forums that the Wesnoth community is a very healthy one.  My continued involvement with the project is directly related to the activity of the community as a whole.&lt;br /&gt;
&lt;br /&gt;
==Practical Considerations==&lt;br /&gt;
===Languages===&lt;br /&gt;
All the required Computer Science courses taught through the College of Engineering here use C++.  I'm very familiar and comfortable with writing code in it and learning with C++.  I don't know very much Python and I'm not familiar with build environments.  Build environments are number one on my list of things to learn though.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
I write my code in either gedit or emacs.  I use gedit because its a convenient and modern editor while I use emacs when working on my schools remote computing environments.  I use g++ to compile my C++ code and I haven't needed to use anything else as of yet.&lt;br /&gt;
&lt;br /&gt;
===Fluent Programming Languages===&lt;br /&gt;
I am most familiar with C++.  I've spent two years working with it pretty extensively now.  I also feel that one of the courses I'm taking now is covering some of the most vital aspects of the language and object oriented programming in general.  The first part of the course was review but now we're going over abstract data types and the very important features that OO programming provides (from what I read, Wesnoth's lead dev is very passionate about encapsulation).&lt;br /&gt;
&lt;br /&gt;
===Fluent Spoken Languages===&lt;br /&gt;
I am fluent in English and spoken Mandarin Chinese.  I also know a bit of German.&lt;br /&gt;
&lt;br /&gt;
===Waking Hours===&lt;br /&gt;
I'm usually up from late morning to early morning.  10AM - 3AM are most likely.  During the summer I can be on IRC at almost all times though I like to keep an active and healthy lifestyle so I'll have to stray away from the keyboard at times.&lt;br /&gt;
&lt;br /&gt;
===Phone Calls===&lt;br /&gt;
I'd actually prefer to communicate on the phone.  Makes for a stronger relationship.  Unfortunately, computer science lends itself to digital communication due to the technical nature of the subject.&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29258</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29258"/>
		<updated>2009-03-25T03:29:17Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I have not yet submitted anything to the Wesnoth project but I plan on doing my best to change that.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war in strategy games.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I have played a little bit.  I didn't know about it until I saw it on GSoC's list of projects.  I plan on sinking my teeth into it more and if worse comes to worst at least I was introduced to a good game.  For the moment I'm going to try to get better at the game through single player and eventually make the dive into multiplayer.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Filter Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.&lt;br /&gt;
&lt;br /&gt;
===Timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|March 25th - April 29th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|These are the remaining days of the school semester.  I plan on using this time to familiarize myself with everything Wesnoth.  Code, the community, everything.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|April 29th - May 23rd&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Begin working with my mentor on the overall design of how to change the save file structure.  I should be familiar enough with how everything works by this point to keep things moving, however, this is the most important part of the process so I a significant amount of time should be devoted to design.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|May 24rd - June 14th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Prototyping should begin now.  This is also the prescribed &amp;quot;start coding!&amp;quot; time from Google.  Hopefully with the early start on the project this will give me time to come up with more than one prospective implementation idea to work with.  This way I can start prototyping and see if there are any unforeseen shortcomings to the proposed solutions.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|June 14th - June 16th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|After a few weeks of rapid prototyping I hope to discuss the results of all the test runs with my mentor.  We'll weigh the options and hopefully quickly come to a conclusion on what the ideal solution candidate.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|June 16th - July 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|At this point I'll begin the final implementation of the code.  Of course I'm still far from being done.  I'll work closely with my mentor to get the final product up and running by when Google requests us to turn in midterm reviews.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 10th - August 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot; width=&amp;quot;125&amp;quot;|So while my experience with open source is limited, from what I can see the success of any open source project is the community.  At this time I would like to release the final product to the community and try to use whatever good feedback I get.  I'll continue to polish it until the Google's given deadline and probably work on it beyond then.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Technical Details===&lt;br /&gt;
I'm going to leave this section unpopulated for now until I become more familiar with Wesnoth's source code.&lt;br /&gt;
&lt;br /&gt;
===My Own Personal Gain===&lt;br /&gt;
I hope to become involved in an active open source project and community while gaining experience on working with a video game.  I'm pretty sure Wesnoth will provide both.&lt;br /&gt;
&lt;br /&gt;
===Continued Involvement===&lt;br /&gt;
I feel as though after reading the documentation and just lurking around the IRC channel and forums that the Wesnoth community is a very healthy one.  My continued involvement with the project is directly related to the activity of the community as a whole.&lt;br /&gt;
&lt;br /&gt;
==Practical Considerations==&lt;br /&gt;
===Languages===&lt;br /&gt;
All the required Computer Science courses taught through the College of Engineering here use C++.  I'm very familiar and comfortable with writing code in it and learning with C++.  I don't know very much Python and I'm not familiar with build environments.  Build environments are number one on my list of things to learn though.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
I write my code in either gedit or emacs.  I use gedit because its a convenient and modern editor while I use emacs when working on my schools remote computing environments.  I use g++ to compile my C++ code and I haven't needed to use anything else as of yet.&lt;br /&gt;
&lt;br /&gt;
===Fluent Programming Languages===&lt;br /&gt;
I am most familiar with C++.  I've spent two years working with it pretty extensively now.  I also feel that one of the courses I'm taking now is covering some of the most vital aspects of the language and object oriented programming in general.  The first part of the course was review but now we're going over abstract data types and the very important features that OO programming provides (from what I read, Wesnoth's lead dev is very passionate about encapsulation).&lt;br /&gt;
&lt;br /&gt;
===Fluent Spoken Languages===&lt;br /&gt;
I am fluent in English and spoken Mandarin Chinese.  I also know a bit of German.&lt;br /&gt;
&lt;br /&gt;
===Waking Hours===&lt;br /&gt;
I'm usually up from late morning to early morning.  10AM - 3AM are most likely.  During the summer I can be on IRC at almost all times though I like to keep an active and healthy lifestyle so I'll have to stray away from the keyboard at times.&lt;br /&gt;
&lt;br /&gt;
===Phone Calls===&lt;br /&gt;
I'd actually prefer to communicate on the phone.  Makes for a stronger relationship.  Unfortunately, computer science lends itself to digital communication due to the technical nature of the subject.&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29257</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29257"/>
		<updated>2009-03-25T03:28:52Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: /* Fluent Programming Languages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I have not yet submitted anything to the Wesnoth project but I plan on doing my best to change that.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war in strategy games.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I have played a little bit.  I didn't know about it until I saw it on GSoC's list of projects.  I plan on sinking my teeth into it more and if worse comes to worst at least I was introduced to a good game.  For the moment I'm going to try to get better at the game through single player and eventually make the dive into multiplayer.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Filter Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.&lt;br /&gt;
&lt;br /&gt;
===Timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|March 25th - April 29th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|These are the remaining days of the school semester.  I plan on using this time to familiarize myself with everything Wesnoth.  Code, the community, everything.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|April 29th - May 23rd&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Begin working with my mentor on the overall design of how to change the save file structure.  I should be familiar enough with how everything works by this point to keep things moving, however, this is the most important part of the process so I a significant amount of time should be devoted to design.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|May 24rd - June 14th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Prototyping should begin now.  This is also the prescribed &amp;quot;start coding!&amp;quot; time from Google.  Hopefully with the early start on the project this will give me time to come up with more than one prospective implementation idea to work with.  This way I can start prototyping and see if there are any unforeseen shortcomings to the proposed solutions.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|June 14th - June 16th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|After a few weeks of rapid prototyping I hope to discuss the results of all the test runs with my mentor.  We'll weigh the options and hopefully quickly come to a conclusion on what the ideal solution candidate.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|June 16th - July 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|At this point I'll begin the final implementation of the code.  Of course I'm still far from being done.  I'll work closely with my mentor to get the final product up and running by when Google requests us to turn in midterm reviews.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 10th - August 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot; width=&amp;quot;125&amp;quot;|So while my experience with open source is limited, from what I can see the success of any open source project is the community.  At this time I would like to release the final product to the community and try to use whatever good feedback I get.  I'll continue to polish it until the Google's given deadline and probably work on it beyond then.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Technical Details===&lt;br /&gt;
I'm going to leave this section unpopulated for now until I become more familiar with Wesnoth's source code.&lt;br /&gt;
&lt;br /&gt;
===My Own Personal Gain===&lt;br /&gt;
I hope to become involved in an active open source project and community while gaining experience on working with a video game.  I'm pretty sure Wesnoth will provide both.&lt;br /&gt;
&lt;br /&gt;
===Continued Involvement===&lt;br /&gt;
I feel as though after reading the documentation and just lurking around the IRC channel and forums that the Wesnoth community is a very healthy one.  My continued involvement with the project is directly related to the activity of the community as a whole.&lt;br /&gt;
&lt;br /&gt;
==Practical Considerations==&lt;br /&gt;
===Languages===&lt;br /&gt;
All the required Computer Science courses taught through the College of Engineering here use C++.  I'm very familiar and comfortable with writing code in it and learning with C++.  I don't know very much Python and I'm not familiar with build environments.  Build environments are number one on my list of things to learn though.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
I write my code in either gedit or emacs.  I use gedit because its a convenient and modern editor while I use emacs when working on my schools remote computing environments.  I use g++ to compile my C++ code and I haven't needed to use anything else as of yet.&lt;br /&gt;
&lt;br /&gt;
===Fluent Programming Languages===&lt;br /&gt;
I am most familiar with C++.  I've spent two years working with it pretty extensively now.  I also feel that one of the courses I'm taking now is covering some of the most vital aspects of the language and object oriented programming in general.  The first part of the course was review but now we're going over abstract data types and the very important features that OO programming provides (from what I read that Wesnoth's lead dev is very passionate about encapsulation).&lt;br /&gt;
&lt;br /&gt;
===Fluent Spoken Languages===&lt;br /&gt;
I am fluent in English and spoken Mandarin Chinese.  I also know a bit of German.&lt;br /&gt;
&lt;br /&gt;
===Waking Hours===&lt;br /&gt;
I'm usually up from late morning to early morning.  10AM - 3AM are most likely.  During the summer I can be on IRC at almost all times though I like to keep an active and healthy lifestyle so I'll have to stray away from the keyboard at times.&lt;br /&gt;
&lt;br /&gt;
===Phone Calls===&lt;br /&gt;
I'd actually prefer to communicate on the phone.  Makes for a stronger relationship.  Unfortunately, computer science lends itself to digital communication due to the technical nature of the subject.&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29256</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29256"/>
		<updated>2009-03-25T03:25:55Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I have not yet submitted anything to the Wesnoth project but I plan on doing my best to change that.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war in strategy games.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I have played a little bit.  I didn't know about it until I saw it on GSoC's list of projects.  I plan on sinking my teeth into it more and if worse comes to worst at least I was introduced to a good game.  For the moment I'm going to try to get better at the game through single player and eventually make the dive into multiplayer.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Filter Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.&lt;br /&gt;
&lt;br /&gt;
===Timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|March 25th - April 29th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|These are the remaining days of the school semester.  I plan on using this time to familiarize myself with everything Wesnoth.  Code, the community, everything.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|April 29th - May 23rd&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Begin working with my mentor on the overall design of how to change the save file structure.  I should be familiar enough with how everything works by this point to keep things moving, however, this is the most important part of the process so I a significant amount of time should be devoted to design.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|May 24rd - June 14th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Prototyping should begin now.  This is also the prescribed &amp;quot;start coding!&amp;quot; time from Google.  Hopefully with the early start on the project this will give me time to come up with more than one prospective implementation idea to work with.  This way I can start prototyping and see if there are any unforeseen shortcomings to the proposed solutions.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|June 14th - June 16th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|After a few weeks of rapid prototyping I hope to discuss the results of all the test runs with my mentor.  We'll weigh the options and hopefully quickly come to a conclusion on what the ideal solution candidate.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|June 16th - July 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|At this point I'll begin the final implementation of the code.  Of course I'm still far from being done.  I'll work closely with my mentor to get the final product up and running by when Google requests us to turn in midterm reviews.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 10th - August 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot; width=&amp;quot;125&amp;quot;|So while my experience with open source is limited, from what I can see the success of any open source project is the community.  At this time I would like to release the final product to the community and try to use whatever good feedback I get.  I'll continue to polish it until the Google's given deadline and probably work on it beyond then.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Technical Details===&lt;br /&gt;
I'm going to leave this section unpopulated for now until I become more familiar with Wesnoth's source code.&lt;br /&gt;
&lt;br /&gt;
===My Own Personal Gain===&lt;br /&gt;
I hope to become involved in an active open source project and community while gaining experience on working with a video game.  I'm pretty sure Wesnoth will provide both.&lt;br /&gt;
&lt;br /&gt;
===Continued Involvement===&lt;br /&gt;
I feel as though after reading the documentation and just lurking around the IRC channel and forums that the Wesnoth community is a very healthy one.  My continued involvement with the project is directly related to the activity of the community as a whole.&lt;br /&gt;
&lt;br /&gt;
==Practical Considerations==&lt;br /&gt;
===Languages===&lt;br /&gt;
All the required Computer Science courses taught through the College of Engineering here use C++.  I'm very familiar and comfortable with writing code in it and learning with C++.  I don't know very much Python and I'm not familiar with build environments.  Build environments are number one on my list of things to learn though.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
I write my code in either gedit or emacs.  I use gedit because its a convenient and modern editor while I use emacs when working on my schools remote computing environments.  I use g++ to compile my C++ code and I haven't needed to use anything else as of yet.&lt;br /&gt;
&lt;br /&gt;
===Fluent Programming Languages===&lt;br /&gt;
I am most familiar with C++.&lt;br /&gt;
&lt;br /&gt;
===Fluent Spoken Languages===&lt;br /&gt;
I am fluent in English and spoken Mandarin Chinese.  I also know a bit of German.&lt;br /&gt;
&lt;br /&gt;
===Waking Hours===&lt;br /&gt;
I'm usually up from late morning to early morning.  10AM - 3AM are most likely.  During the summer I can be on IRC at almost all times though I like to keep an active and healthy lifestyle so I'll have to stray away from the keyboard at times.&lt;br /&gt;
&lt;br /&gt;
===Phone Calls===&lt;br /&gt;
I'd actually prefer to communicate on the phone.  Makes for a stronger relationship.  Unfortunately, computer science lends itself to digital communication due to the technical nature of the subject.&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29255</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29255"/>
		<updated>2009-03-25T03:15:41Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I have not yet submitted anything to the Wesnoth project but I plan on doing my best to change that.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war in strategy games.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I have played a little bit.  I didn't know about it until I saw it on GSoC's list of projects.  I plan on sinking my teeth into it more and if worse comes to worst at least I was introduced to a good game.  For the moment I'm going to try to get better at the game through single player and eventually make the dive into multiplayer.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Filter Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.&lt;br /&gt;
&lt;br /&gt;
===Timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|March 25th - April 29th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|These are the remaining days of the school semester.  I plan on using this time to familiarize myself with everything Wesnoth.  Code, the community, everything.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|April 29th - May 23rd&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Begin working with my mentor on the overall design of how to change the save file structure.  I should be familiar enough with how everything works by this point to keep things moving, however, this is the most important part of the process so I a significant amount of time should be devoted to design.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|May 24rd - June 14th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Prototyping should begin now.  This is also the prescribed &amp;quot;start coding!&amp;quot; time from Google.  Hopefully with the early start on the project this will give me time to come up with more than one prospective implementation idea to work with.  This way I can start prototyping and see if there are any unforeseen shortcomings to the proposed solutions.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|June 14th - June 16th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|After a few weeks of rapid prototyping I hope to discuss the results of all the test runs with my mentor.  We'll weigh the options and hopefully quickly come to a conclusion on what the ideal solution candidate.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|June 16th - July 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|At this point I'll begin the final implementation of the code.  Of course I'm still far from being done.  I'll work closely with my mentor to get the final product up and running by when Google requests us to turn in midterm reviews.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot; width=&amp;quot;125&amp;quot;|July 10th - August 10th&lt;br /&gt;
|align=&amp;quot;left&amp;quot; width=&amp;quot;125&amp;quot;|So while my experience with open source is limited, from what I can see the success of any open source project is the community.  At this time I would like to release the final product to the community and try to use whatever good feedback I get.  I'll continue to polish it until the Google's given deadline and probably work on it beyond then.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29254</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29254"/>
		<updated>2009-03-25T02:59:14Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I have not yet submitted anything to the Wesnoth project but I plan on doing my best to change that.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents?====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war in strategy games.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I have played a little bit.  I didn't know about it until I saw it on GSoC's list of projects.  I plan on sinking my teeth into it more and if worse comes to worst at least I was introduced to a good game.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Useless Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.&lt;br /&gt;
&lt;br /&gt;
===Timeline===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|March 25th - April 29th&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|These are the remaining days of the school semester.  I plan on using this time to familiarize myself with everything Wesnoth.  Code, the community, everything.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|April 29th - May 23rd&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|Begin working with my mentor on the overall design of how to change the save file structure.  I should be familiar enough with how everything works by this point to keep things moving, however, this is the most important part of the process so I a significant amount of time should be devoted to design.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29253</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29253"/>
		<updated>2009-03-25T02:47:34Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I have not yet submitted anything to the Wesnoth project but I plan on doing my best to change that.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Projects===&lt;br /&gt;
My current experience is largely through assignments from my classes.  One of my classes is entirely project based so I know how to handle larger tasks.  The biggest programming project I've worked on so far was actually a video game.  I made a 2D platformer with some physics twists to it.  Not the most complicated but it gave me valuable experience.&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
My very first programming class at the University focused on pair programming.  All of our projects were done with a partner.  This taught me a lot of valuable lessons when it comes to just how fallible every programmer is.  The video game project I described in the previous section was also done in a team of 4.  The people I worked with were all passionate about video games and programming.  I learned to appreciate being in such an environment and I'm well aware that some groups won't be as ideal.&lt;br /&gt;
&lt;br /&gt;
===Previous GSoCs===&lt;br /&gt;
I have never participated in Google's Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
I have very limited experience working with open source projects.  By limited I mean I use Ubuntu as my standard operating system for my netbook.  I hope to remedy this unfortunate situation.&lt;br /&gt;
&lt;br /&gt;
===Am I a Gamer===&lt;br /&gt;
Am I a gamer?  Hell yeah.  Gaming is my passion.  I play everything and anything.  Unusually enough I was looking for a turn-based strategy RPG to play before I found Wesnoth.  Convenient.&lt;br /&gt;
&lt;br /&gt;
====Type of Gamer====&lt;br /&gt;
I'm a hardcore gamer.  There's no other way to describe my relationship with video games.&lt;br /&gt;
&lt;br /&gt;
====Types of Games====&lt;br /&gt;
Like I said before, I play pretty much anything.  My favorites right now include Left 4 Dead, Civilization IV, Team Fortress 2, and Dawn of War II.  I also play a lot of FIFA 09 and I still play Mass Effect now and then.  I plan on getting more into Wesnoth too.&lt;br /&gt;
&lt;br /&gt;
====Types of Opponents?====&lt;br /&gt;
My ideal human opponent is a mythical beast that does not exist.  Someone who is respectful but not afraid to do a little trash talking to put an edge on things.  My ideal AI opponent also probably doesn't exist but I'm pretty sure devs fake it.  The one thing that I feel an AI opponent has to do is be adaptable and challenging while remaining fair.  I hope that gone are the days where computer bots could see through walls in shooters and have laser vision to pierce through fog of war.&lt;br /&gt;
&lt;br /&gt;
====Story or Gameplay====&lt;br /&gt;
I'd love to have both, but sadly its usually only one.  If a game has poor story and good gameplay just the experience of playing the game will push it through.  I feel like this is usually the case with games, not ideal at all.  There has been the rare game where the story was what kept me playing.  For example, when I'm in the right mood I like to burn through Japanese RPGs.  Japanese RPGs so often fall into the same trappings when it comes to gameplay but the story keeps me mashing the attack command for hours and hours.&lt;br /&gt;
&lt;br /&gt;
====Played Wesnoth====&lt;br /&gt;
I have played a little bit.  I didn't know about it until I saw it on GSoC's list of projects.  I plan on sinking my teeth into it more and if worse comes to worst at least I was introduced to a good game.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
English is my native tongue and I think I'm pretty good at communicating with it.&lt;br /&gt;
&lt;br /&gt;
===Player Community===&lt;br /&gt;
Being a pretty competitive gamer myself I'm well aware of how nasty the player community can get (NERF PALADINS!  NERF THE DEMOMAN!).  I'm more than prepared to handle that.&lt;br /&gt;
&lt;br /&gt;
===Constructive Advice===&lt;br /&gt;
In my opinion, if it isn't constructive then really is no reason to give it.  When I give feedback I try to form it in a way that is most useful to the recipient.&lt;br /&gt;
&lt;br /&gt;
===How Well Do I Receive Advice===&lt;br /&gt;
One of the positions I hold at my University is the Publications Chair for a student organization.  I create flyers and basically mold the image of the org.  Because of this I receive constant feedback from the other members about my work and I'm experienced with taking in a wide variety of suggestions.  My group programming projects also had a lot of back and forth communication.  After implementing a new feature we'd all sit down and discuss what's good, what's bad, and the person in charge of that feature would go back and make whatever changes we decided on.&lt;br /&gt;
&lt;br /&gt;
===Useless Feedback===&lt;br /&gt;
Again my previous experiences have taught me a lot of about taking in and digesting feedback.  You can't take every piece of advice as gospel.  I've burned a lot of time sitting down and mulling over the feedback I've gotten on my work.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Which Project I Picked===&lt;br /&gt;
I picked the save game project.  I hope to make the multiplayer and single player experience of Wesnoth indistinguishable, at least when it comes to saving.&lt;br /&gt;
&lt;br /&gt;
===Why This Project===&lt;br /&gt;
If there's one thing that I love about games, its working together with another player.  Getting a multiplayer campaign option working for Wesnoth would be a huge step for it and add a hugely valuable feature.  In addition to this, I feel that this project is very doable with my current experience with C++.&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29252</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29252"/>
		<updated>2009-03-25T02:15:46Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Preferred E-mail Address===&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
===Handles===&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
===Why GSoC?===&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
===School===&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
===Patches for Wesnoth===&lt;br /&gt;
I have not yet submitted anything to the Wesnoth project but I plan on doing my best to change that.&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29251</id>
		<title>SummerOfCodeProposal grantwu</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_grantwu&amp;diff=29251"/>
		<updated>2009-03-25T02:15:27Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: New page: ==Basics==  ===Introduction=== My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.  ==Preferred E-mail Address== grantwu ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
My name is Grant Wu and I hope to work with the Wesnoth developers over the summer as part of Google's Summer of Code.&lt;br /&gt;
&lt;br /&gt;
==Preferred E-mail Address==&lt;br /&gt;
grantwu at umich dot edu&lt;br /&gt;
&lt;br /&gt;
==Handles==&lt;br /&gt;
My handle on the IRC channels is 'grantwu' while my name on the forums is 'zenneth'.&lt;br /&gt;
&lt;br /&gt;
==Why GSoC?==&lt;br /&gt;
I want to participate in Google's Summer of Code in order to gain experience working with veteran coders on a project that interests me.  I plan on entering the video game industry after I graduate so the Wesnoth project looks like the best fit to me.&lt;br /&gt;
&lt;br /&gt;
==School==&lt;br /&gt;
I am currently enrolled at the University of Michigan in Ann Arbor.  I am in my second year of studying Computer Science through the College of Engineering.&lt;br /&gt;
&lt;br /&gt;
==Patches for Wesnoth==&lt;br /&gt;
I have not yet submitted anything to the Wesnoth project but I plan on doing my best to change that.&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeIdeas&amp;diff=29247</id>
		<title>SummerOfCodeIdeas</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeIdeas&amp;diff=29247"/>
		<updated>2009-03-25T00:56:28Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: /* Savegame reorganization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compilation of ideas from ML. Needs to be refined (more detailed description, deliverables, workload estimation?):&lt;br /&gt;
&lt;br /&gt;
== I want to be one of your Google Summer of Code students, what should I do... ==&lt;br /&gt;
&lt;br /&gt;
Here is a quick list of things to do to get you started&lt;br /&gt;
* Create an account on gna.org&lt;br /&gt;
* Create an account on the wesnoth forum, and tell an admin on the IRC channel to mark is as a GSoC Student account (Admins are boucman, Ivanovic, mordante, Shadow_Master, Sirp and Turuk)&lt;br /&gt;
* Join the irc channel (#wesnoth-dev on irc.freenode.net) and introduce yourself. We will not give formal interviews, but we will clearly favor people we have learned to know during the selection process (basically communication via IRC is mandatory for our project! it is the main way of &amp;quot;every day communication&amp;quot; for Wesnoth. For the same reason, it's also a good idea to regularly read the [http://wesnoth.debian.net/?C=M;O=A IRC logs].).&lt;br /&gt;
&lt;br /&gt;
* Start a wiki page about your idea, add a link on the bottom of this page and add this information on it:&lt;br /&gt;
** List your account names (gna, forum, irc nick) so that we can recognize you&lt;br /&gt;
** Fill the questionnaire on this page: [[SoC_Information_for_Google#Does_your_organization_have_an_application_template_you_would_like_to_see_students_use.3F_If_so.2C_please_provide_it_now.| List of questions to answer]]&lt;br /&gt;
** Detail your idea as much as possible, look at other students pages, and please give milestones and studies you've done&lt;br /&gt;
** Add a link to the page at the bottom of this page&lt;br /&gt;
&lt;br /&gt;
* Though not mandatory, it is highly advisable to go to the [[EasyCoding]] and [[NotSoEasyCoding]] pages and implement one of these ideas (or any idea of similar scope) so we have an idea how you work. Be sure to use your gna account when submitting these patches so we know who it is coming from. You can also implement some features from our feature request database at gna. When you implement something, also list it on your own page with a reference to the patch.&lt;br /&gt;
&lt;br /&gt;
* For working on Wesnoth you have to be able to compile trunk. To do so you should have a look at the [[WesnothSVN|page about svn]] and afterwards [[CompilingWesnoth|compile Wesnoth svn]].&lt;br /&gt;
&lt;br /&gt;
* Once you have everything done here and think your idea is okay, go to [http://groups.google.com/group/google-summer-of-code-announce/web/guide-to-the-gsoc-web-app-for-student-applicants page at google] to submit your application. You have to submit it before '''Date to be supplied later''' or you have no chance to get in!&lt;br /&gt;
&lt;br /&gt;
== List of Ideas for the Project (Suggestions from the wesnoth developers) ==&lt;br /&gt;
&lt;br /&gt;
Here is only a short description of possible Ideas we have, each has a page of its own with a more detailed version on it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize implementation of WML for memory usage ===&lt;br /&gt;
&lt;br /&gt;
Based on this idea: [http://dave.wesnoth.org/?p=9] optimize WML to minimize its memory usage. High memory usage has been a problem for Wesnoth, and this project will aim to reduce it.&lt;br /&gt;
&lt;br /&gt;
=== Implement campaign statistics reports on stats.wesnoth.org ===&lt;br /&gt;
&lt;br /&gt;
Wesnoth has an infrastructure which records details of campaigns that players play into a centralized MySQL database. However, we only have rudimentary reports based on this MySQL database available at this time, at [http://stats.wesnoth.org].&lt;br /&gt;
&lt;br /&gt;
This project would involve writing a stats reporting web site which would take the data from the MySQL database and produce reports in chart and table form. Campaign designers would be able to use these reports to gather feedback on their campaigns and get ideas for improvements.&lt;br /&gt;
&lt;br /&gt;
A student could largely make their choice of infrastructure for creating the Website -- whether they prefer Python, Perl, Ruby, PHP, etc. This is a great opportunity for someone who doesn't want to dive into hardcore C++ to make a valuable contribution to Wesnoth.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Stats Server]] - Full Version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Extending the Multiplayer server ===&lt;br /&gt;
&lt;br /&gt;
Our multiplayer community is generally strong and healthy, but we believe its growth is limited by some problems in the interface of the multiplayer lobby.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Multiplayer server]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Addon server ===&lt;br /&gt;
Wesnoth has an addon server which offers users to upload user &lt;br /&gt;
made content (UMC). This allows all other users of Wesnoth&lt;br /&gt;
to easily download and install this content. The server was &lt;br /&gt;
originally written for user-made campaigns but contains a lot&lt;br /&gt;
more types of addons nowadays. Both the server side and the &lt;br /&gt;
client side need to be improved.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Addon Server]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== WML validation schemes ===&lt;br /&gt;
Wesnoth uses WML as basic data structure. Over the years&lt;br /&gt;
this language has evolved and got more complex. At the&lt;br /&gt;
moment the WML is validated at runtime and in case of a&lt;br /&gt;
problem the engine stops. With schemes these problems can&lt;br /&gt;
be validated when loading the WML, making it easier to find&lt;br /&gt;
problems before running into them.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Schemes]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Write a primitive library for Formula AI ===&lt;br /&gt;
&lt;br /&gt;
Wesnoth has always had a simple C++ based AI. David (our lead developer) has been working on a simple language to write AI in Wesnoth: [[FormulaAI]]&lt;br /&gt;
&lt;br /&gt;
The Wesnoth AI is used as an opponent in most campaigns, and as such is an important piece of code for the Wesnoth project. Unfortunately, because the skills required to understand and modify it are rather arcane, it is also one of the most neglected parts of the Wesnoth code. This is a place where a lot of research and useful work could be done. But keep in mind that [[WhyWritingAWesnothAIIsHard|writing an AI for Wesnoth is difficult]].&lt;br /&gt;
&lt;br /&gt;
Writing a whole AI is so complicated that we believe it can't be done in a single Summer of code. All proposals should keep that in mind and try to identify an interesting subset that would be workable in the limited time of a summer of code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas FormulaAI]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Savegame reorganization ===&lt;br /&gt;
The savegame formats of Wesnoth for single player campaigns&lt;br /&gt;
and multiplayer differ from each other. And they are processed&lt;br /&gt;
differently as well. Now there is an additional request coming&lt;br /&gt;
up: Multiplayer campaigns. The task will be to unify the savegames&lt;br /&gt;
for all types of scenarios in order to provide a maintainable code&lt;br /&gt;
again.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Savegame]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible ideas to be fleshed out ===&lt;br /&gt;
A MapGenerator rewrite - better scalable for outdoor maps, plus the possibility to define areas (similar to the caverns in the cave generator) etc.&lt;br /&gt;
&lt;br /&gt;
=== Make your own ideas ===&lt;br /&gt;
If you have your own idea the best thing is to join IRC wesnoth-dev at irc.freenode.net and discuss the idea with the developers there. If the developers think your idea is interesting and like the feature you can start to turn it into a full proposal. Once done discuss it again on IRC so the developers can accept your idea.&lt;br /&gt;
&lt;br /&gt;
== Information about our Project ==&lt;br /&gt;
The information we provided google with about our project can be looked up at the site [[SoC Information for Google]].&lt;br /&gt;
&lt;br /&gt;
Also see the [[DeveloperResources]] link (from the [[Project]] page).&lt;br /&gt;
&lt;br /&gt;
== People to bug on IRC ==&lt;br /&gt;
We have prepared a list of people with their &amp;quot;area of competence&amp;quot;. This is to give you an idea on which areas those people can be of help for you. Of course you should always just ask in the IRC chan, but those are the most likely ones to answer questions in the respective area. And here is the list:&lt;br /&gt;
&lt;br /&gt;
[[SoC People to bug on IRC]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Student pages ==&lt;br /&gt;
&lt;br /&gt;
Please add a link to your wiki page below&lt;br /&gt;
&lt;br /&gt;
==== Implement Statistics ====&lt;br /&gt;
[[SummerOfCodeProposal_csaunders | csaunders - SoC Proposal - Stats Server]]&lt;br /&gt;
&lt;br /&gt;
==== AI ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Velory| Velory - SoC Proposal]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_AI_Improvement_Crab| Crab - SoC Proposal - AI Improvement]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Sparksteel | Sparksteel - Improving the AI engine design]]&lt;br /&gt;
&lt;br /&gt;
==== Savegame reorganization ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Euschn | Euschn - Savegame reorganization]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_lmg| lmg - Savegame reorganization]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_grantwu| grantwu - Savegame reorganization]]&lt;br /&gt;
&lt;br /&gt;
==== Extending the Multiplayer server ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_rubend | rubend - Extending the Multiplayer server]]&lt;br /&gt;
&lt;br /&gt;
==== Addon server ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Ryochan7| Ryochan7 - Addon server]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_iyonius| iyonius - Addon server]]&lt;br /&gt;
&lt;br /&gt;
==== Optimize implementation of WML for memory usage ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_res| res -  Optimize implementation of WML for memory usage ]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_jdmunro| jdmunro -  Optimize implementation of WML for memory usage ]]&lt;br /&gt;
&lt;br /&gt;
==== Implement campaign statistics reports on stats.wesnoth.org ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Elbin| Elbin - New campaign statistics page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Munk| Munk - New campaign stats page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_carlestyle| carlestyle - New campaign stats page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_nerwa| NeRwa - New campaign stats page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_mrfinch| mrfinch - New Campaign Statistics Page]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code|*]]&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeIdeas&amp;diff=29246</id>
		<title>SummerOfCodeIdeas</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeIdeas&amp;diff=29246"/>
		<updated>2009-03-25T00:56:12Z</updated>

		<summary type="html">&lt;p&gt;Grantwu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compilation of ideas from ML. Needs to be refined (more detailed description, deliverables, workload estimation?):&lt;br /&gt;
&lt;br /&gt;
== I want to be one of your Google Summer of Code students, what should I do... ==&lt;br /&gt;
&lt;br /&gt;
Here is a quick list of things to do to get you started&lt;br /&gt;
* Create an account on gna.org&lt;br /&gt;
* Create an account on the wesnoth forum, and tell an admin on the IRC channel to mark is as a GSoC Student account (Admins are boucman, Ivanovic, mordante, Shadow_Master, Sirp and Turuk)&lt;br /&gt;
* Join the irc channel (#wesnoth-dev on irc.freenode.net) and introduce yourself. We will not give formal interviews, but we will clearly favor people we have learned to know during the selection process (basically communication via IRC is mandatory for our project! it is the main way of &amp;quot;every day communication&amp;quot; for Wesnoth. For the same reason, it's also a good idea to regularly read the [http://wesnoth.debian.net/?C=M;O=A IRC logs].).&lt;br /&gt;
&lt;br /&gt;
* Start a wiki page about your idea, add a link on the bottom of this page and add this information on it:&lt;br /&gt;
** List your account names (gna, forum, irc nick) so that we can recognize you&lt;br /&gt;
** Fill the questionnaire on this page: [[SoC_Information_for_Google#Does_your_organization_have_an_application_template_you_would_like_to_see_students_use.3F_If_so.2C_please_provide_it_now.| List of questions to answer]]&lt;br /&gt;
** Detail your idea as much as possible, look at other students pages, and please give milestones and studies you've done&lt;br /&gt;
** Add a link to the page at the bottom of this page&lt;br /&gt;
&lt;br /&gt;
* Though not mandatory, it is highly advisable to go to the [[EasyCoding]] and [[NotSoEasyCoding]] pages and implement one of these ideas (or any idea of similar scope) so we have an idea how you work. Be sure to use your gna account when submitting these patches so we know who it is coming from. You can also implement some features from our feature request database at gna. When you implement something, also list it on your own page with a reference to the patch.&lt;br /&gt;
&lt;br /&gt;
* For working on Wesnoth you have to be able to compile trunk. To do so you should have a look at the [[WesnothSVN|page about svn]] and afterwards [[CompilingWesnoth|compile Wesnoth svn]].&lt;br /&gt;
&lt;br /&gt;
* Once you have everything done here and think your idea is okay, go to [http://groups.google.com/group/google-summer-of-code-announce/web/guide-to-the-gsoc-web-app-for-student-applicants page at google] to submit your application. You have to submit it before '''Date to be supplied later''' or you have no chance to get in!&lt;br /&gt;
&lt;br /&gt;
== List of Ideas for the Project (Suggestions from the wesnoth developers) ==&lt;br /&gt;
&lt;br /&gt;
Here is only a short description of possible Ideas we have, each has a page of its own with a more detailed version on it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize implementation of WML for memory usage ===&lt;br /&gt;
&lt;br /&gt;
Based on this idea: [http://dave.wesnoth.org/?p=9] optimize WML to minimize its memory usage. High memory usage has been a problem for Wesnoth, and this project will aim to reduce it.&lt;br /&gt;
&lt;br /&gt;
=== Implement campaign statistics reports on stats.wesnoth.org ===&lt;br /&gt;
&lt;br /&gt;
Wesnoth has an infrastructure which records details of campaigns that players play into a centralized MySQL database. However, we only have rudimentary reports based on this MySQL database available at this time, at [http://stats.wesnoth.org].&lt;br /&gt;
&lt;br /&gt;
This project would involve writing a stats reporting web site which would take the data from the MySQL database and produce reports in chart and table form. Campaign designers would be able to use these reports to gather feedback on their campaigns and get ideas for improvements.&lt;br /&gt;
&lt;br /&gt;
A student could largely make their choice of infrastructure for creating the Website -- whether they prefer Python, Perl, Ruby, PHP, etc. This is a great opportunity for someone who doesn't want to dive into hardcore C++ to make a valuable contribution to Wesnoth.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Stats Server]] - Full Version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Extending the Multiplayer server ===&lt;br /&gt;
&lt;br /&gt;
Our multiplayer community is generally strong and healthy, but we believe its growth is limited by some problems in the interface of the multiplayer lobby.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Multiplayer server]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Addon server ===&lt;br /&gt;
Wesnoth has an addon server which offers users to upload user &lt;br /&gt;
made content (UMC). This allows all other users of Wesnoth&lt;br /&gt;
to easily download and install this content. The server was &lt;br /&gt;
originally written for user-made campaigns but contains a lot&lt;br /&gt;
more types of addons nowadays. Both the server side and the &lt;br /&gt;
client side need to be improved.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Addon Server]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== WML validation schemes ===&lt;br /&gt;
Wesnoth uses WML as basic data structure. Over the years&lt;br /&gt;
this language has evolved and got more complex. At the&lt;br /&gt;
moment the WML is validated at runtime and in case of a&lt;br /&gt;
problem the engine stops. With schemes these problems can&lt;br /&gt;
be validated when loading the WML, making it easier to find&lt;br /&gt;
problems before running into them.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Schemes]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Write a primitive library for Formula AI ===&lt;br /&gt;
&lt;br /&gt;
Wesnoth has always had a simple C++ based AI. David (our lead developer) has been working on a simple language to write AI in Wesnoth: [[FormulaAI]]&lt;br /&gt;
&lt;br /&gt;
The Wesnoth AI is used as an opponent in most campaigns, and as such is an important piece of code for the Wesnoth project. Unfortunately, because the skills required to understand and modify it are rather arcane, it is also one of the most neglected parts of the Wesnoth code. This is a place where a lot of research and useful work could be done. But keep in mind that [[WhyWritingAWesnothAIIsHard|writing an AI for Wesnoth is difficult]].&lt;br /&gt;
&lt;br /&gt;
Writing a whole AI is so complicated that we believe it can't be done in a single Summer of code. All proposals should keep that in mind and try to identify an interesting subset that would be workable in the limited time of a summer of code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas FormulaAI]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Savegame reorganization ===&lt;br /&gt;
The savegame formats of Wesnoth for single player campaigns&lt;br /&gt;
and multiplayer differ from each other. And they are processed&lt;br /&gt;
differently as well. Now there is an additional request coming&lt;br /&gt;
up: Multiplayer campaigns. The task will be to unify the savegames&lt;br /&gt;
for all types of scenarios in order to provide a maintainable code&lt;br /&gt;
again.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Savegame]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible ideas to be fleshed out ===&lt;br /&gt;
A MapGenerator rewrite - better scalable for outdoor maps, plus the possibility to define areas (similar to the caverns in the cave generator) etc.&lt;br /&gt;
&lt;br /&gt;
=== Make your own ideas ===&lt;br /&gt;
If you have your own idea the best thing is to join IRC wesnoth-dev at irc.freenode.net and discuss the idea with the developers there. If the developers think your idea is interesting and like the feature you can start to turn it into a full proposal. Once done discuss it again on IRC so the developers can accept your idea.&lt;br /&gt;
&lt;br /&gt;
== Information about our Project ==&lt;br /&gt;
The information we provided google with about our project can be looked up at the site [[SoC Information for Google]].&lt;br /&gt;
&lt;br /&gt;
Also see the [[DeveloperResources]] link (from the [[Project]] page).&lt;br /&gt;
&lt;br /&gt;
== People to bug on IRC ==&lt;br /&gt;
We have prepared a list of people with their &amp;quot;area of competence&amp;quot;. This is to give you an idea on which areas those people can be of help for you. Of course you should always just ask in the IRC chan, but those are the most likely ones to answer questions in the respective area. And here is the list:&lt;br /&gt;
&lt;br /&gt;
[[SoC People to bug on IRC]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Student pages ==&lt;br /&gt;
&lt;br /&gt;
Please add a link to your wiki page below&lt;br /&gt;
&lt;br /&gt;
==== Implement Statistics ====&lt;br /&gt;
[[SummerOfCodeProposal_csaunders | csaunders - SoC Proposal - Stats Server]]&lt;br /&gt;
&lt;br /&gt;
==== AI ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Velory| Velory - SoC Proposal]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_AI_Improvement_Crab| Crab - SoC Proposal - AI Improvement]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Sparksteel | Sparksteel - Improving the AI engine design]]&lt;br /&gt;
&lt;br /&gt;
==== Savegame reorganization ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Euschn | Euschn - Savegame reorganization]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_lmg| lmg - Savegame reorganization]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_grantwu| grantwu - Savegame reorganization]]&lt;br /&gt;
&lt;br /&gt;
==== Extending the Multiplayer server ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_rubend | rubend - Extending the Multiplayer server]]&lt;br /&gt;
&lt;br /&gt;
==== Addon server ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Ryochan7| Ryochan7 - Addon server]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_iyonius| iyonius - Addon server]]&lt;br /&gt;
&lt;br /&gt;
==== Optimize implementation of WML for memory usage ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_res| res -  Optimize implementation of WML for memory usage ]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_jdmunro| jdmunro -  Optimize implementation of WML for memory usage ]]&lt;br /&gt;
&lt;br /&gt;
==== Implement campaign statistics reports on stats.wesnoth.org ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Elbin| Elbin - New campaign statistics page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Munk| Munk - New campaign stats page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_carlestyle| carlestyle - New campaign stats page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_nerwa| NeRwa - New campaign stats page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_mrfinch| mrfinch - New Campaign Statistics Page]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code|*]]&lt;/div&gt;</summary>
		<author><name>Grantwu</name></author>
		
	</entry>
</feed>