Summer of Code Proposal by Titouu

From The Battle for Wesnoth Wiki

This page is related to Summer of Code 2010
See the list of Summer of Code 2010 Ideas

This is a Summer of Code 2010 student page
Project: SoC Ideas SpriteSheets



Titouu - Sprite Sheet Support

I'm interested in adding Sprite Sheet support to Wesnoth because the value it gives to the game in terms of performance. I'm also thinking of adding a tool to port existing and new contents to this format.


titouu, titoou



Write a small introduction to yourself.

My name is Ernesto Lopez, but for a while (ten years) I've gone under Titouu or variants of it. I'm a musician/programmer/artist and gaming is one of my favorite areas to work and leisure.

State your preferred email address.

If you have chosen a nick for IRC and Wesnoth forums, what is it?

titouu or titoou

Why do you want to participate in summer of code?

Gaining real life experience with 1000's LOC projects is quite hard, specially if you've not graduated or you lack previous experience. GSoC is a great way to get connected to real projects, support open source community which I really admire and get experience, not to mention is one of the coolest summer jobs I can think of.

What are you studying, subject, level and school?

I'm actually studying digital arts in the University of the Digital Arts at Guadalajara. But I did previously 2 years of Computer Science at ITESO Guadalajara, Mexico.

What country are you from, at what time are you most likely to be able to join IRC?

I'm from Mexico, so I'm usually available for IRC around 10am and 10pm CST.

Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.

No, I have no other commitments for the summer.


What programs/software have you worked on before?

I've worked on projects for school and a couple for myself, besides a few for a hospital I worked for on the IT area. My main personal projects have been an ActionScript/Flash Chessboard Game which I did with a friend from college and a Java Bomberman for my Programming and Data Structures Class. I've some experience with game engines (Unreal/Unity) and did a Mod for Unreal around a year ago.

Have you developed software in a team environment before? (As opposed to hacking on something on your own)

I've worked with teams as big of 5 (Bomberman) and Pair programming (Chess Game).

Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?

No, I was willing to do it last Summer but I heard of GSoC too late and couldn't prepare a good application.

Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.

I've mainly followed a couple of projects: OGRE and Thousand Parsec, but never collaborated. I submitted a bug a long time ago for SymPy but was already under revision.

Gaming experience - Are you a gamer?

Yes I've been a gamer since I can remember

What type of gamer are you?

It all depends, if I need to blow some steam I'm a seek and destroy gamer, not really caring about story or strategy but just shooting or hacking some bad guys. If I'm more in the mood, I'm a really strategic player and enjoy storytelling.

What type of games?

Almost everything, I like RPG's and Strategy games the most (that's how I found Wesnoth :P) but I'm also into FPS, Adventure, ETC...

What type of opponents do you prefer?

I prefer human opponents, specially if they're smart because you learn a lot and have to push yourself. Besides you can't mock an AI player after beating him :)

Are you more interested in story or gameplay?

Gameplay mostly, but sometimes story can be a good reason to stick with a game.

Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.

I've played Wesnoth for around a year (heard of it last year while searching for GSoC projects), unfortunately I've sticked to single player, because I tend to play for small amounts of time and because school/work firewall wont let me connect.

If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for GSoC. If you have gained commit access to our S­­V­­N (during the evaluation period or earlier) please state so.

I've committed 2 simple patches: Back Button for Story Screens #1536 Wesnoth.vcproj to build in VC9 #1509

And I'm currently working on a patch for Back button for WML Messages.

Communication skills

Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.

I think I'm pretty fluent with written English, maybe this page itself could serve as a reference. I've lived for a couple of months in the U.S. so I think I'm not that bad.

What spoken languages are you fluent in?

English and Spanish

Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.


Do you give constructive advice?

I think so, I've worked with different teams and different projects and I tend to give my opinion even if it's against mainstream, however I like to give it as feedback not imposing or the like.

Do you receive advice well?

If the advice is well intentioned and has arguments, I really do.

Are you good at sorting useful criticisms from useless ones?

Yes, as I answered before I like to have advices (and comments) to have arguments to support them.

How autonomous are you when developing ? Would you rather discuss intensively changes and not start coding until you know what you want to do or would you rather code a proof of concept to "see how it turn out", taking the risk of having it thrown away if it doesn't match what the project want

In between, I like getting some concepts clear before starting anything, but I'm more an iterative kind of developer, that likes going from small prototypes to full functioning with feedback and planning in between.


Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?

I'd like to work on the use of sprite sheets in Wesnoth, memory usage and performance are key for players and it would improve the overall experience Wesnoth is. I thinks the most important part of this project is a tool for the content creators and I'd like to put most of my efforts on this.

Why did you choose this project?

It will be useful for users since will reduce memory consumption and overall performance, is realistic and attainable within the time frame and leaves a lot of space for creativity since its a problem that can be tackled several ways.

Include an estimated timeline for your work on the project. Don't forget to mention special things like "I booked holidays between A and B" and "I got an exam at ABC and won't be doing much then".

I've no planned vacations and I intend to use June and July as full time months for GSoC. May and August might be a little less because of school.

I'll work this section out in the near future but things that should be noted, estimates are just that, feedback on timing is not only kindly received but encouraged:

Things Before GSoC Starts Work on Back Button for WML_MESSAGES Patch. Attack some other EasyCoding or NotSoEasyCoding Items. Discuss Ideas on Forums/IRC

Things to do in the first days of GSoC Answer:

   -How will sprite sheets be organized?
   -How will sprite sheets be read?
   -What changes will be necessary on WML for units?
   -How will current assets will be transformed to sprite sheets?

Milestone 1 (4-5 weeks): Have a tool to transform N sprites into a single sprite sheet, and generate a file (WML or XML or text) to describe the sprite sheet.

Milestone 2 (3-4 weeks): Modify Wesnoth Code to read sprite sheets using its description file instead of image files.

Milestone 3 (2-3 weeks): Work on integration an porting of previous assets.

Include as much technical detail about your implementation as you can

Right now I can only state a few things:

-The tool for creating sprite sheets from single sprites will be completely graphical so it can be used easily by artists. -I'm currently thinking of creating a sprite sheet for each campaign because custom campaigns need custom units and attaching them to a HUGE-ALL-IN-ONE sprite sheet doesn't seem like a great idea. -Units WML might need being modified to have an x,y coordinate or a position to retrieve the image, instead of the image name. -Classes Unit and Unit_frame need to be changed to load from position instead of file. -Tool will be coded in Python using Qt or similar GUI Library, code in Wesnoth will be (obviously) in C++.

This will grow as I ramp up.

What do you expect to gain from this project?

Experience, big project insight and a place in the credits of the game.

What would make you stay in the Wesnoth community after the conclusion of SOC?

The fun part of working in a game project. The community itself. Future GSoC's or similar projects.

Practical considerations

Are you familiar with any of the following tools or languages?

Sub­­version (used for all commits): Yes, downloaded Wesnoth code and submitted a couple of patches. Have used it for other projects as well.

C++ (language used for all the normal source code): Yes, 3+Years Experience

STL, Boost, Sdl (C++ libraries used by Wesnoth): STL 3+ Years, Boost I've used sporadically, no experience with SDL.

Python (optional, mainly used for tools): 2+ Years with Python, my tool of choice when need to code something on the run or scripting for easing my life.

Build environments (eg cmake/autotools/scons): CMake only.

WML (the wesnoth specific scenario language): I can read it and have a general notion of it.

Lua (used in combination with WML to create scenarios): Not much, but I have heard it is pretty similar to other scripting languages (Python, Ruby, ...) which I've used a lot.

Which tools do you normally use for development? Why do you use them?

Vim, because it can really help you with repetitive tasks and offers you a lot of tools. Visual Studio when I'm on windows or when the project is very large and jumping between files is necessary too often.

What programming languages are you fluent in?

C/C++, Java, Python, Ruby, ActionScript 3.0, UnrealScript and Bash.

Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.


This page was last edited on 21 March 2013, at 01:05.