Difference between revisions of "EvolutionaryMapEditor"

From The Battle for Wesnoth Wiki
m (Hide historical instance of "Subversion" from mediawiki search to avoid false positives.)
 
Line 49: Line 49:
 
==Practical Considerations==
 
==Practical Considerations==
 
===Tools===
 
===Tools===
I am familiar with subversion and C++ - I have messed around with Python a very small amount a year ago or so.
+
I am familiar with sub­­version and C++ - I have messed around with Python a very small amount a year ago or so.
 
The development tools I usually use are  
 
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.
 
*Visual C++ Express Edition for C++ - I use this because it's free and I usually develop in Windows.

Latest revision as of 23:41, 20 March 2013

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 sub­­version 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.

Spoken Languages

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

Me (and why I would be a good choice)

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.

I would be a good choice for your project not because I am an expert at any one area. I do not claim to be a C++ master or anything of the sort. The reason I would be a good, no, great choice for your project is that I am a very highly motivated individual - I work very hard even when completely unsupervised and I have a superbly developed sense of responsibility for everything that I am expected to complete. I am also a quick learner, but when I have trouble with something I will stick with it until I get it (or find a better way to do it).

Essay

Why do I want to participate in Battle for Wesnoth for Google Summer of Code? My first reaction to this question would be a simple one: I want to get paid to work on a game that I have fun playing. This answer may appear rather shallow at first (and it really is), but my reason for wanting to work on this open source project runs much deeper than it being a fun-to-play game. In fact, when analyzed, it is clear that this question is two-fold. Why do I want to participate in Google Summer of Code? And furthermore, why did I choose Battle for Wesnoth?

There are a few reasons that I want to participate in Google Summer of Code. If I get the privilege of participating in Google Summer of Code I will get paid for doing something I love - programming. There are several aspects to my love of programming. The first aspect is my love of learning. I love finding out new things, discussing new concepts, and discovering better ways to do things - these are all inherent attributes of programming. The second aspect to my love of programming is my love of figuring stuff out. I enjoy employing my mind and skills in solving a tough problem. The third and probably most influential aspect of my love of programming is my desire to create things. Even if it is just something simple such as writing a new method, there is something intoxicating about creating new content that works. This love of creating things is what got me interested in programming in the first place and why I will continue programming throughout my career.

Another reason I desire to participate in Google Summer of Code is my belief in open source. I think that open source is a very important part of software development. I am not sure how I feel about the idea of open source being the best method of software development, but it is definitely a proven method. Much of the software I use is open source and I have been pleased with all that I have used so far. I think that open source leads to better maintained software since the people who write it are generally the people who use it, and anyone who uses it can contribute to it to make it better. This also leads to open source software being tailor made for the community that uses it. I believe that open source will become more and more popular as it becomes more well known and it is certainly something that I will be proud to be involved in.

The other reason that I wish to be a part of Google Summer of Code is my desire to put my knowledge to use. I have spent a lot of time looking through different projects on the sourceforge website for particularly this reason. I feel like I have learned a lot in my classes, but I do not think that I will really have what I need to survive in the software development industry without keeping my skills sharp by using them on real projects. This is probably my main reason for being interested in Google Summer of Code. I want to learn as much as I can while working on a worthwhile project (preferably while getting paid).

The other question that needs to be answered is why am I interested in Battle for Wesnoth? The answer to this question is actually quite simple. I was looking for a project that could use my skills and that was managed well. The first thing I was especially impressed with about Battle for Wesnoth was how much effort has been made to get Google Summer of Code potentials up to speed. It was not difficult at all for me to find exactly what would be expected from me and exactly what I would need to look at and learn about to submit a competent proposal and to get involved with the project in general. Not only that, but the documentation that I have read over so far has been well written and rather easily understandable. Also, the developers on IRC have been more than helpful whenever I have had a question to ask. I believe that all of these things point to the fact that Battle for Wesnoth is a well-developed, well-structured, well-managed, and well-maintained project. More evidence to the fact that Battle for Wesnoth is a well-done project is the quality of the game itself. It may not be the most complicated game, but it is very polished and well-presented. Battle for Wesnoth also seemed like a good fit for me because it is written mostly in C++ which is the programming language I am most interested in. Also, Battle for Wesnoth is a game, which is something I am quite familiar with, being a regular gamer.

In conclusion, my reasons for wanting to become involved with Battle for Wesnoth for Google Summer of Code are two-fold. First, I want to become involved with Google Summer of Code in general because I want to be able to spend the majority of my summer doing what I love - programming. Second, I want to get involved with Battle for Wesnoth because I feel that it is a well-done project and it is in a category of software that I have personally been a involved with for quite some time.

This page was last edited on 20 March 2013, at 23:41.