Difference between revisions of "EvolutionaryMapEditor"

From The Battle for Wesnoth Wiki
(Project)
(Project)
Line 25: Line 25:
 
**Many of the options in the editor that could be modularized are currently hardcoded - I want to change that.  For example:
 
**Many of the options in the editor that could be modularized are currently hardcoded - I want to change that.  For example:
 
***Brush selection and terrain palette coordinates are hardcoded - these can be made theme-able.
 
***Brush selection and terrain palette coordinates are hardcoded - these can be made theme-able.
***The tool-tips are all hardcoded in - these could be modularized through WML.
+
***The tool-tips are all hardcoded in - these could be modularized as well.
 +
***The random map generator currently only supports running one map generator, hard coded - I would look at adding functionality to run any generator config that the user would want to use.
 
*Generally improve/refactor existing code in the map editor.
 
*Generally improve/refactor existing code in the map editor.
 
**Obviously, this would involve becoming familiar with Wesnoth coding standards and the Wesnoth code itself (which I have already begun working on).
 
**Obviously, this would involve becoming familiar with Wesnoth coding standards and the Wesnoth code itself (which I have already begun working on).
*Add new features.
+
**There have been complaints about the copy function not working as expected sometimes.
**One of the first features which I would like to add would be having more direct control over the aesthetics of the map from the map editor.  From what I understand, this may require adding some functionality outside of the /editor code.  For more information on this see [http://www.wesnoth.org/forum/viewtopic.php?f=15&t=20506].
+
**Make sure that everything is rendered exactly the same way as it is in an actual Wesnoth game.
 +
*Add new features.  For more information on this see http://www.wesnoth.org/forum/viewtopic.php?f=15&t=20506.
 +
**Add handling of custom terrain - add functionality to use terrain other than what is loaded in the editor by default.
 +
**Add ability to reload config files without reloading the editor so that users can edit the config files and be able to see the results without completely restarting the editor.
 +
**If time for this summer allows (or after the summer if it does not) I would like to add the ability for the user to have more direct control over the aesthetics of the map from the map editor.  From what I understand, this would require making some changes to the terrain generator engine.
  
To summarize, I would start with improving what is already there for two reasons - to bring the existing code up to par with the rest of the project and to become more familiar with what is already there.  As the summer progressed, I would discuss new features that could be added with my mentor and the community and work towards implementing them.  One of the first features which I would like to add is the ability to more directly control the aesthetics of a map from the editor.
+
To summarize, I would start with improving what is already there for two reasons - to bring the existing code up to par with the rest of the project and to become more familiar with what is already there.  As the summer progressed, I would discuss new features that could be added with my mentor and the community and work towards implementing them.  Two of the features which I could almost certainly complete this summer would be adding the ability to handle custom terrain and adding the ability to reload config files without restarting the editor.
 +
 
 +
Tentative Summer Time-line:
 +
*Improve/refactor Existing Code (April 14 - July 7)
 +
**Debug copy functionality.
 +
*Add interfaces for additional random map generator config files (May 26 - June 17)
 +
*Make brush-selection and terrain-palette coordinates theme-able (June 17 - June 27)
 +
*Make tool-tips theme-able (June 27 - July 7)
 +
*Add ability to use "custom terrain" (July 7 - July 24)
 +
*Add ability to reload config files without reloading editor ( July 24 - August 11)
  
 
==Practical Considerations==
 
==Practical Considerations==

Revision as of 01:19, 25 March 2008

General Info

My name is Steven Oxley. My preferred e-mail address is sajo at andrews dot edu, my nick on the forums and in irc is xonev.

I am a Junior computer science major at Andrews University. My main reason for becoming interested in Google Summer of Code is that I would really like some experience doing some actual coding outside of my classes or the odd project I do from time to time and I am eager to supplement all of the learning I have already gained from my classes.

I am a gamer. I play all kinds of games - I especially enjoy first person shooters, but rpgs and strategy games are also up there on the list. I am not a big fan of real-time strategy games as I find that I have trouble keeping a good balance between offense and development. I like a good balance between story and gameplay in my games, but my focus tends to tip towards gameplay. For instance, a game could have a horrible story and great gameplay and I would play it, but a game with a great story and horrible gameplay I would not play. I had not played Wesnoth before I looked it up in the GSoC listing, but I have now and I enjoy it a great deal. It's just the type of strategy game I like. I have not played the multiplayer yet, but I plan on it in the future.

Experience

Most of my experience with writing software has come in the academic environment. I have done some other web-programming work as a side project at my job (computer technician at Andrews), but nothing major professionally. I have never really contributed to an open source project before either although I have been looking for one to get involved with over the past month or so.

I have developed software in a team environment in my Software Engineering group project class. We created a database application to keep track of inventory. I turned out to be one of the key members of the group as I often had to keep the group focused and ended up doing a large amount of the programming. I also worked on an Android project with some of my friends - unfortunately, it pretty much died in the concept phase.

I have never participated in GSoC before, but am hoping to this year ;P

I am a firm believer in the evolutionary model of software development. I am also an advocate of not reinventing what is already available. This, I believe, will greatly influence my proposal as I will attempt not to rewrite the map editor from scratch, but instead work with what is already there and evolve it into something better.

Communication Skills

I am fluent in English - it is my mother tongue. I find that I get along well with everyone I interact with - even if they are not so friendly to begin with. I am usually able to see other people's side of things which greatly helps in communicating with them. I take advice and criticism seriously and usually manage not to get defensive. I think critically about all advice I am given.

Project

The basic overview for my plans at revamping the map editor is this: I want to take what is already there (because it is by no means useless) and improve it one bit at a time in an evolutionary manner. At every point, I want to have a working piece of software.

Some of the changes that I would like to make to the editor are as follows:

  • Modularize everything (within reason).
    • Many of the options in the editor that could be modularized are currently hardcoded - I want to change that. For example:
      • Brush selection and terrain palette coordinates are hardcoded - these can be made theme-able.
      • The tool-tips are all hardcoded in - these could be modularized as well.
      • The random map generator currently only supports running one map generator, hard coded - I would look at adding functionality to run any generator config that the user would want to use.
  • Generally improve/refactor existing code in the map editor.
    • Obviously, this would involve becoming familiar with Wesnoth coding standards and the Wesnoth code itself (which I have already begun working on).
    • There have been complaints about the copy function not working as expected sometimes.
    • Make sure that everything is rendered exactly the same way as it is in an actual Wesnoth game.
  • Add new features. For more information on this see http://www.wesnoth.org/forum/viewtopic.php?f=15&t=20506.
    • Add handling of custom terrain - add functionality to use terrain other than what is loaded in the editor by default.
    • Add ability to reload config files without reloading the editor so that users can edit the config files and be able to see the results without completely restarting the editor.
    • If time for this summer allows (or after the summer if it does not) I would like to add the ability for the user to have more direct control over the aesthetics of the map from the map editor. From what I understand, this would require making some changes to the terrain generator engine.

To summarize, I would start with improving what is already there for two reasons - to bring the existing code up to par with the rest of the project and to become more familiar with what is already there. As the summer progressed, I would discuss new features that could be added with my mentor and the community and work towards implementing them. Two of the features which I could almost certainly complete this summer would be adding the ability to handle custom terrain and adding the ability to reload config files without restarting the editor.

Tentative Summer Time-line:

  • Improve/refactor Existing Code (April 14 - July 7)
    • Debug copy functionality.
  • Add interfaces for additional random map generator config files (May 26 - June 17)
  • Make brush-selection and terrain-palette coordinates theme-able (June 17 - June 27)
  • Make tool-tips theme-able (June 27 - July 7)
  • Add ability to use "custom terrain" (July 7 - July 24)
  • Add ability to reload config files without reloading editor ( July 24 - August 11)

Practical Considerations

Tools

I am familiar with subversion and C++ - I have messed around with Python a very small amount a year ago or so. The development tools I usually use are

  • Visual C++ Express Edition for C++ - I use this because it's free and I usually develop in Windows.
  • Notepad++ - I use this for any web-based projects I might be working on.
  • phpMyAdmin - Again, I use this for web-based database stuff because it recognizes language syntax for all the languages I might need for web-based apps.
  • ShaderDesigner - I use this one for writing OpenGL vertex and fragment shaders.
  • RenderMonkey - I use this for writing shaders if I don't think I will have to mess around with any application code.
  • Eclipse - I have used this for doing some Java stuff.

Languages

The Languages I'm fluent in:

Programming Languages

  • C++ - I've used c/c++ a lot in several of my classes.
  • PHP - I've probably used this the most.
  • GLSL - For those who don't know, it's a gpu shader language.
  • Several others I've done some basic stuff with - Java, Javascript, PERL, Python.

Languages

  • English - I think my English teacher used to nag me about having outline headings with only one point *shrug*


I am usually awake from 11 utc to 3 utc. I could probably adjust this just about however I wanted if I were to get the GSoC position. I would be perfectly comfortable talking to my mentor via voip, telephone, or whatever.