Bwrsandman Whiteboard: Multiple Chance-to-kill calculations and interface polish

From The Battle for Wesnoth Wiki

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

This is a Summer of Code 2012 student page



Sandy Carter - Whiteboard: Organic Multiple Chance-to-kill preview and attack.


This proposal is to add the ability for multiple friendly units to attack a target in sequence. The implementation of this would have the same look-and-feel as the single unit attack. The shift modifier allows selection of multiple units at once. The attack functions and chance preview need to allow for array or list passing. A multiple unit attack chance dialog will be added that is similar to the single unit dialog to make it pleasant for the player and seem organic for a new player.

TODO: Add more first-level sections to detail your proposal



SoC Application

Submitted to google



Write a small introduction to yourself.

I am an avid open source user because I believe in that free and open source software can provide equivalent and superior alternatives to closed and proprietary software. Projects like OpenMW and Humble Indie Bundle has given me high hopes for gaming in Linux in the following years. I have always browsed open source code on sites like GitHub in order to equip myself with the most elegant coding styles as possible so that I may one day contribute to a project myself. When I'm not coding, I like to draw and create 3D models.

State your preferred email address.

mr (DOT) sandy (DOT) carter (AT) gmail

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


Why do you want to participate in summer of code?

I think GSoC is a great opportunity for me to start out in the open source community and well as for me to get my name out and to prove myself as a capable developer.

What are you studying, subject, level and school?

I am finishing my third year out of four of my Undergraduate degree at Concordia University, Montreal, Canada in Computer Science with Gaming Option.

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

Canada. I can join between 2:00PM and 6:00AM GMT.

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

I have no commitments not do I plan on taking vacation.


What programs/software have you worked on before?

I worked on maintaining and adding modules to an in house accounting software for the Canadian Federal Government.

I have played around with the code from the OpenMW project in order to better understand it.

I designed and coded a competitive puzzle game in XNA named Cubic.

I re-implemented c code for .md5mesh and .md5anim loading and rendering in OpenGL using C++ code.

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

I worked in a team of four to create a video game in XNA name Cubic.

I have taken a software engineering course dedicated to working in team environments.

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 my first time applying for GSoC, though I have heard of it in previous years because I did not feel that I had enough experience with open source software.

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

I have not been actively involved with open source projects, but I have been using open source software and have been keeping up to date with development of some of my favourite projects on GitHub.

Gaming experience - Are you a gamer?

I have been a gamer since my early teen years.

What type of gamer are you?

I moderate gamer, I used to be a fairly hard core gamer when I was younger. I play on the PC, linux, old Nintendo Systems and the XBox 360.

What type of games?

I enjoy indie games and RPGs the most, I also play strategy games and first person shooters. I also enjoy puzzle games if they're well designed.

What type of opponents do you prefer?

I like my opponents to be at my level of skill; If they are too experienced, I can't learn the gameplay correctly; If they are inexperienced, I don't get as much satisfaction when winning.

Are you more interested in story or gameplay?

It depends on the type of game, an FPS or strategy game such as League of Legends or Unreal Tournament have a lot of replay value and need good gameplay in place of story line.

A short game needs a good storyline to be memorable.

The balance lies in the replayability of the game.

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

We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.

I have tried Wesnoth. I played through the tutorial and one campaign. I played a few hours. I have leaned toward single player.

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'm currently working on a patch to allow multiple attackers in the whiteboard. The patch is a work in progress and can be found at

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.

Very fluent.

What spoken languages are you fluent in?

I am fluent in both English and French.

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

I am polite in game chat.

Do you give constructive advice?

Yes. I often say what needs to be said and I don't tend to hold hands, so to speak. I am also a good teacher, I tutor a lot of classmates.

Do you receive advice well?

Yes, I leave my ego out of the equation. I am always open to advice in order to become a better developer.

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 like to have a good mental image of the final goal and main milestones, that way I can keep my code clean and to the point instead of digging myself into a hole by coding blindly.


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?

Whiteboard: Multiple Chance-to-kill calculations and interface polish.

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


Why did you choose this project?

I chose this because I have a good understanding of what a new player would expect in a game and this was a lacking feature that stood out to me. I am a fast learner in terms of new programming environments and I have a good sense of design. I feel that multiple unit attack planning would work very well with the gameplay and that it will give the game a more polished user experience.

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 have no booked holidays, but I have exams until April 19th and won't be able to contribute much.

I should be able to start on the 22nd of April up until the end of August. I would need a week to familiarize myself with the structure and the code of the project. I can contribute about 60 hours a week.

  • [Weeks 01-02] Get to know mentor, read documentation
  • [Weeks 04-05] Familiarizing with the code.
  • [Weeks 05-06] Create options, dialogs, empty functions and make sure they interact properly
  • [Weeks 07-08] Implement functionality
  • [Weeks 09-10] Debugging
  • [Weeks 11-12] Get ready for midterm evaluation, buffer
  • [Weeks 13-14] Respond to midterm feedback.
  • [Weeks 15-16] Debug and Finalize
  • [Weeks 17-18] Buffer.

Include as much technical detail about your implementation as you can

I would have to enable the creation of a vector of attackers and modify the functions to have these as parameters.

Such functions include units_list_preview_pane::get_details() unit_preview_pane::draw_contents() mouse_handler::show_attack_dialog(..)

I would need to redesign the whiteboard attack dialog to allow up to 6 attackers in columns of 3. The display of multiple units will have the same organic look-and-feel as the single attack dialog. After this, the attack function needs to allow the seqeunces of animations of multiple attackers and the defender's appropriate retaliation.

Two buttons will be added to change the order of attack. The display of different units will be toggled with the greyscale_image(..) function, where only the selected unit will be non-affected, therefore in color.

I would add functionality for having multiple and attacking arrows to display the multiple walk paths for each unit.


draw_contents() will be merged with the Damage Calculations dialog in a way that is not too cumbersome, duplicate data will be removed and the predictions will cover every unit.

What do you expect to gain from this project?

I hope to get my name out in the open source community as a competent designer and I hope to make Wesnoth a more enjoyable and popular game for FOSS fans.

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

After a successful conclusion of SOC, I expect to be fairly familiar with the code and community of Wesnoth.

Having part of my own code in the project will be a point of pride for me, and I doubt I will leave the community after that.

Practical considerations

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

  • Sub­­version (used for all commits)

For team projects at University, if I'm not using git, I'm using S­­V­­N. I used command line s­­v­­n and tortoise s­­v­­n.

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

C/C++ are my languages of choice.

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

I have used Boost and STL for most of my C++ projects.

  • Python (optional, mainly used for tools)

I have hacked a few python scripts, but I haven't done a project from scratch with it. I am confident I can learn it very quickly.

  • build environments (eg cmake/scons)

I have used CMake to compile OpenMW and I use it often to compile from Arch Linux's AUR.

  • WML (the wesnoth specific scenario language)


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

No, but I am very eager to learn it!

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

I use command line tools whenever I can!

My favourite IDE is Qt Creator, but I've used codeblocks and Netbeans.

When I have to program in Windows (C#, mostly) I use Microsoft Visual Studio Pro (offered by my university).

What programming languages are you fluent in?

C/C++/C#, java, Visual Basic 6, bash shell, php and others.

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!

Feel free to call my cellphone, incoming calls are free and unlimited for me.

I also have skype, if I use it a lot to talks to dev, I can open another account.

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