From The Battle for Wesnoth Wiki

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

This is a Summer of Code 2014 student page


ALourenco - SpriteSheet

I am proposing the development of a SpriteSheet compability, so the number of assets of Wesnoth can be decreased and it's coding gets cleaner. Instead of having a lot of pictures, we can have, for example, just one per character with all animations needed. It works like a chess board where you can acess the previosly separated pictures in it's respective position. Since Wesnoth uses SDL, we can use OpenGL directly and easily handle several textures from only one SpriteSheet.




1) Basics

1.1) Write a small introduction to yourself. I am André Lourenço, I'm 19 years old, gonna be 20 at the time GSoC starts. My Career goal is to be a video game developer and I've been working for that. Besides University classes, I'm trying to gather experience in GameDev and gather some software for my portfolio.

1.2) State your preferred email address.

1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it? ALourenco (both in forums and IRC)

1.4) Why do you want to participate in summer of code? One of the main reasons is because I wan't to work on something "real" and not just a subject work that is just proposed to test some skills. The fact that I'm working with a team, where everybody might aproach the same problem from a diferent prespective can mean a lot to my growth as a programmer. Besides this, I can have fun at the same time I'm gathering good experience and earning a good paycheck. Who knows if someday in the future I can gather up with the team i'll work with to start a new project or even share important information.

1.5) What are you studying, subject, level and school? I'm Studying Informatics Engineering (Bachelor degree) in "Universidade de Évora", Portugal.

1.6) What country are you from, at what time are you most likely to be able to join IRC? I can join IRC around 9am and 11pm GMT. If i'm asked for, I can always join IRC sooner or later.

1.7) Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when. GSoC 2014 is my main goal for summer. I have no commitment.

2) Experience

2.1) What programs/software have you worked on before? I've made some small things and prototypes in C++, such as a TicTacToe with GUI using a simple SpriteSheet system. I also made a simple particle system and projectiles system. I also have a Numberlink puzzles solver made in python and a simple Gravity Simulator with a C++ window embeded in a C# windows forms interface. I've developed other small and simple things. Most of these I said can be seen in my BitBucket Repository.

2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own) My only team experience was in University, besides that I always developed alone.

2.3) 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? This is the first time I'm participating in Google Summer of Code.

2.4) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement. I am not involven in any open source development projects.

2.5) Gaming experience - Are you a gamer? Yes I'm a gamer.

2.5.1) What type of gamer are you? I used to be an hardcore gamer, but now I don't have so much time I used to.

2.5.2) What type of games? I like to play and try everything. Since I runned a game news website for two years, I got use to play everything.

2.5.3) What type of opponents do you prefer? Human opponents is always an amazing experience, so my own friends may be my prefered opponents. I also like to play agains the level designer, for example, in puzzle games.

2.5.4) Are you more interested in story or gameplay? I think both are important, but both got different effects on me. I can play a game with a good gameplay over and over again, without caring about the story, thats a cool game for me. A game with bad gameplay and good story gets hard to play and the story doesn't make any diference. A game with at least medium gameplay, but with a great story, make me feel like a fanboy.

2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer. I already tried both singleplayer and multiplayer for a couple of hours. I also sent th game to some friends so they can give some feedback as gamers. I have been trying diferent campaigns and features to know the game well enough.

2.6) 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 repository (during the evaluation period or earlier) please state so.

3) Communication skills

3.1) 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 have a British Council IELTS exame, my mark is 7 in 9. The exame evaluates interpretation, listening, speaking and writing.

3.2) What spoken languages are you fluent in? English and portuguese.

3.3) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough. Well, the goal of a game is to transmit an experience adn to be fun, so if a player is not having fun it deserves to be listen since that will be good for the game. With the developer comunity, I think it's going to be ok, sice I'm here to learn and also have fun.

3.4) Do you give constructive advice? I'm looking forward to know where the game can get better so I can give some advices to the developer comunity. Answering the question: Yes I give constructive advices. I won't give destructive ones for sure.

3.5) Do you receive advice well? Advices are allways welcome.

3.6) Are you good at sorting useful criticisms from useless ones? Yes. It's importent to sort when a someone doesn't like something not because it's bad, but because of he's own taste. Besides that, there's allways haters. Since turn based strategy is a genre for very specific players, it may appear some people disliking the game because it doesn't have huge grafics or whatever...

3.7) 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 I learned how to programme alone. In the begining I had a lot of ideas, but it was hard to start coding because I was afraid to fail. Now, I start coding to see whats the result. If it fails I'll do it again. It will never be thrown away. We allways lean something by trying.

4) Project

4.1) 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 have chosen the project from your list. The project is to develop a SpriteSheet System because of the excessive assets the game has. It can be done by separating the SpriteSheet in sections like a chess board, where each section represents a cursor, animation frame,etc. The code also gets cleaner, since the SpriteSheet is a reusable object and the developer only needs to load, for example, spritesheet1.png instead of pic1.png, pic2.png,...

4.2) If you have invented your own project, please describe the project and the scope.

4.3) Why did you choose this project? I like to build this kind of tools for GameDev. I already did something similiar but much simpler. I am confortable doing this, but not a specialist so this is a very good oportunity to explore a project like this.

4.4) 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 only can start on 4rd July. Until then I'll have exams, works and presentations. Since 4th of July to the rest of the month and August, I'm free. I'll only go on holidays in the end of the project.

4.5) Include as much technical detail about your implementation as you can Since the game uses SDL, it can also be coded directly with OpenGL and that may be important. The idea is to join the assets in a .png image instead of a .png image for every animation frame, cursor... For example, we have a character that is 32x32 pixels. This character has only one animation with 4 frames. We create a SpriteSheet with 64x64. In the code, the first frame will be in the position 0x0, the secound frame in position 32x0, 3rd in 0x32 and 4th in 32x32. My TicTacToe uses something similiar. You can take a look here of the Board.h here:

4.6) What do you expect to gain from this project? First of all, experience and a good time. Since I want to be a Game Developer, this project on my CV would be Great.

4.7) What would make you stay in the Wesnoth community after the conclusion of SOC? If I keep having ideas to improve the game and time for it, I'll much likely stay.

5) Practical considerations

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

   Git (used for all commits): I use git with BitBucket
   C++ (language used for all the normal source code): C++ is my main and favorite language.
   STL, Boost, Sdl (C++ libraries used by Wesnoth): Never used none. I used SFML and a bit of OpenGL.
   Python (optional, mainly used for tools): I know python and I'm confortable with it.
   build environments (eg cmake/scons): Never did nothing similiar.
   WML (the wesnoth specific scenario language): I'm not familiar with it.
   Lua (used in combination with WML to create scenarios): Also not familiar with it.

5.2) Which tools do you normally use for development? Why do you use them? I use eclipse for Java and Python (PyDev). In Linux I also use eclipse for C/C++. In Windows I use Visual C++ for C++. I think Visual C++ is the best C++ IDE. Since it's windows only, I use eclipse for linux. Eclipse is the 2nd best IDE in my opinion.

5.3) What programming languages are you fluent in? I'm fluent in C++ and Python. I only know a bit of C# and I've been learning Java. It's been a year or two since I don't programme in C.

This page was last edited on 12 March 2014, at 23:22.