SummerOfCodeProposal GuilhermeSouza

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 Persistent Gameworld



Guilherme Souza - Implement persistent storage of gameworld data between semi-related scenarios

I want to implement the persistent gameworld idea. If I got accepted, I would discuss with the community and the developers about the best way to do this, searching for a solution that would be easy for the campaigns and maps developers to use. The basic idea is to improve WML so developers can store and read variables for maps and campaigns, using them to create an different scenario each time the map/campaign is played.



SoC Application

Persistent storage of gameworld data - irc: schumi



Write a small introduction to yourself.

Hello, my name is Guilherme Souza. I'm an 20 years old undergrad in Computer Engineering from Brazil. I like to participate in academics competitions (mainly mathematics and informatics) and want to improve my skills in programming.

State your preferred email address.

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

  • Wesnoth forums: schumi
  • schumi
  • irc: schumi

Why do you want to participate in summer of code?

Because it is an great opportunity of getting programming experience and helping open-source projects. At the same time!

What are you studying, subject, level and school?

I'm an undergrad in Computer Engineering at Instituto Tecnológico de Aeronáutica.I have just started my fourth year.

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

I'm from Brazil(UTC-3).So between 16hUTC - 04hUTC I can join IRC, though some days I have classes after the lunch. In these days I can join between 23hUTC - 04hUTC.

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

At the end of July, I'm going to IMC (, so I can't work much on these days.


What programs/software have you worked on before?

I've worked in some programs for university projects.The most important are:

Also I like to participate in programming competitions, like TopCoder, Google CodeJam and ACM-ICPC(going to the last world finals)

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

Except for the library program, where the whole class was a team(approx. 30 students), only in small teams (3-6 persons)

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 haven't.

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

No, but I plan to.

Gaming experience - Are you a gamer?

Yes, I really like to play games :).

What type of gamer are you?

I like to play the games until I finish them. But I don't care much to achieve things like 100% completion.

What type of games?

I like more strategy games (Warcraft, Starcraft, Wesnoth :) ), RPG (Final Fantasy,Chrono Trriger) and the classics (Sonic, Mario, Zelda,etc)

What type of opponents do you prefer?

The good ones.

Are you more interested in story or gameplay?

I prefer gameplay over history. But the best games normally have both.

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

Yes, I have played Wesnoth before, since the 1.4 version. I have finished all the mainline campaigns, and only played multiplayer with friends.

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.

3) 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 can read fluently, but my writing isn't very good. Probably I'm doing some grammar errors in this wiki.

What spoken languages are you fluent in?

Portuguese and English.

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

Yes, I think so.

Do you give constructive advice?

I try to make only constructive advices.

Do you receive advice well?

Yes, I think so.

Are you good at sorting useful criticisms from useless ones?


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 think it is good to code just a little to get a better knowledge of the program, but it's better to discuss before making huge changes.


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 selected the persistent gameworld project form the ideas list. I would concentrate first in modifications for single player, and then in multiplayer.

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

Why did you choose this project?

Because it looks like a great addition to Wesnoth, and something I think I can do.

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".

My expected timeline is:

  • 9 April - 24 May

Study the code and WML, implement some ideas and interact with the community for ideas and suggestions.

  • 24 May - 10 June

Implement the single player part.

  • 10 June - 14 June

Test the solution with the map developers, doing the necessary changes. Get more ideas for the multiplayer.

  • 14 June - 19 July

Implement the multiplayer part.

  • 20 July - 27 July

Test the solution with the map developers, doing the necessary changes. Get more ideas for the game master mode.

  • 27 July - 16 April.

Implement the game master mode and test it.

As I said before, at the end of July I'm traveling IMC (, so I can't work much on these days.

If I finish the project before the time, I would try to find a way to permit many users having different persistent data in the same computer. Another idea is to create an easy way to permit the users manage their data (deleting it, copying to other computer, etc).

Include as much technical detail about your implementation as you can

The solution is to permit WML so the map developer can create events to store/read variables from a gameplay(be it an single map, an campaign or an multiplayer map) so it can be used later, in others games to create an different scenario and experience. A possible syntax was suggested by Crab_:

WML Syntax


The data would be saved in the local users directory, so if two people play with the same user, the data would be the same. If I have time after finishing the original project, an possible improvement is eliminating this problem (maybe creating an user profile).

What do you expect to gain from this project?

Experience with a big team and big projects.

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

The community and the project. If I like then (and probably will) I would continue helping Wesnoth.

Practical considerations

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

   * Sub­­version (used for all commits)

I've used it for some projects in the University

   * C++ (language used for all the normal source code)

Yes, it s the language I know most about.

   * STL, Boost, Sdl (C++ libraries used by Wesnoth)

STL and Sdl.

   * Python (optional, mainly used for tools)

I've some basic knowledge.

   * build environments (eg cmake/autotools/scons)

The only experience I have with those is compiling wesnoth :)

   * WML (the wesnoth specific scenario language)

I have only take a look in some WML files.

   * Lua (used in combination with WML to create scenarios)

No experience in LUA.

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

  • C/C++: On windows I use Code::Blocks, in linux I use Emacs for small programs and Code::Blocks for bigger ones.
  • Python: Emacs
  • Java: Eclipse/NetBeans

What programming languages are you fluent in?

C,C++,Java(not much) .

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. If you are willing to do so, please do list a phone number (including international code) so that we are able to contact you. You should probably *only* add this number in the application for you submit to google since the info in the wiki is available in public. We will *not* make any use of your number unless some case of "there is no way to contact you" does arise!

I will provide my phone number in my SOC application.

This page was last edited on 21 March 2013, at 03:33.