EvolutionaryMapEditor

From The Battle for Wesnoth Wiki
Revision as of 17:53, 24 March 2008 by Xonev (talk | contribs) (Project)

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 through WML.
  • 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).
  • Add new features.
    • 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 [1].

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.

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.