VimzardMapEditor

From The Battle for Wesnoth Wiki

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#5183942307546423458

The brush set is replaced with tiles. The drop down selector in the brushes tab is used 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.

This page was last edited on 8 April 2008, at 07:18.