VimzardMapEditor

From The Battle for Wesnoth Wiki
Revision as of 08:23, 30 March 2008 by Vimzard (talk | contribs) (Added timeline)

Introduction

Name: Arun Tejasvi Chaganty

Nicks: vimzard on irc, forum and wiki.

Email: arunchaganty [at] gmail.com

Applying for: Map Editor / Parts of Scenario Editor (i.e. Integration of Map Editor with Scenario Editor)

My name is Arun Chaganty. I'm a 1st year Comp. Sci. & Engg. undergraduate at the Indian Institute of Technology, Madras (IITM). I like fiddling with any/everything, be it cracking open a phone or screwing around with mycomp. My motto is: "If it ain't broke, fix it till it is". Otherwise, I like playing basketball, reading/writing, and I'm currently trying not to suck at the guitar.

I've more or less learnt all that I know about programming from the open source world. By looking through code, I've gained insights in coding practices, techniques and paradigms. There are a lot of things that books and courses can't teach you; you have to look at a real live project to understand code organization, and make sense of OOPS, etc. This has meant a lot to me, and I really want to contribute back to the Open Source Wolrd. That is my prime motive for taking part in GSoC. I believe participating in such a project will encourage me to contribute regularly, and become part of the movement, besides teaching me loads. I really like Wesnoth, and I've been playing it since version 0.9.8 (I'm just stunned by the improvement). When I saw that it was on the GSoC list, I decided to apply for it.

Project

I've chosen the Map Editor because I'd like to make it fully functional. It's the beginning of the chain of making a new scenario, and hence, I feel it's important to get it right. Besides implementing a few features, and revamping it, I would like to work with whoever's doing the Scenario Editor to integrate it with that. I've gather the following points from a discussion on the IRC (mainly with _jbx_ and zookeeper). Of course there will be more things as I go along. The UI toolkit I will use will depend on whether or not it gets integrated with the scenario editor. Right now I'm rooting for wxWidgets, because of its cross-platform friendliness.

Features

  • Essential
    • An improved copy/paste, with a selection tool, smart feature selection (like the magic wand).
    • Better resizing and rotating tools.
    • Full map Screenshots / (export to png) ability. A selection based screenshot tool.
    • Support for usermade content
      • Getting additional tiles, etc. from the wesnoth server.
  • Secondary
    • Support for static WML objects (like trees, campfires, etc.)
    • A more customizable random map generator
      • Terrain type (right now is purely random)
      • Abiltiy to add weights for each player, i.e. give the enemy an advantage/disadvantage
      • Smart generation of strategic points (like a bridging island or a valley).
  • Running Task
    • Integration with the Scenario Editor

UI Mockup

I felt that the UI should be something along the lines of GIMP, and as a result, my mockup does bare striking resemblence :D. I've also mashed in some parts of Glade. Overall, I don't think there are any big UI points I'd like to change.

http://picasaweb.google.co.uk/arunchaganty/General/photo#5181720349165510770

The brush set is replaced with tiles. A key ui element missing here is a drop down selector in the brushes tab to change the current palette, from different terrain sets (mainline and custom). The navigator supports a zoom (as does the main map window). The File|Edit|View bar in each map is probably unnecessary. You can toggle between tabs. The missing portion on the lower right is currently free space. I propose that it will contain features for integration with the scenario editor, at which point the layout will be changed quite a bit.

Vague Timeline

Upto May 26: Get more familiar with the Wesnoth code, interact with the community to get a better insight into what they'd like from a map editor. Start with creation of a dummy UI.

  • Task 1 (2 weeks): Get something that works like the existing map editor up.
  • Task 2 (1 week): Selection and copy-paste tool
  • Task 3 (1 week): Resizing/Rotation and screenshot tool.
  • Task 4 (1.5 weeks): Support for user content.
  • Task 5 (2 weeks): Random map generator
  • Task 6a (1 week): WML Objects (if not integrating with the scenario editor)
  • Running Task: Integration with the Scenario Editor
  • Task 7 (.5 weeks): Getting themes/etc. from the Wesnoth server.

Prior Experience

I've not had a lot of experience with large-scale projects. However most of what I've done has included creating small proof-of-concept programs using libraries. As a result, I'm comfortable using the following libraries:

  • SDL
  • GL
  • wxWidgets

I'm also familiar with GTK. I've learnt several languages to competence, namely, C/C++, PHP, Java and Python. A list of what I've done till date

  • I've made a simple Pong game (which I tried to extend into a more complex 3D version - I couldnt pursue it much further due to lack of time and academic pressure) using SDL (and GL for the 3D version).
  • A lame computerized version of "Guess-Who" as fan-art(http://www.fluffinbrooklyn.com/fan-art/?p=26). I'm not particularly proud of it because it's badly written code, and because I don't think anyone has actually played it other than me.
  • I've also was a part of the Project Angela group (http://www.projectangela.org/joomla/), a MMORPG engine. Here, I was able to contribute several ideas to the management of events and objects. However, I had to leave due to certain technical problems when I started my year in college (the freshmen were denied net access for the first semester).
  • I am part of my institute's Web Operations team (managing a student portal, and a cul-fest website).

Other Techincal Points

As mentioned before, I am very comfortable with C++. Though I have not used the STL to the degree present in BfW, I am able to navigate through the code, and I am confident I will come up to the mark. I have used Python quite a bit, and it's my favorite language as such, although I haven't used it as much as C++. So far I have only used SVN to grab sources, but I am confident that I can learn how to use it quickly.

I have been using Linux for the past 3-4 years almost exclusively, and I am very comfortable with it. After using a number of IDE's I have finally found my home with Vim and GDB.

I follow an incremental development approach. I don't really know what the technical name is, but its the standard 'get something to work', add feature, 'get it to work again', add feature, ... model. I generally try and implement an isolated proof-of-concept prototype before including it into the main project. I've not tried automated testing, but I am eager to learn.

I'm not a very serious gamer, but when I do game, I prefer RPGs and strategy games (and the occasional FPS if I want to relieve some stress). To me, game play is important to get me caught on, but a good storyline keeps me caught. The magic recipe, IMHO, is to have a gameplay that has lots of variations, with a rich story line. For example a game like Tales of Phantasia (SNES) was 24k pure gold for me because, not only did it have a killer storyline, but it also had lots of mini-games, and the battle mode had lots of changes that were not just cosmetic. Games I put in the same ilk are CronoTrigger and FF5. Lately I've noticed that whenever I look at a game, I look for its technical merits as well.

Communication skills

Though I am not technically a native English speaker, I have used the language nearly exclusively since birth. I consider myself a fairly good speaker. I write articles for my college newpaper, and I occasionally write poems and prose also. I am a good listener, and I try to humour any new idea, reasoning it out for while rather than rejecting it out-right.

Other personal info

I am awake from 3:30 to 19:30 UTC. Presently I have classes, and hence I am free only from 9:30 to 19:30 on weekdays. During the vacations though, I have made sure that I am free from any other commitments, so that I can take out time however required. I do not mind talking over the phone, or VoIP for that matter - though the latter may have a lot of latency.