User:Elfy/SoC Questionnaire
This page has Google Summer of Code proposal questionnaire filled by Elfy 13:24, 29 March 2008 (EDT)
Basics
Introduction
My name is Protas Oleksiy. I come from Southern Ukraine, Crimea more precisely. At the present moment I am a biology student and freelance programmer. Speaking of global goals I set in my life I would like to find a cure for cancer and aging one day as well as help open and alternative software gain worldwide acknowledge and break the chains of stereotype and monopoly regarding software market. My hobbies include solving math problems, wrtiting poems, fishkeeping beadcrafting and more. I am not employed at the moment but I am occupying head software engineer position in our university student internet center and also do computer work at the biological lab.
My main e-mail is:
Nickname
My nick is elfy almost everywhere however on Freenode it's been already taken when I first connected to it so I often use JarisSeagull instead. Things like Elf-Eluna-Alina, Jaris and Chantale can probably represent my identity on other resources.
Summer o' Code
I decided to take part in summer of code because I've long heard about the project and it allows you to code for an opensource project while having a stipenid which is not a last concern for a student ;-) Moreover it's a good stimuli to finally joing opensource programmer community.
Study
I study at National University "Kievo-Mohylanska Akademia" majoring in biology and attending extra courses of math, physics, chemistry and computer science. I am currently freshman because of reenrolling on biology from physics department.
Experience
Programming
At the very beginning of my career I've written program for Lesser Academy of Sciences contests which is an annual contest for scholars in different fields of science including computing. I've made four attempts with a graphical editor(...in pascal ;-) ), a distributed database, a security program and finally an infusoria shape reconstructor from a photograph. Later on I've been writing small programs to use on my own. I've wanted to write a real time strategy for ages, I even began doing 2 or 3 engines but all the projects failed due to lack of artists. However from this immature games the simple fully functional 3D model editor and the OpenGL GUI library were left. Now I basically stick to website writing(which I dislike :( ) and freelance programming for profit. I am eager to engage to a big project such as Wesnoth and that's one point for applying to GSoC.
Teamwork
I've found a small team for freelance writing and I've faced the challenges teamwork offers to a developper. We've done a lot of programs together so I am getting more and more used to program in a team as opposed to being a 'lone wolf'.
Summer o' Code
I've never participated in Summer of Code before. Neither have I ever applied.
Open Source
Though I use open source solutions for 5 years now I've never participated in an opensource project unfortunately. Though I've taken part in coding based on opensource involving program alteration for iternal tools of the internet center I work in.
Gaming
Well, I can't consider myself truly a gamer but I've always been fond of computer games. I prefer fantasy strategies and roleplaying, puzzle, stealth action games. My top-list of games includes: all warcrafts, thief, doom. Speaking of type I am more hacker than a gamer - I always seek to exploit the game, carry on experiments with engine and so on. Most of the times just for fun as oposed to find cheat-like exploits. Also the story and multiplayer is critical for the game to please me. I often dig hard into a storyline and analyze the game atmosphere, live in it. I've discovered Wesnoth roughly a year and a half ago while browsing portage and immediately fell in love with it. I mostly lean towards multiplayer but not just a meelee scirmish but a more scripted and fun action.
Project
Selection
I came up with the idea of project long before and I was just happy finding it in the list given by deleloppers. The project of my choice is Map/Scenario Editor.
Reasoning
I've chosen the project because scripted map-editing is my passion in all strategy games I come across. Also having a userfriendly scenario editor greatly speeds up the mapmaking process as stated in an interview with Blizzard employee speaking of difficulties making maps for Warcraft I (TODO: link here). MORE HERE
Timeline
TODO
Description
The project I've chosen is the rewrite of wesnoth map editor.
Features
Easy to use dialog-driven system to write WML
Since WML controls every aspect of the game it should be given for a user to manipulate in a transparent manner. The IMHO perfect example of such mechanic is Warcraft III Map Editor(WorldEdit). The users uses a graphical tool to write scenarios and customize units, spells etc. This data is then converted into a JASS script which acts like WML. However the WorldEdit is not that much flexible the Wesnoth editor will be because JASS is more a programming language and not all JASS expressions can be loaded into the Editor. Moreover Blizzard did leave some perks available only to hackers for usage. In the Wesnoth case WML can be easily represented in a graphical way, due to it's structure.
While units are trivial to implement map triggers do cause a bit of challenge in the way of displaying data. Here again my proposal is not to reinvent the wheel and use the time proven Blizzard scheme as displayed on this StarEdit screenshot:
The idea is to give the user a tool to create triggers using event-conditions-actions combo, basically as it is done in map script. For each 'class' of event, condition and action there is a textual template with gaps for user to fill. Filling the gaps involves extensive use of lists, comboboxes etc. to free the user of any writing at all.
Symmetry generator
Symmetry is a critical point when designing melee maps. While some asymmetrical melee maps are known to exist in most strategies they are considered the state of art and are very fragile in terms of modification without breaking balance. A famous example - contest-winning (2)Two Rivers for WCIII:
The idea is to let the user select a portion of map(probably radial) and let the editor clone it to generate a symmetrical map. The advantages of such technique are:
- User is freed from calculating how the portion would look like if rotated. Though Wesnoth uses hexagonal map grid it is a real challenge for people not gifted enough artisticaly to imagine how a region would look like from the other point of view.
- The user is also freed from routine work repeating basically the same thing he did. Also modifying a thing would need all the copies modified manually which is a potential source of mistakes and a mundane in first place.
- It provides a editing layer in-between manual map editing and autogeneration taking benefits of both.
Vector-orieded shape editor
Last but not the least there is one more idea on autogeneration tools involved in mapmaking process. Though the idea is very rough and needs severe critics from developpers it's basic is to provide the users a tool to design a vector shape which is then 'rasterized' to hexagons according to the rasterization rules. This includes optional 'gradients' between different terrain types e.g. a line of hills for a transition from rocks to plains. The aims of the idea are:
- Once again save the user from mundade and requiring tasks when drawing large portions of similar terrain.
- Let the generator make the terrain more lifelike for example adding occasional forest tiles on plains etc.
- Make transitions between different terrains more smooth, again freeing the designer from picking each tile by hand.
In short - most designers do not care of individual hexagons(however this is a matter of faction balance) but tend imagine the general overview of the things they are about to draw. Adding such functionality will allow them to quickly generate the thing that is on mind needing only some retouch after the generation.
Gains
The first thing to gain from the project is to give birth to a brand-new scenario editor for wesnoth allowing the map base to grow more intensively. At least I would like also to use the thing after it is done ;-) The other thing to gain is the experience working on massive and opersource project which is on my point of view invaluable.
Wesnoth Community
I hope to ;-) Wesnoth is a great thing to code for.
Practical considerations
English
I consider my English level good enough to be able to communicate with other speakers. I've spent years reading English text because of programming a lot so I even have some little 'language sense' speaking of written English. I think the whole page can better present my skills in English than theese three sentences. ;-)
SVN/C++/Python
C++ along with plain C are my languages of preference so I dare to claim knowing them almost perfectly. I've been using C/C++ for roughly 7 years now. Subversion is the thing I've only discovered recently, but I think I've played enough with it to be able to use it as a confident user. Python is unfortunately Terra Incognita for me. However it is on the my 'to-learn' list on highest positions along with Perl.
Development tools
At present moment I mostly use Kate+GCC+GDB combo for development plus SVN+CMake for distributed projects. IDE's seem to complicated for me and moreover they do not provide enough freedom and flexibility generating lots of unneeded stuff. On the other hand when working on bigger projects I favour KDevelop for its usability and the option to cut down as much autogenerated code as possible. When using CMake my KDevelop basically transforms in a bigger Kate while I write all code by hand.
Languages
Programming
I can code confidently in:
- C
- C++
- Pascal
- PHP
- BASH
More slowly and having an access to documentation:
- JavaScript
- BASIC/VBA
- JASS (WCIII scripting language)
Spoken
I speak natively:
- Russian
- Ukrainian
Also I am proficient in:
- English
- French (it was my major in school but I am loosing grasp due to lack of practice now)
- German (very elementary level mostly for understanding written text and not without a dictionary)
Timing
I am generally awake 6:00 AM - 11:00 PM UTC
Phone
I like phone calls but written communication with mentor is way better providing a logback and natural 'antinoise' and 'misunderstanding' protection :-)
Essay
TODO