From The Battle for Wesnoth Wiki

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

This is a Summer of Code 2011 student page
Project: SoC_Ideas_Whiteboard_2011



Bacon - Implement networking such that allies can allow their plans to become visible to each other.

Main Goal

  • Implement networking such that allies can allow their plans to become visible to eachother.
  • Gabba’s original project had a suggested timeline for networking; it would be a useful jumping-off point for my own (ie. with the addition of some suggested goals).


  • Grok the network code for Wesnoth.
  • Understand how out-of-sync errors could be generated by using networked planning.
  • Design an extension to the whiteboard such that it behaves as expected with two players.
    • Note: how would you display two, overlapped units?
  • Initially implement allied planning (ie. simulate using debug tools an allied force’s movement)
  • Initially implement the network code.
    • Test the network code, etc.

Forseen Problems

  • How do you display two units who are planned to go to the same spot by different teams?
  • Seeing an ally’s plan could be, on occasion, confusing; an extension to the GUI (not using shortcut keys) should be implemented to avoid this.
  • It should be possible to somehow ignore suggestions by an ally for a given unit, in a similar way to deleting planned actions made by yourself, and to implement a way to detect malicious suggestions (ie. repeatedly giving bad advice for the same unit).

Suggested Goals

  • Integrate with map annotations and allow units to ‘request’ suggestions.
  • Toggle switches for all of these features, by the way, set into a new section of the Settings-Multiplayer tab.
  • Allow for waypoints? Whiteboard essentially puts a theoretical move out for you to see, and in my mind that means implementing the full behaviour of a normal move. As without whiteboard active, waypoints should be functional.
  • Calculate potential health of attacked/attacking units at current point in plan.
    • Note: This will require a GUI extension that gives specific unit stats; perhaps a change to the behaviour of the ‘d’ shortcut.
    • Note: Only two health states will be displayed: actual, and predicted after planned moves.

Tangentially Related Suggested Goals

  • Enemy suggestions? There are a limited number of situations (e.g. teaching a friend how to play without shroud or fog active) where it would be of use to suggest to an enemy where to move, although; this would have to be disabled by default for obvious useability reasons.
  • Rally points/region -- place a rally point, right click a unit and send-to; combined with waypoints, useful for moving new recruits up to the line of battle in large maps.

Forseen problems

  • Waypoints need to have their behaviour checked: they should only function to detour on the current step, and not future ones.
  • Old rally points would need a quick means of deselction, otherwise the ‘send to’ menu would grow too large.
  • Due to the combinatorial nature of predicting possible outcomes, it is possible that after multiple attacks that it will become difficult to list all possibilities.
  • Networked whiteboards should be a user-disableable function.

Pie In The Sky

  • AI ally suggestion (player-to-computer)
  • Multi-turn planning (extend whiteboard to work beyond a unit’s single-turn movement; at the beginning of the next turn, an arrow will be placed towards either the destination, or the unit’s movement boundary, etc.)
  • Timeline view of battle -- for this to be of any use, the game would have to be able to access previous states (for past movement) and be able to predict future states, in addition to computing said future states based off of new information (for instance, enemy units that have come in the way of planned movements). This is rather major, and only tangentially related to the networking aspects of the whiteboard.


BaronControl, BaconOne

SoC Application

SoC Application


State your preferred email address.

Why do you want to participate in summer of code?

I’ve only ever had experience on school projects, either by myself or with a partner, and never on anything nearing the scope at which SoC [projects] attain. This summer, I want to broaden my skill base and learn how to coordinate [across] larger groups …

What are you studying, subject, level and school?

I’m in my first year of university at SFU, working towards a BSc in Computing science.

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

Canada; between 01:30 and 13:00 GMT.

Do you have any other commitments?



Have you developed software in a team environment before?

For all intents and purposes, no.

Have you participated in GSoC before?

Nope; this will be my first year -- if I’m accepted.

Are you already involved with any open source development projects?

I’m in no way involved with any other open source projects.

Are you a gamer?

Not avidly.

What type of gamer are you?

Casual, for the most part.

What type of games?

Slow strategy, a la Civilizations (hence Wesnoth).

What type of opponents do you prefer?


Are you more interested in story or gameplay?

Story; engagement is proportionally related to investment in imagination.

Have you played Wesnoth? Do you lean towards SP or MP?

MP, but only with friends and the occasional frenemy.

If you have contributed any patches


Communication Skills

Describe your fluency level in written English.

High; I’m a native english speaker.

What spoken languages are you fluent in?

English, and I can understand French very well (and speak it to a limited extent).

Are you good at interacting with other players?

I wouldn’t know, having never interacted with the wesnoth member comunity at large.

Do you give constructive advice?

I’d like to think so, although the dearth of group programming projects in my history has given me few examples to do so.

Do you receive advice well?

Again, my experience in the field of programming specifically doesn’t include much criticism; critiques of my writing, on the other hand, I’ve never much minded.

Are you good at sorting useful criticisms from useless ones?

I haven’t had much practice at all, in this respect; I’d like to hope so, but …

How autonomous are you while developing?

It depends on the situation: for patches, or smaller features, coding a proof of concept would seem to be the better strategy, however; if I am to code in something that would take more than one or two hours to ‘write from the hip’ then I’d spend more time designing.


Did you select a project from the list?

The whiteboard improvement/network implementation project. I’d like to concentrate on implementing the network functionality :D.

Why did you choose this project?

I’ve always found whiteboard useful for planning out my moves, for instance, whenever my ally was taking their turn/out making tea, but with the addition of network connectivity it would become much more so: ‘loaned’ units could be given commands more easily and teammates could adjust force concentrations better.

What do you expect to gain from this project?

Much more knowledge in the area of networking and an appreciation of the skills required to function in a group coding environment.

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

Maintaining and expanding on the whiteboard project would be [inspiration] enough.

Practical considerations

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

I’m passingly familiar with subversion and scons and knowledgeable with C++ and Python.

Which tools do you normally use for development?


What programming languages are you fluent in?

Java, C++, PHP and Javascript.

Would you mind talking with your mentor through alternative channels?

Not at all!

This page was last edited on 25 April 2011, at 16:27.