<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Esr</id>
	<title>The Battle for Wesnoth Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Esr"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/Special:Contributions/Esr"/>
	<updated>2026-04-12T20:13:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Secrets_of_the_Ancients_Walkthrough&amp;diff=59141</id>
		<title>Secrets of the Ancients Walkthrough</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Secrets_of_the_Ancients_Walkthrough&amp;diff=59141"/>
		<updated>2018-01-26T02:51:24Z</updated>

		<summary type="html">&lt;p&gt;Esr: /* S20 North Knalga */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a walkthrough for ''Secrets of the Ancients'', a 21 scenario (18 playable, 3 dialogue only) campaign by beetlenaut featuring the undead. The campaign is playable on both Wesnoth versions 1.12 and 1.13, and the campaign's discussion thread on the forums can be found [https://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=40545 here.] {{DevFeature1.13|7}} This is now a mainline campaign.&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
&lt;br /&gt;
Although this campaign is listed as intermediate level, it is very challenging and closer in difficulty to the expert level mainline campaigns. Throughout the campaign you will get several loyal units, which are recalled for free in all future scenarios. It is highly recommended to keep them all alive, especially the saurian healer because later scenarios will be difficult or impossible without a healer.&lt;br /&gt;
&lt;br /&gt;
===Units===&lt;br /&gt;
&lt;br /&gt;
Over the course of the campaign you'll gain access to the following recruits:&lt;br /&gt;
&lt;br /&gt;
*'''Bats''' are useful in most scenarios for village grabbing and distracting enemies. Their main asset is their cheap recruit cost and zero upkeep, so it is generally not worth it to level them.&lt;br /&gt;
*'''Walking corpses''' can be a lifesaver in difficult scenarios, being dirt cheap and able to zombify enemy units so the enemies will focus on killing their own corpses rather than killing your veterans. The downside is that corpses are not worth leveling since their maximum level is 1, so the experience they get from zombifying enemy units is wasted.&lt;br /&gt;
*'''Skeletons and skeleton archers''' will be your main units in the first half of the campaign. They have great resistances to blade, pierce, and cold damage, but are vulnerable to fire, impact and arcane. In this campaign, revenants (level 2 skeletons) can advance to death knights which have level 3 leadership, so getting one early on will be very useful.&lt;br /&gt;
*'''Ghouls''' can poison enemies but do very little damage, so they are generally not so useful because you will usually kill enemy units before the poison can take effect.&lt;br /&gt;
*'''Ghosts''' can either level into wraiths which have an arcane drain attack, or shadows which can do huge amounts of damage through backstab. Later in the campaign many enemies (such as giant spiders and trolls) do impact damage which will destroy skeletal undead, so wraiths/spectres are essential against them. Shadows/nightgaunts are useful for quickly taking out high priority targets such as mages, and their skirmishing ability can help break through deadlocks.&lt;br /&gt;
*'''Dark adepts''' are difficult to level because they are fragile and you can only recruit them later in the campaign, but it is very much worth the trouble. At first they can only advance to necromancers, but late in the campaign necromancers can be converted to liches, which can advance to the rather overpowered level 4 ancient lich.&lt;br /&gt;
*'''Chocobones''' are not worth using due to their extremely high cost and low HP. Revenants/death knights can do similar melee damage while being much more durable.&lt;br /&gt;
&lt;br /&gt;
==Chapter One: Unlawful Research==&lt;br /&gt;
&lt;br /&gt;
===S1 Slipping Away===&lt;br /&gt;
*Objectives: Move Ardonna to the signpost in the northeast.&lt;br /&gt;
&lt;br /&gt;
You'll be attacked by tons of wolves and rats, and in order to survive you'll need to turn some enemies into walking corpses by finishing them with the undead bat or with another walking corpse. Use Ardonna and the regular bats to soften up the enemies so that your corpses can zombify them.&lt;br /&gt;
&lt;br /&gt;
Try to also get Ardonna some kills, because you'll have a much easier time next scenario if you can get her to level 2 during that scenario.&lt;br /&gt;
&lt;br /&gt;
===S2 Dark Business===&lt;br /&gt;
*Objectives: Kill all the guards, and occupy the guardhouse.&lt;br /&gt;
&lt;br /&gt;
You don't get much starting gold, so you'll mainly be relying on recruiting walking corpses and creating corpses out of the enemy units. Be sure to recruit a bat to fly over the fence and grab the three villages. Maybe recall a soulless if you have one for the extra damage per hex, but recalling more than one unit may leave you with too few units to win with. You can stay back at first and let the guards get close to you, so that you get to strike first.&lt;br /&gt;
&lt;br /&gt;
Focus on zombifying the bowmen first, since they are weak in melee and can kill your corpses without taking retaliation damage. It helps to get Ardonna to level 2 - if she got some kills in the previous scenario and you can get her to kill the enemy Lieutenant, she should be most of the way there.&lt;br /&gt;
&lt;br /&gt;
Be very careful when moving to the guardhouse, because several spearmen (5 on hard!) will surround the guardhouse when you do. If Ardonna is level 2 she should easily make short work of the spearmen; otherwise she will need to be carefully protected because the spearmen will tend to focus on her. Moving a unit to the guardhouse will allow Ardonna to use the graves to recruit skeletons and skeleton archers, both of which are highly effective against spearmen with their 60% pierce resistance, so it is a good idea to save up 14-15 gold to recruit one.&lt;br /&gt;
&lt;br /&gt;
===S3 Bandits===&lt;br /&gt;
*Objectives: Defeat the enemy leader.&lt;br /&gt;
&lt;br /&gt;
This scenario can be challenging, because the thugs and footpads do impact damage, which your bats and skeletons are weak to. The key is to recruit/recall several bats and send them up the eastern side of the map to village grab, which will not only generate a high income to recruit reinforcements with, but also split up the bandits' forces since many of them will go northeast to get rid of the bats.&lt;br /&gt;
&lt;br /&gt;
Meanwhile your main force (consisting mostly of skeleton archers to kill thugs, and skeletons to kill footpads/poachers) can hold off the bandits in the forests northeast of the keep. If possible, try to make it so the bandits have to attack you from flat terrain. There will be heavy losses, so it's a good idea to have Ardonna stay near the keep for the first ten or so turns, and pump out reinforcements until you have the clear advantage.&lt;br /&gt;
&lt;br /&gt;
===S4 Becalmed===&lt;br /&gt;
*Objectives: Defeat the enemy leader.&lt;br /&gt;
&lt;br /&gt;
You're on a ship with two raised decks - aft and fore. One of your minions has eaten a crew member, so the ship's Captain is pissed and will - how surprising - try to kill you all.&lt;br /&gt;
&lt;br /&gt;
You start on the fore, when you can also recruit and recall, and the ship's Captain - the enemy leader - on the aft deck, when he can marshal his men - the sailors. You can both move to the main deck, and from there down to the hold (which is as empty as it looks, no secrets there.) The ship is 3 hexes wide, so that's the basic length of your front ... except that the hold is also a front, so you'll actually be attacked by up to 6 Sailors at a time. Not fun.&lt;br /&gt;
&lt;br /&gt;
Now, the Sailors have 7x3 Blade melee attacks (the Sailor Captain has 9x4) and about 28-35 HP - so they should not be difficult to dispatch for your skeletal units, which have 40% Blade resistance. But - don't be complacent; they are also super-cheap, so the Sailor Captain will recruit more than two rounds' worth of them even on Medium difficulty. Also, the sailors are Neutral vs your troops' Chaotic nature, and during the day they will be quite troublesome. So recruit a mix of Warriors and Archers, try to use leveling for healing, back away badly-wounded troops - just like in a &amp;quot;proper&amp;quot; level.&lt;br /&gt;
&lt;br /&gt;
If you have lots of starting gold from the previous scenario - don't bother going for the village, you should be done with the level before it's worth the cost of recruiting/recalling Bat on the first turn. If you don't you'll have to do some math and figure it out; and even a Vampire Bat _can_ finish off a weakened Sailor.&lt;br /&gt;
&lt;br /&gt;
===S5 Blackwater===&lt;br /&gt;
*Objectives: Kill all enemy units.&lt;br /&gt;
&lt;br /&gt;
This scenario is very difficult due to the lack of healing, so try to manage your experience so that your units heal by leveling up. Start by sending some bats around the edges of the map to grab villages and distract enemy units. After that, skeletal undead should be your main recruits, since they resist pierce and blade damage - anything else (corpses, bats, ghouls) is likely to just get killed in one shot by charging horsemen. However skeletal undead are very vulnerable to mages, so killing mages should be always be your top priority.&lt;br /&gt;
&lt;br /&gt;
It's tempting to just block the bridge chokepoints, but sometimes you may want to deliberately let the enemies flood onto the ship so that you'll have more hexes to attack them from. Use Rudic's level 2 leadership on your lower level units for the extra damage, or even better, level a revenant into a death knight for level 3 leadership.&lt;br /&gt;
&lt;br /&gt;
Try to end the battle as quickly as possible, because without villages you will lose in a war of attrition. If you push hard during the nights (and your bats are doing a good job luring enemies to the edges of the map), you can break through the main loyalist force in the center and attack the loyalist castle as early as the third day (around turn 14).&lt;br /&gt;
&lt;br /&gt;
===S6 Following the Shadow===&lt;br /&gt;
*Objectives: Move Ardonna to the tunnel in the southeast of the cave.&lt;br /&gt;
&lt;br /&gt;
There are two main battles in this scenario: you'll first fight the wolves outside the cave, and then after entering the cave you'll have to fight your way through a horde of bats. You'll probably need to spend all your gold at the beginning; you'll want a good mix of veterans (a death knight if you have one is very helpful for leadership) for damage dealing, and expendable fresh recruits to hopefully keep the wolves distracted. Walking corpses are a good choice, being cheap and able to zombify wolves.&lt;br /&gt;
&lt;br /&gt;
Send bats to the corners of the map to village grab. The rest of your units can occupy the hilly terrain to the northeast and wait for the wolves to arrive. The main threats are the goblin pillagers, which are deadly in melee with their fire attack, so it is safest to attack them in ranged with Ardonna or bone shooters. You could also poison them with ghouls, which have +10% fire resistance. Killing the wolf leader is not mandatory, but it is very helpful to do so, because you will then be able to safely focus on the cave enemies without wolves harassing you, and Ardonna can also use the wolf's keep to recruit reinforcements since you'll likely take heavy losses from the wolves. The turn limit in this scenario is a little tight, especially if you go to kill the wolf leader, so you can't afford to waste too much time healing. (If you  kill the wolf leader before turn 25, you should be fine.)&lt;br /&gt;
&lt;br /&gt;
After Ardonna has spent 2 turns in the cave (or, when six nonbat units enter the cave), a large amount of vampire bats, blood bats and dread bats will appear in the cave. The bats should not be a problem for your skeletal undead, which resist blade and cannot be drained.&lt;br /&gt;
&lt;br /&gt;
===S7 Meeting of the Minds===&lt;br /&gt;
Story.&lt;br /&gt;
&lt;br /&gt;
==Chapter Two: Two Missions==&lt;br /&gt;
&lt;br /&gt;
===S8 Carcyn===&lt;br /&gt;
*Objectives: Own every village on the map, or kill every enemy unit.&lt;br /&gt;
&lt;br /&gt;
You will control Ras-Tabahn for the next three scenarios. He has a separate recall list (which will be added to Ardonna's recall list when the two join together in Chapter 3) and starts this scenario with a predefined amount of gold. This is a tough scenario due to the sheer number of enemy units, especially on Hard. Since the enemy only recruits spearmen, bowmen and cavalrymen, you'll want to recruit almost exclusively skeletons and skeleton archers for their high resistance vs. blade and pierce. It is also very helpful to get a corpse or two so you can zombify enemies as a distraction. Ghosts are expensive and do very little damage, so they're not very useful here, though you could get one to village grab in the north and try distracting the enemy cavalrymen in the beginning. It's also a good idea to recall the shadow and the half-leveled skeleton, and focus on feeding kills to the skeleton so it can level up quickly.&lt;br /&gt;
&lt;br /&gt;
During the first afternoon and dusk, you can just passively hang around the initial keep, keeping your units on good terrain like the forests and village around the keep, and wait for the loyalists to come to you. During the night be as aggressive as possible - try to make it so that every single one of your units attacks something, and as always try to manage your experience so that some of your units heal by leveling up. By the time the second day arrives, most of the loyalist army should be gone and you should have several level 2's, so after that the battle will only go one way.&lt;br /&gt;
&lt;br /&gt;
It's probably easier and faster to just kill every enemy unit. When you move to the jailhouse in the west, two loyal level 0 units will join you (if you don't find them during the scenario, they join after you win the scenario). It is strongly recommended to level both of them into dark adepts, so that later in the campaign they may become level 4 ancient liches.&lt;br /&gt;
&lt;br /&gt;
===S9 Training Session===&lt;br /&gt;
*Objectives: Destroy all 3 waves of undead.&lt;br /&gt;
&lt;br /&gt;
All three undead waves consist of a mix of walking corpses and soulless, or just soulless on Hard. The first wave of undead which arrives during the day is a good opportunity to try to get some experience for your two new level 0 units. For recruits, bone shooters are nice since they can kill soulless without taking retaliation, and ghosts with their 50% impact resistance are pretty good at blocking the soulless from your more fragile units. You'll probably end up losing most of your recruits though, because skeletal undead are weak to impact and ghosts have such low HP. Try to keep most of the dark adepts alive (use them from the back, and then put your undead units in front to shield them) because unlike the undead, adepts will turn into walking corpses when killed with plague.&lt;br /&gt;
&lt;br /&gt;
===S10 Merfolk Revenge===&lt;br /&gt;
*Objectives: Defeat the enemy leader.&lt;br /&gt;
*Note: Moving to the bones at 32,12 will cause a chocobone to appear and allow you to recruit chocobones.&lt;br /&gt;
&lt;br /&gt;
The gold carryover from this scenario will carry over to S14 (Entering the Northlands), so make sure you get at least some carryover here or you may end up having to replay several scenarios to fix it. The dialogue recommends at least 50 carryover gold, though it is possible to make do with less even on hard. &lt;br /&gt;
&lt;br /&gt;
The merfolk army consists of fighters and hunters which do pierce damage, and netcasters and initiates which do impact damage. Focus on killing the netcasters and initiates first, because they are the most dangerous units against your skeletal undead. Ghosts are very useful in this scenario because they resist both types of damage. &lt;br /&gt;
&lt;br /&gt;
Try to lure the mermen onto land during dusk so that you can make quick work of them during the night. During the day, just retreat into the villages and heal your units so you can strike again at night. The mermen can be reluctant to come onto land so you may have to use some units as bait to lure them out - skeletons are good at luring out the ranged mermen units and dark adepts are good at luring out melee units. The merman leader will also sometimes come out to attack a unit on the southeast sand village (at 29,11), so if you can trap and kill him there it will save you the trouble of having to wade through water to reach his keep.&lt;br /&gt;
&lt;br /&gt;
===S11 Battleground===&lt;br /&gt;
*Objectives: Defeat both enemy leaders.&lt;br /&gt;
&lt;br /&gt;
You now switch back to controlling Ardonna. This is an easy scenario, because the saurians recruit only augurs and soothsayers, whose cold damage is laughably ineffective against your skeletal undead's 60% cold resistance. Skeletal undead are also great versus the nagas which do blade damage.&lt;br /&gt;
&lt;br /&gt;
Your enemies have good defense in swamp and water terrain, so if possible try to avoid putting your units next to these terrains and let the enemies come onto land where they are easily killed. A good place to put your units is in the middle of the patch of flat terrain directly northeast of your keep. The nagas have pretty high HP so it can be very effective to recruit a couple ghouls and use them as bait for the nagas - by the time the ghouls are killed almost the entire naga army will be poisoned.&lt;br /&gt;
&lt;br /&gt;
===S12 Walking Trees===&lt;br /&gt;
*Objectives: Move Ardonna to the northeast corner of the map.&lt;br /&gt;
&lt;br /&gt;
You will be fighting woses, which can be drained and have a glaring weakness to arcane damage, making this the perfect chance to level some ghosts. Recall any wraiths or experienced ghosts, and you may also want a death knight for leadership, and then just start mass recruiting ghosts. It is very difficult to get any gold carryover from this scenario, so you may want to just forget about carryover and spend all your gold at the beginning.&lt;br /&gt;
&lt;br /&gt;
Every few turns a bunch of woses will spawn somewhere in the forest. They are invisible in the forest due to their ambush ability, but when a wose moves from its starting location it leaves behind a patch of dirt so you should have a rough idea of which direction it will come from. Pay special attention to your loyal saurian healer, because he can be killed by a single wose attack - try to always keep him protected by ghosts on all sides. In the later half of the scenario, level 2 elder woses will spawn instead of level 1 woses, so hopefully by that time Ardonna is already very close to the northeast corner. Since you probably won't get any gold carryover anyway, you could potentially stay for a couple extra turns killing elder woses for experience.&lt;br /&gt;
&lt;br /&gt;
===S13 Together Again===&lt;br /&gt;
Story.&lt;br /&gt;
&lt;br /&gt;
==Chapter Three: To Conquer Death==&lt;br /&gt;
===S14 Entering the Northlands===&lt;br /&gt;
*Objectives: Defeat both enemy leaders.&lt;br /&gt;
&lt;br /&gt;
There is a lot of experience available in this scenario from the high level orcs. Some good units to focus on leveling are spectres and necromancers, because these units will be the most helpful in later scenarios. Try not to go too negative on gold because you will probably need about 150 gold carryover (100 at the very least) to manage the next scenario on Hard. A couple vampire bats are very helpful for grabbing out of the way villages. &lt;br /&gt;
&lt;br /&gt;
Since the eastern leader is fairly close to you, you should be able to take him out relatively quickly if you send your entire army that way. You can then turn your army northwest to deal with the rest of the orcs, which should arrive around the time you get rid of the eastern orc. Be careful of the orcish archers and crossbowmen, because your ghosts are very vulnerable to their fire arrows. The orcs will do extremely high damage, especially at night, so it really helps to have some expendable cannon fodder units as distractions. When they die, use plague to make more&amp;amp;mdash;it might even be worth recalling one or two soulless here.&lt;br /&gt;
&lt;br /&gt;
===S15 Mountain Pass===&lt;br /&gt;
*Objectives: Move Ardryn-Na and Ras-Tabahn to the flat terrain in the northeast corner.&lt;br /&gt;
*Note: If you did not already find the bones in Scenario 10, moving to the bones at 16,21 will cause a chocobone to appear and allow you to recruit chocobones.&lt;br /&gt;
&lt;br /&gt;
This scenario is extremely hard - you'll be attacked from all directions by gryphons, which have good defense everywhere and are extremely mobile. There are two gryphon leaders, one in the northwest and one in the northeast. The best way to kill gryphons is to zap them with the necromancers' magical attack, but using skeleton archer types can work as well. Ghosts and their advancements are extremely useful due to their mobility, especially spectres/wraiths because their drain attack makes them harder to kill.&lt;br /&gt;
&lt;br /&gt;
If you're low on starting gold or are getting overwhelmed by gryphons, one way to make this scenario much more manageable is to assassinate the northwest gryphon leader using leveled ghosts. Recall all your wraiths, shadows etc., and send them straight northwest. They should reach the enemy gryphon keep during the night, and kill the leader fairly easily especially if you have shadows or nightgaunts. The downside of this tactic is that you will likely lose several of your leveled ghosts in the process.&lt;br /&gt;
&lt;br /&gt;
===S16 The Mage===&lt;br /&gt;
*Objectives: Defeat Crelanu.&lt;br /&gt;
*Note: Moving a unit onto a bottle of holy water will remove the bottle. A living unit can do this safely, but any undead unit will be destroyed.&lt;br /&gt;
&lt;br /&gt;
This is an easy scenario. Send a couple bats along the edges of the map to village grab, and just have Ras Tabahn move to the village near your keep and stay there for the scenario. You'll be facing high level mages, but only a few at a time. If you wait until night to engage, you'll easily demolish them with skeletons backed by leadership. Necromancers are also very effective here, since they have high HP, no fire weakness, and resistance to arcane. Don't bother with ghostly units because they will just get fried by mages. The mages absolutely love attacking walking corpses, so if you use walking corpses or your necromancers' plague staff to zombify some enemies, your other units probably won't even be attacked.&lt;br /&gt;
&lt;br /&gt;
===S17 Mortality===&lt;br /&gt;
Story.&lt;br /&gt;
&lt;br /&gt;
===S18 Abandoned Outpost===&lt;br /&gt;
*Objectives: Reach the end of the western tunnel with both Ardryn-Na and Ras-Tabahn, or defeat every enemy unit.&lt;br /&gt;
&lt;br /&gt;
This is a very tough scenario - you'll have to fight your way through two hordes of level 3 giant spiders, in a relatively short amount of turns. By far the best units to use here are spectres, and liches are also useful. You'll also want a bat or two to grab villages near the starting area.&lt;br /&gt;
&lt;br /&gt;
The key to getting rid of the spiders quickly is to get them onto flat terrain, where they only have 30% defense and are easy prey for spectres. A good place to form your line is on the village in the southern tunnel (at 30,12) and the three cave hexes to the right of the village, so that the spiders will attack from the nearby 3 hexes of flat terrain. The spiders tend to be reluctant to attack spectres and liches, so you may want to use bait such as skeletons to lure them onto the flat terrain.&lt;br /&gt;
&lt;br /&gt;
Once you get rid of the first wave of spiders, hopefully you still have about half of the turns remaining, because there is a second horde of spiders in the west blocking the exit. It's actually possible to sneak past them without fighting - send Ardryn-Na, Ras-Tabahn and a spectre or two through the northern 1-hex tunnel (the spiders will probably just ignore them), and then use some bait in the east to lure the spider blocking the tunnel exit away. Then your two leaders can head toward the exit tunnel behind the spiders, while the spectres position themselves so the spiders can't block your leaders from escaping into the exit tunnel next turn.&lt;br /&gt;
&lt;br /&gt;
===S19 Lava and Stone===&lt;br /&gt;
*Objectives: Defeat all enemy leaders.&lt;br /&gt;
&lt;br /&gt;
You'll be fighting trolls which are weak to arcane, so wraiths/spectres and liches are the best units to use here. Both units are vulnerable to the troll shamans' fire damage though, so try to kill the shamans quickly using spectres or backstab with shadows/nightgaunts. When you reach the lava chasm in the beginning, the path will branch west, where the main battle will take place, and southeast. The southeastern path leads to a small lake, so you can send a couple spectres/wraiths there to easily pick off trolls in the water.&lt;br /&gt;
&lt;br /&gt;
There are 3 troll leaders in total: a troll shaman leader in the northwest, a great troll in the center, and another troll shaman leader in the southeast corner. This scenario is a good opportunity to try to level some ancient liches, which will be extremely useful next scenario. Finish early, because you get almost no starting gold next scenario, so you will need a pretty high gold carryover (about 150 gold or more).&lt;br /&gt;
&lt;br /&gt;
===S20 North Knalga===&lt;br /&gt;
*Objectives: Defeat the enemy leader.&lt;br /&gt;
&lt;br /&gt;
It's not made obvious, but you can recruit in the area where your units first appear even though it's not marked as a keep.&lt;br /&gt;
&lt;br /&gt;
You will be fighting an army of high level dwarves, which have good resistances and extremely high HP. Hopefully you have several ancient liches, because they are basically the only way to kill the level 3 dwarvish lords. Spectres are also very useful since they can help shield your liches. The biggest threats to your units are the lords and runemasters which have a high damage melee impact attack, so focus on killing those first using your ancient liches. Try to put your liches on hills where they have 50% terrain defense - one place to form your line is the small clump of rubble and hills in the center (around 15,7).&lt;br /&gt;
&lt;br /&gt;
When you get near the enemy keep in the southeast, the dwarf leader will recruit some reinforcements. Try the finish as fast as you can, because the early finish bonus in this scenario is huge.&lt;br /&gt;
&lt;br /&gt;
===S21 Against the World===&lt;br /&gt;
*Objectives: Defeat all enemy leaders.&lt;br /&gt;
*Notes:&lt;br /&gt;
**On turn 2, a saurian leader will appear in the eastern swamp castle.&lt;br /&gt;
**On turn 4 (turn 3 on easy), a dwarf leader will appear in the southwest mountains.&lt;br /&gt;
**On turn 12, a mage leader will appear in the northwest.&lt;br /&gt;
**On turn 13, an elf leader will appear in the southeastern forest.&lt;br /&gt;
&lt;br /&gt;
This is the final scenario, so just recall all your best veterans, and recruit some cannon fodder (skeletons are a good choice, since many of the starting enemies do blade/pierce damage) with any remaining gold. Since there's no turn limit, patience and playing defensively will guarantee you eventual victory. Attack all out during the night, then retreat and heal during the day, and eventually the enemy armies will start to thin out. Don't try to block the enemy leaders' keeps before they arrive, because this will just cause them to appear with a full keep of units already recruited. Parking some units just outside the keep to assassinate the leader will have the same effect.&lt;br /&gt;
&lt;br /&gt;
In the beginning you'll just want to hang around the starting keep, and let the knights and nagas come to you so you can wipe them out during the first night. After that you can split your army in half, with one group remaining north of the river to clear out the saurians and later the mermen, and another group heading south of the river to deal with the dwarves and kill the southern knight leader. The mages and elves which arrive last are extremely easy to kill if you meet them on flat terrain during the night. It's best to save the dwarf leader for last, because his keep is surrounded by rough terrain which will take a long time to cross.&lt;br /&gt;
&lt;br /&gt;
[[Category:Campaigns - Walkthroughs]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GettextForTranslators&amp;diff=49471</id>
		<title>GettextForTranslators</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GettextForTranslators&amp;diff=49471"/>
		<updated>2013-03-27T20:21:44Z</updated>

		<summary type="html">&lt;p&gt;Esr: Remove Subversion-specific terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Gettext for translators  ==&lt;br /&gt;
&lt;br /&gt;
Wesnoth translation is now divided into several text-domains:&lt;br /&gt;
* wesnoth&lt;br /&gt;
* wesnoth-editor&lt;br /&gt;
* wesnoth-lib (contains strings shared by game and editor)&lt;br /&gt;
* plus one text-domain for each campaign. The names of these text-domains are constructed from the word wesnoth and the common abbreviation of the campaign (wesnoth-ei, wesnoth-httt, wesnoth-trow, wesnoth-tb, wesnoth-tsg and wesnoth-utbs).&lt;br /&gt;
&lt;br /&gt;
We will use the Swedish (sv) language and the ''wesnoth'' domain as an example in this page.&lt;br /&gt;
There are three important files for each text-domain:&lt;br /&gt;
* ''wesnoth/wesnoth.pot'' file, which contains all the strings used in the main game (neither editor, nor campaign strings). You can see how a ''.pot'' file looks like in the repository : [https://sourceforge.net/p/wesnoth/code/ci/043c4f9fd33ac5abac1e9df311d2ad3edf70db47/tree/po/wesnoth/wesnoth.pot Current repository version].&lt;br /&gt;
* ''wesnoth/sv.po'', the file containing the translation, you can see how a ''.po'' file looks like in the repository: [https://sourceforge.net/p/wesnoth/code/ci/043c4f9fd33ac5abac1e9df311d2ad3edf70db47/tree/po/wesnoth/ru.po Current repository version].&lt;br /&gt;
* ''{translations_dir}/sv/LC_MESSAGES/wesnoth.gmo'', which is a binary version of &amp;lt;lang&amp;gt;.po that the game will use for efficiency reasons. This is not found in cvs, but is created during compilation of the game.&lt;br /&gt;
&lt;br /&gt;
The first of these files, we update every once in a while, when there is new or modified text,&lt;br /&gt;
for instance when a new campaign scenario hits the repository.&lt;br /&gt;
&lt;br /&gt;
Then, ''msgmerge'' is used to merge this new &amp;quot;state of the game strings&amp;quot; with your current translations, and generate a new, up-to-date, ''sv.po''.&lt;br /&gt;
&lt;br /&gt;
Then, a tool called ''msgfmt'' is called, which generates a new ''wesnoth.gmo'' file from your ''wesnoth.po'' file, which will be used by the game once installed.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;make -C po update-po&amp;quot; does these three steps in one pass.&lt;br /&gt;
&lt;br /&gt;
That was for the &amp;quot;Big Picture&amp;quot;.&lt;br /&gt;
But you really just need to be concerned with the po file:&lt;br /&gt;
translating new strings, checking &amp;quot;fuzzy&amp;quot; entries.&lt;br /&gt;
We can handle the administrative tasks of updating etc.&lt;br /&gt;
You really don't need to bother with any of these commands, unless you want to compile gmo files to check in-game.&lt;br /&gt;
&lt;br /&gt;
Ivanovic is now responsible for integrating translations into Wesnoth, with the help of Torangan and ott.&lt;br /&gt;
You should contact Ivanovic (crazy-ivanovic AT gmx DOT net), and he'll put them in the game.&lt;br /&gt;
&lt;br /&gt;
When sending po files to a maintainer to be included in the repository, please create a zip or tar.gz/bz2 archive that you attach, rather than cutting and pasting the translations into an email.  The translated strings are&lt;br /&gt;
very sensitive to formatting and the archive will also help distinguish which file is which when sending more than one po file.&lt;br /&gt;
&lt;br /&gt;
==  FAQ  ==&lt;br /&gt;
* '''What's a fuzzy string?'''&lt;br /&gt;
** It's a string calling for translator revision. For example, if an English string gets a small change and you run the ''msgmerge'' program, it will mark the translation of that string fuzzy. When we switched to gettext we marked all translations as fuzzy as lots of them were outdated.&lt;br /&gt;
* '''What are &amp;quot;Plural-forms&amp;quot;?'''&lt;br /&gt;
** Some languages have different word forms for different numbers of things (for example in English we have &amp;quot;1 thing&amp;quot; but &amp;quot;2 thing'''s'''&amp;quot;). The rules are different for different languages. You can find them [http://translate.sourceforge.net/wiki/l10n/pluralforms here].&lt;br /&gt;
* '''My language needs a different font to get displayed correctly.'''&lt;br /&gt;
** Wesnoth uses several different fonts, and the number is likely to grow with the support for new alphabets/writing systems. Right now we are using DejaVuSans (Roman and Cyrillic), FreeSans (Greek), sazanami-gothic (Japanese) and gkai00mp (Chinese). In the wesnoth/sv.po you will find a string containing the currently used fonts. By changing the order of fonts listed, you choose which font is preferred for your translations. A language using Greek letters would for instance translate that string with:&lt;br /&gt;
   msgid &amp;quot;DejaVuSans.ttf,FreeSans.ttf,sazanami-gothic.ttf,gkai00mp.ttf&amp;quot;&lt;br /&gt;
   msgstr &amp;quot;FreeSans.ttf,DejaVuSans.ttf,sazanami-gothic.ttf,gkai00mp.ttf&amp;quot;&lt;br /&gt;
Note that if a certain letter/glyph is not found in the first font listed, the second font will be scanned for it and so on.&lt;br /&gt;
* '''What should I do to insert a newline in a string?'''&lt;br /&gt;
** If you want to insert a newline in a string you need to include the pair of characters &amp;quot;&amp;quot;. You can use normal newlines as you wish as they don't affect the translation.&lt;br /&gt;
* '''How do I use ' within a single-quote delimited string when translating text= in help screen texts?'''&lt;br /&gt;
** Add a backslash  before it.&lt;br /&gt;
* '''What should I do with strings like &amp;quot;Prefs section^General&amp;quot;?'''&lt;br /&gt;
** There are ambiguous strings which should be translated in a different way depending on where they appear. For example, we have &amp;quot;General&amp;quot; in the preferences as &amp;quot;General preferences&amp;quot; and we can also have &amp;quot;a General&amp;quot;. These strings can have different translations for a given language, so we use &amp;quot;context&amp;quot; to solve this. The prefix only tries to give a hint about the string, and should be not translated, for example:&lt;br /&gt;
   msgid &amp;quot;Prefs section^General&amp;quot;&lt;br /&gt;
   msgstr &amp;quot;General&amp;quot;&lt;br /&gt;
* '''Who can I ask for further information?'''&lt;br /&gt;
** You can ask Ivanovic, Torangan, ott, Yann or Isaac in IRC (irc.freenode.net, #wesnoth or #wesnoth-dev).&lt;br /&gt;
If you don't like IRC, send a mail to crazy-ivanovic AT gmx DOT net, or pm him (ivanovic) at the forum.&lt;br /&gt;
* '''How do I quickly test PO file changes?'''&lt;br /&gt;
** When you modify a PO file, run &amp;quot;make update-gmo&amp;quot; in the main po directory to create a new MO file, then run &amp;quot;make install&amp;quot; there to install the new MO file.&lt;br /&gt;
** Then force cache rebuild. This is tricky -- if you only update MO files, the game may use a cached (i.e., old) version letting you wonder why it still displays the old translation. Either change game.cfg modification time, e.g. with &amp;quot;touch /usr/local/share/wesnoth/game.cfg&amp;quot;, or delete the corresponding cache[s] in ~/.wesnoth/cache.&lt;br /&gt;
* '''I don't know what ''make'' is and where to get it. Can I still quickly test PO file changes?'''&lt;br /&gt;
** Yes you can. Fist, you will need to get an editor for .po files like [http://www.poedit.net/ Poedit] or [http://translate.sourceforge.net/wiki/virtaal/index Virtaal].&lt;br /&gt;
** Create a temporary folder to put the .mo files in.&lt;br /&gt;
** Poedit automatically creates an .mo file when you save, in Virtaal choose File -&amp;gt; Export.&lt;br /&gt;
** Name your .mo files according to the text domain and put them into your temporary folder, e.g. for ''wesnoth-lib/&amp;lt;language_code&amp;gt;.po'' the .mo file will be called ''wesnoth-lib.mo''.&lt;br /&gt;
** Go to the folder your Wesnoth installation is in, e. g. ''C:\Users\&amp;lt;username&amp;gt;\AppData\Local\Battle for Wesnoth &amp;lt;version number&amp;gt;'' in Windows 7.&lt;br /&gt;
** Go to the ''translations'' folder and check if there is a subfolder for your language code. If there isn't, create one, then in the new subfolder create a folder called ''LC_MESSAGES''.&lt;br /&gt;
** Copy your .mo files to ''LC_MESSAGES'' and restart Wesnoth.&lt;br /&gt;
* '''The .po file in the repository has changed, how do I move over the translations I've made?'''&lt;br /&gt;
** If your file with additional translations is called old.po and the new file from the repository is called repo.po, create a new file called new.po by doing&lt;br /&gt;
&lt;br /&gt;
   msgmerge -o new.po old.po repo.po&lt;br /&gt;
&lt;br /&gt;
The new file new.po will keep your translations from old.po as well as the new strings from repo.po, but check the result -- some translations will not be possible to move across if the original strings changed, these are kept as comments at the end of the file.&lt;br /&gt;
&lt;br /&gt;
* '''How to generate man files from wesnoth-man(current 1.3 trunk) .po files?'''&lt;br /&gt;
To create &amp;quot;real&amp;quot; manpages out of the po files you have to install a prog&lt;br /&gt;
named &amp;quot;po4a&amp;quot; and run make update-po4a inside the maindir before running&lt;br /&gt;
make and make install. They are not automatically created out of po&lt;br /&gt;
files. With that command the files will be created and afterwards installed.&lt;br /&gt;
&lt;br /&gt;
Note: At least 80% of the .po file must be translated for the creation of a man file&lt;br /&gt;
&lt;br /&gt;
* '''Why is the diff from the previous version so huge? I have only made a small change to the .po file with poedit.'''&lt;br /&gt;
** When saving .po file poedit unwraps all strings. Usually, all .po files are wrapped at 80 characters so if you want smaller diffs and less merge conflicts you can execute the following commands each time after editing with poedit:&lt;br /&gt;
&lt;br /&gt;
   msgattrib file.po &amp;gt; file.po1&lt;br /&gt;
   mv file.po1 file.po&lt;br /&gt;
&lt;br /&gt;
==  Tools  ==&lt;br /&gt;
&lt;br /&gt;
There are several tools to work with .po files:&lt;br /&gt;
* [http://userbase.kde.org/Lokalize Lokalize] (Unix KDE, intended to replace KBabel)&lt;br /&gt;
* [http://i18n.kde.org/tools/kbabel/ KBabel] (Unix KDE)&lt;br /&gt;
* [http://gtranslator.sourceforge.net/ GTranslator] (Unix Gnome)&lt;br /&gt;
* [http://translate.sourceforge.net/wiki/virtaal/index Virtaal] (Multiplatform)&lt;br /&gt;
* [http://www.poedit.net/ poEdit] (Multiplatform)&lt;br /&gt;
* [http://www.gnu.org/software/emacs/emacs.html Emacs with po-mode] (Multiplatform)&lt;br /&gt;
* [http://www.vim.org/ Vim] with [http://www.vim.org/scripts/script.php?script_id=695 PO plug-in] (Multiplatform)&lt;br /&gt;
&lt;br /&gt;
Of course, you can edit po files with any UTF-8 capable text editor, but the tools listed above have great advantages over any text editor regarding .po translation, like going to next fuzzy/untranslated string, searching only in specific fields (msgid, msgstr, comment), ...&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[WesnothTranslations]]&lt;br /&gt;
* [[WesnothTranslationsHowTo]]&lt;br /&gt;
* [[GettextForWesnothDevelopers]]&lt;br /&gt;
* [[TranslatorShellscript]]&lt;br /&gt;
* [http://www.wesnoth.org/gettext/ Translation statistics]&lt;br /&gt;
&lt;br /&gt;
[[Category:Translations]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GettextForTranslators&amp;diff=49470</id>
		<title>GettextForTranslators</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GettextForTranslators&amp;diff=49470"/>
		<updated>2013-03-27T20:19:36Z</updated>

		<summary type="html">&lt;p&gt;Esr: Remove Subversion-specific terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Gettext for translators  ==&lt;br /&gt;
&lt;br /&gt;
Wesnoth translation is now divided into several text-domains:&lt;br /&gt;
* wesnoth&lt;br /&gt;
* wesnoth-editor&lt;br /&gt;
* wesnoth-lib (contains strings shared by game and editor)&lt;br /&gt;
* plus one text-domain for each campaign. The names of these text-domains are constructed from the word wesnoth and the common abbreviation of the campaign (wesnoth-ei, wesnoth-httt, wesnoth-trow, wesnoth-tb, wesnoth-tsg and wesnoth-utbs).&lt;br /&gt;
&lt;br /&gt;
We will use the Swedish (sv) language and the ''wesnoth'' domain as an example in this page.&lt;br /&gt;
There are three important files for each text-domain:&lt;br /&gt;
* ''wesnoth/wesnoth.pot'' file, which contains all the strings used in the main game (neither editor, nor campaign strings). You can see how a ''.pot'' file looks like in the repository : [https://sourceforge.net/p/wesnoth/code/ci/043c4f9fd33ac5abac1e9df311d2ad3edf70db47/tree/po/wesnoth/wesnoth.pot Current repository version].&lt;br /&gt;
* ''wesnoth/sv.po'', the file containing the translation, you can see how a ''.po'' file looks like in the repository: [https://sourceforge.net/p/wesnoth/code/ci/043c4f9fd33ac5abac1e9df311d2ad3edf70db47/tree/po/wesnoth/ru.po Current repository version].&lt;br /&gt;
* ''{translations_dir}/sv/LC_MESSAGES/wesnoth.gmo'', which is a binary version of &amp;lt;lang&amp;gt;.po that the game will use for efficiency reasons. This is not found in cvs, but is created during compilation of the game.&lt;br /&gt;
&lt;br /&gt;
The first of these files, we update every once in a while, when there is new or modified text,&lt;br /&gt;
for instance when a new campaign scenario hits the repository.&lt;br /&gt;
&lt;br /&gt;
Then, ''msgmerge'' is used to merge this new &amp;quot;state of the game strings&amp;quot; with your current translations, and generate a new, up-to-date, ''sv.po''.&lt;br /&gt;
&lt;br /&gt;
Then, a tool called ''msgfmt'' is called, which generates a new ''wesnoth.gmo'' file from your ''wesnoth.po'' file, which will be used by the game once installed.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;make -C po update-po&amp;quot; does these three steps in one pass.&lt;br /&gt;
&lt;br /&gt;
That was for the &amp;quot;Big Picture&amp;quot;.&lt;br /&gt;
But you really just need to be concerned with the po file:&lt;br /&gt;
translating new strings, checking &amp;quot;fuzzy&amp;quot; entries.&lt;br /&gt;
We can handle the administrative tasks of updating etc.&lt;br /&gt;
You really don't need to bother with any of these commands, unless you want to compile gmo files to check in-game.&lt;br /&gt;
&lt;br /&gt;
Ivanovic is now responsible for integrating translations into Wesnoth, with the help of Torangan and ott.&lt;br /&gt;
You should contact Ivanovic (crazy-ivanovic AT gmx DOT net), and he'll put them in the game.&lt;br /&gt;
&lt;br /&gt;
When sending po files to a maintainer to be included in the repository, please create a zip or tar.gz/bz2 archive that you attach, rather than cutting and pasting the translations into an email.  The translated strings are&lt;br /&gt;
very sensitive to formatting and the archive will also help distinguish which file is which when sending more than one po file.&lt;br /&gt;
&lt;br /&gt;
==  FAQ  ==&lt;br /&gt;
* '''What's a fuzzy string?'''&lt;br /&gt;
** It's a string calling for translator revision. For example, if an English string gets a small change and you run the ''msgmerge'' program, it will mark the translation of that string fuzzy. When we switched to gettext we marked all translations as fuzzy as lots of them were outdated.&lt;br /&gt;
* '''What are &amp;quot;Plural-forms&amp;quot;?'''&lt;br /&gt;
** Some languages have different word forms for different numbers of things (for example in English we have &amp;quot;1 thing&amp;quot; but &amp;quot;2 thing'''s'''&amp;quot;). The rules are different for different languages. You can find them [http://translate.sourceforge.net/wiki/l10n/pluralforms here].&lt;br /&gt;
* '''My language needs a different font to get displayed correctly.'''&lt;br /&gt;
** Wesnoth uses several different fonts, and the number is likely to grow with the support for new alphabets/writing systems. Right now we are using DejaVuSans (Roman and Cyrillic), FreeSans (Greek), sazanami-gothic (Japanese) and gkai00mp (Chinese). In the wesnoth/sv.po you will find a string containing the currently used fonts. By changing the order of fonts listed, you choose which font is preferred for your translations. A language using Greek letters would for instance translate that string with:&lt;br /&gt;
   msgid &amp;quot;DejaVuSans.ttf,FreeSans.ttf,sazanami-gothic.ttf,gkai00mp.ttf&amp;quot;&lt;br /&gt;
   msgstr &amp;quot;FreeSans.ttf,DejaVuSans.ttf,sazanami-gothic.ttf,gkai00mp.ttf&amp;quot;&lt;br /&gt;
Note that if a certain letter/glyph is not found in the first font listed, the second font will be scanned for it and so on.&lt;br /&gt;
* '''What should I do to insert a newline in a string?'''&lt;br /&gt;
** If you want to insert a newline in a string you need to include the pair of characters &amp;quot;&amp;quot;. You can use normal newlines as you wish as they don't affect the translation.&lt;br /&gt;
* '''How do I use ' within a single-quote delimited string when translating text= in help screen texts?'''&lt;br /&gt;
** Add a backslash  before it.&lt;br /&gt;
* '''What should I do with strings like &amp;quot;Prefs section^General&amp;quot;?'''&lt;br /&gt;
** There are ambiguous strings which should be translated in a different way depending on where they appear. For example, we have &amp;quot;General&amp;quot; in the preferences as &amp;quot;General preferences&amp;quot; and we can also have &amp;quot;a General&amp;quot;. These strings can have different translations for a given language, so we use &amp;quot;context&amp;quot; to solve this. The prefix only tries to give a hint about the string, and should be not translated, for example:&lt;br /&gt;
   msgid &amp;quot;Prefs section^General&amp;quot;&lt;br /&gt;
   msgstr &amp;quot;General&amp;quot;&lt;br /&gt;
* '''Who can I ask for further information?'''&lt;br /&gt;
** You can ask Ivanovic, Torangan, ott, Yann or Isaac in IRC (irc.freenode.net, #wesnoth or #wesnoth-dev).&lt;br /&gt;
If you don't like IRC, send a mail to crazy-ivanovic AT gmx DOT net, or pm him (ivanovic) at the forum.&lt;br /&gt;
* '''How do I quickly test PO file changes?'''&lt;br /&gt;
** When you modify a PO file, run &amp;quot;make update-gmo&amp;quot; in the main po directory to create a new MO file, then run &amp;quot;make install&amp;quot; there to install the new MO file.&lt;br /&gt;
** Then force cache rebuild. This is tricky -- if you only update MO files, the game may use a cached (i.e., old) version letting you wonder why it still displays the old translation. Either change game.cfg modification time, e.g. with &amp;quot;touch /usr/local/share/wesnoth/game.cfg&amp;quot;, or delete the corresponding cache[s] in ~/.wesnoth/cache.&lt;br /&gt;
* '''I don't know what ''make'' is and where to get it. Can I still quickly test PO file changes?'''&lt;br /&gt;
** Yes you can. Fist, you will need to get an editor for .po files like [http://www.poedit.net/ Poedit] or [http://translate.sourceforge.net/wiki/virtaal/index Virtaal].&lt;br /&gt;
** Create a temporary folder to put the .mo files in.&lt;br /&gt;
** Poedit automatically creates an .mo file when you save, in Virtaal choose File -&amp;gt; Export.&lt;br /&gt;
** Name your .mo files according to the text domain and put them into your temporary folder, e.g. for ''wesnoth-lib/&amp;lt;language_code&amp;gt;.po'' the .mo file will be called ''wesnoth-lib.mo''.&lt;br /&gt;
** Go to the folder your Wesnoth installation is in, e. g. ''C:\Users\&amp;lt;username&amp;gt;\AppData\Local\Battle for Wesnoth &amp;lt;version number&amp;gt;'' in Windows 7.&lt;br /&gt;
** Go to the ''translations'' folder and check if there is a subfolder for your language code. If there isn't, create one, then in the new subfolder create a folder called ''LC_MESSAGES''.&lt;br /&gt;
** Copy your .mo files to ''LC_MESSAGES'' and restart Wesnoth.&lt;br /&gt;
* '''The .po file in the repository has changed, how do I move over the translations I've made?'''&lt;br /&gt;
** If your file with additional translations is called old.po and the new file from SVN is called svn.po, create a new file called new.po by doing&lt;br /&gt;
&lt;br /&gt;
   msgmerge -o new.po old.po svn.po&lt;br /&gt;
&lt;br /&gt;
The new file new.po will keep your translations from old.po as well as the new strings from svn.po, but check the result -- some translations will not be possible to move across if the original strings changed, these are kept as comments at the end of the file.&lt;br /&gt;
&lt;br /&gt;
* '''How to generate man files from wesnoth-man(current 1.3 trunk) .po files?'''&lt;br /&gt;
To create &amp;quot;real&amp;quot; manpages out of the po files you have to install a prog&lt;br /&gt;
named &amp;quot;po4a&amp;quot; and run make update-po4a inside the maindir before running&lt;br /&gt;
make and make install. They are not automatically created out of po&lt;br /&gt;
files. With that command the files will be created and afterwards installed.&lt;br /&gt;
&lt;br /&gt;
Note: At least 80% of the .po file must be translated for the creation of a man file&lt;br /&gt;
&lt;br /&gt;
* '''Why is ''svn diff'' so huge? I have only made a small change to the .po file with poedit.'''&lt;br /&gt;
** When saving .po file poedit unwraps all strings. Usually, all .po files are wrapped at 80 characters so if you want smaller diffs and less merge conflicts you can execute the following commands each time after editing with poedit:&lt;br /&gt;
&lt;br /&gt;
   msgattrib file.po &amp;gt; file.po1&lt;br /&gt;
   mv file.po1 file.po&lt;br /&gt;
&lt;br /&gt;
==  Tools  ==&lt;br /&gt;
&lt;br /&gt;
There are several tools to work with .po files:&lt;br /&gt;
* [http://userbase.kde.org/Lokalize Lokalize] (Unix KDE, intended to replace KBabel)&lt;br /&gt;
* [http://i18n.kde.org/tools/kbabel/ KBabel] (Unix KDE)&lt;br /&gt;
* [http://gtranslator.sourceforge.net/ GTranslator] (Unix Gnome)&lt;br /&gt;
* [http://translate.sourceforge.net/wiki/virtaal/index Virtaal] (Multiplatform)&lt;br /&gt;
* [http://www.poedit.net/ poEdit] (Multiplatform)&lt;br /&gt;
* [http://www.gnu.org/software/emacs/emacs.html Emacs with po-mode] (Multiplatform)&lt;br /&gt;
* [http://www.vim.org/ Vim] with [http://www.vim.org/scripts/script.php?script_id=695 PO plug-in] (Multiplatform)&lt;br /&gt;
&lt;br /&gt;
Of course, you can edit po files with any UTF-8 capable text editor, but the tools listed above have great advantages over any text editor regarding .po translation, like going to next fuzzy/untranslated string, searching only in specific fields (msgid, msgstr, comment), ...&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[WesnothTranslations]]&lt;br /&gt;
* [[WesnothTranslationsHowTo]]&lt;br /&gt;
* [[GettextForWesnothDevelopers]]&lt;br /&gt;
* [[TranslatorShellscript]]&lt;br /&gt;
* [http://www.wesnoth.org/gettext/ Translation statistics]&lt;br /&gt;
&lt;br /&gt;
[[Category:Translations]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GettextForTranslators&amp;diff=49469</id>
		<title>GettextForTranslators</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GettextForTranslators&amp;diff=49469"/>
		<updated>2013-03-27T20:18:15Z</updated>

		<summary type="html">&lt;p&gt;Esr: Remove Subversion-specific terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Gettext for translators  ==&lt;br /&gt;
&lt;br /&gt;
Wesnoth translation is now divided into several text-domains:&lt;br /&gt;
* wesnoth&lt;br /&gt;
* wesnoth-editor&lt;br /&gt;
* wesnoth-lib (contains strings shared by game and editor)&lt;br /&gt;
* plus one text-domain for each campaign. The names of these text-domains are constructed from the word wesnoth and the common abbreviation of the campaign (wesnoth-ei, wesnoth-httt, wesnoth-trow, wesnoth-tb, wesnoth-tsg and wesnoth-utbs).&lt;br /&gt;
&lt;br /&gt;
We will use the Swedish (sv) language and the ''wesnoth'' domain as an example in this page.&lt;br /&gt;
There are three important files for each text-domain:&lt;br /&gt;
* ''wesnoth/wesnoth.pot'' file, which contains all the strings used in the main game (neither editor, nor campaign strings). You can see how a ''.pot'' file looks like in the repository : [https://sourceforge.net/p/wesnoth/code/ci/043c4f9fd33ac5abac1e9df311d2ad3edf70db47/tree/po/wesnoth/wesnoth.pot Current repository version].&lt;br /&gt;
* ''wesnoth/sv.po'', the file containing the translation, you can see how a ''.po'' file looks like in the repository: [https://sourceforge.net/p/wesnoth/code/ci/043c4f9fd33ac5abac1e9df311d2ad3edf70db47/tree/po/wesnoth/ru.po Current repository version].&lt;br /&gt;
* ''{translations_dir}/sv/LC_MESSAGES/wesnoth.gmo'', which is a binary version of &amp;lt;lang&amp;gt;.po that the game will use for efficiency reasons. This is not found in cvs, but is created during compilation of the game.&lt;br /&gt;
&lt;br /&gt;
The first of these files, we update every once in a while, when there is new or modified text,&lt;br /&gt;
for instance when a new campaign scenario hits the repository.&lt;br /&gt;
&lt;br /&gt;
Then, ''msgmerge'' is used to merge this new &amp;quot;state of the game strings&amp;quot; with your current translations, and generate a new, up-to-date, ''sv.po''.&lt;br /&gt;
&lt;br /&gt;
Then, a tool called ''msgfmt'' is called, which generates a new ''wesnoth.gmo'' file from your ''wesnoth.po'' file, which will be used by the game once installed.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;make -C po update-po&amp;quot; does these three steps in one pass.&lt;br /&gt;
&lt;br /&gt;
That was for the &amp;quot;Big Picture&amp;quot;.&lt;br /&gt;
But you really just need to be concerned with the po file:&lt;br /&gt;
translating new strings, checking &amp;quot;fuzzy&amp;quot; entries.&lt;br /&gt;
We can handle the administrative tasks of updating etc.&lt;br /&gt;
You really don't need to bother with any of these commands, unless you want to compile gmo files to check in-game.&lt;br /&gt;
&lt;br /&gt;
Ivanovic is now responsible for integrating translations into Wesnoth, with the help of Torangan and ott.&lt;br /&gt;
You should contact Ivanovic (crazy-ivanovic AT gmx DOT net), and he'll put them in the game.&lt;br /&gt;
&lt;br /&gt;
When sending po files to a maintainer to be included in the repository, please create a zip or tar.gz/bz2 archive that you attach, rather than cutting and pasting the translations into an email.  The translated strings are&lt;br /&gt;
very sensitive to formatting and the archive will also help distinguish which file is which when sending more than one po file.&lt;br /&gt;
&lt;br /&gt;
==  FAQ  ==&lt;br /&gt;
* '''What's a fuzzy string?'''&lt;br /&gt;
** It's a string calling for translator revision. For example, if an English string gets a small change and you run the ''msgmerge'' program, it will mark the translation of that string fuzzy. When we switched to gettext we marked all translations as fuzzy as lots of them were outdated.&lt;br /&gt;
* '''What are &amp;quot;Plural-forms&amp;quot;?'''&lt;br /&gt;
** Some languages have different word forms for different numbers of things (for example in English we have &amp;quot;1 thing&amp;quot; but &amp;quot;2 thing'''s'''&amp;quot;). The rules are different for different languages. You can find them [http://translate.sourceforge.net/wiki/l10n/pluralforms here].&lt;br /&gt;
* '''My language needs a different font to get displayed correctly.'''&lt;br /&gt;
** Wesnoth uses several different fonts, and the number is likely to grow with the support for new alphabets/writing systems. Right now we are using DejaVuSans (Roman and Cyrillic), FreeSans (Greek), sazanami-gothic (Japanese) and gkai00mp (Chinese). In the wesnoth/sv.po you will find a string containing the currently used fonts. By changing the order of fonts listed, you choose which font is preferred for your translations. A language using Greek letters would for instance translate that string with:&lt;br /&gt;
   msgid &amp;quot;DejaVuSans.ttf,FreeSans.ttf,sazanami-gothic.ttf,gkai00mp.ttf&amp;quot;&lt;br /&gt;
   msgstr &amp;quot;FreeSans.ttf,DejaVuSans.ttf,sazanami-gothic.ttf,gkai00mp.ttf&amp;quot;&lt;br /&gt;
Note that if a certain letter/glyph is not found in the first font listed, the second font will be scanned for it and so on.&lt;br /&gt;
* '''What should I do to insert a newline in a string?'''&lt;br /&gt;
** If you want to insert a newline in a string you need to include the pair of characters &amp;quot;&amp;quot;. You can use normal newlines as you wish as they don't affect the translation.&lt;br /&gt;
* '''How do I use ' within a single-quote delimited string when translating text= in help screen texts?'''&lt;br /&gt;
** Add a backslash  before it.&lt;br /&gt;
* '''What should I do with strings like &amp;quot;Prefs section^General&amp;quot;?'''&lt;br /&gt;
** There are ambiguous strings which should be translated in a different way depending on where they appear. For example, we have &amp;quot;General&amp;quot; in the preferences as &amp;quot;General preferences&amp;quot; and we can also have &amp;quot;a General&amp;quot;. These strings can have different translations for a given language, so we use &amp;quot;context&amp;quot; to solve this. The prefix only tries to give a hint about the string, and should be not translated, for example:&lt;br /&gt;
   msgid &amp;quot;Prefs section^General&amp;quot;&lt;br /&gt;
   msgstr &amp;quot;General&amp;quot;&lt;br /&gt;
* '''Who can I ask for further information?'''&lt;br /&gt;
** You can ask Ivanovic, Torangan, ott, Yann or Isaac in IRC (irc.freenode.net, #wesnoth or #wesnoth-dev).&lt;br /&gt;
If you don't like IRC, send a mail to crazy-ivanovic AT gmx DOT net, or pm him (ivanovic) at the forum.&lt;br /&gt;
* '''How do I quickly test PO file changes?'''&lt;br /&gt;
** When you modify a PO file, run &amp;quot;make update-gmo&amp;quot; in the main po directory to create a new MO file, then run &amp;quot;make install&amp;quot; there to install the new MO file.&lt;br /&gt;
** Then force cache rebuild. This is tricky -- if you only update MO files, the game may use a cached (i.e., old) version letting you wonder why it still displays the old translation. Either change game.cfg modification time, e.g. with &amp;quot;touch /usr/local/share/wesnoth/game.cfg&amp;quot;, or delete the corresponding cache[s] in ~/.wesnoth/cache.&lt;br /&gt;
* '''I don't know what ''make'' is and where to get it. Can I still quickly test PO file changes?'''&lt;br /&gt;
** Yes you can. Fist, you will need to get an editor for .po files like [http://www.poedit.net/ Poedit] or [http://translate.sourceforge.net/wiki/virtaal/index Virtaal].&lt;br /&gt;
** Create a temporary folder to put the .mo files in.&lt;br /&gt;
** Poedit automatically creates an .mo file when you save, in Virtaal choose File -&amp;gt; Export.&lt;br /&gt;
** Name your .mo files according to the text domain and put them into your temporary folder, e.g. for ''wesnoth-lib/&amp;lt;language_code&amp;gt;.po'' the .mo file will be called ''wesnoth-lib.mo''.&lt;br /&gt;
** Go to the folder your Wesnoth installation is in, e. g. ''C:\Users\&amp;lt;username&amp;gt;\AppData\Local\Battle for Wesnoth &amp;lt;version number&amp;gt;'' in Windows 7.&lt;br /&gt;
** Go to the ''translations'' folder and check if there is a subfolder for your language code. If there isn't, create one, then in the new subfolder create a folder called ''LC_MESSAGES''.&lt;br /&gt;
** Copy your .mo files to ''LC_MESSAGES'' and restart Wesnoth.&lt;br /&gt;
* '''The .po file in SVN has changed, how do I move over the translations I've made?'''&lt;br /&gt;
** If your file with additional translations is called old.po and the new file from SVN is called svn.po, create a new file called new.po by doing&lt;br /&gt;
&lt;br /&gt;
   msgmerge -o new.po old.po svn.po&lt;br /&gt;
&lt;br /&gt;
The new file new.po will keep your translations from old.po as well as the new strings from svn.po, but check the result -- some translations will not be possible to move across if the original strings changed, these are kept as comments at the end of the file.&lt;br /&gt;
&lt;br /&gt;
* '''How to generate man files from wesnoth-man(current 1.3 trunk) .po files?'''&lt;br /&gt;
To create &amp;quot;real&amp;quot; manpages out of the po files you have to install a prog&lt;br /&gt;
named &amp;quot;po4a&amp;quot; and run make update-po4a inside the maindir before running&lt;br /&gt;
make and make install. They are not automatically created out of po&lt;br /&gt;
files. With that command the files will be created and afterwards installed.&lt;br /&gt;
&lt;br /&gt;
Note: At least 80% of the .po file must be translated for the creation of a man file&lt;br /&gt;
&lt;br /&gt;
* '''Why is ''svn diff'' so huge? I have only made a small change to the .po file with poedit.'''&lt;br /&gt;
** When saving .po file poedit unwraps all strings. Usually, all .po files are wrapped at 80 characters so if you want smaller diffs and less merge conflicts you can execute the following commands each time after editing with poedit:&lt;br /&gt;
&lt;br /&gt;
   msgattrib file.po &amp;gt; file.po1&lt;br /&gt;
   mv file.po1 file.po&lt;br /&gt;
&lt;br /&gt;
==  Tools  ==&lt;br /&gt;
&lt;br /&gt;
There are several tools to work with .po files:&lt;br /&gt;
* [http://userbase.kde.org/Lokalize Lokalize] (Unix KDE, intended to replace KBabel)&lt;br /&gt;
* [http://i18n.kde.org/tools/kbabel/ KBabel] (Unix KDE)&lt;br /&gt;
* [http://gtranslator.sourceforge.net/ GTranslator] (Unix Gnome)&lt;br /&gt;
* [http://translate.sourceforge.net/wiki/virtaal/index Virtaal] (Multiplatform)&lt;br /&gt;
* [http://www.poedit.net/ poEdit] (Multiplatform)&lt;br /&gt;
* [http://www.gnu.org/software/emacs/emacs.html Emacs with po-mode] (Multiplatform)&lt;br /&gt;
* [http://www.vim.org/ Vim] with [http://www.vim.org/scripts/script.php?script_id=695 PO plug-in] (Multiplatform)&lt;br /&gt;
&lt;br /&gt;
Of course, you can edit po files with any UTF-8 capable text editor, but the tools listed above have great advantages over any text editor regarding .po translation, like going to next fuzzy/untranslated string, searching only in specific fields (msgid, msgstr, comment), ...&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[WesnothTranslations]]&lt;br /&gt;
* [[WesnothTranslationsHowTo]]&lt;br /&gt;
* [[GettextForWesnothDevelopers]]&lt;br /&gt;
* [[TranslatorShellscript]]&lt;br /&gt;
* [http://www.wesnoth.org/gettext/ Translation statistics]&lt;br /&gt;
&lt;br /&gt;
[[Category:Translations]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GettextForTranslators&amp;diff=49468</id>
		<title>GettextForTranslators</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GettextForTranslators&amp;diff=49468"/>
		<updated>2013-03-27T20:16:42Z</updated>

		<summary type="html">&lt;p&gt;Esr: Update for SourceForge hosting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Gettext for translators  ==&lt;br /&gt;
&lt;br /&gt;
Wesnoth translation is now divided into several text-domains:&lt;br /&gt;
* wesnoth&lt;br /&gt;
* wesnoth-editor&lt;br /&gt;
* wesnoth-lib (contains strings shared by game and editor)&lt;br /&gt;
* plus one text-domain for each campaign. The names of these text-domains are constructed from the word wesnoth and the common abbreviation of the campaign (wesnoth-ei, wesnoth-httt, wesnoth-trow, wesnoth-tb, wesnoth-tsg and wesnoth-utbs).&lt;br /&gt;
&lt;br /&gt;
We will use the Swedish (sv) language and the ''wesnoth'' domain as an example in this page.&lt;br /&gt;
There are three important files for each text-domain:&lt;br /&gt;
* ''wesnoth/wesnoth.pot'' file, which contains all the strings used in the main game (neither editor, nor campaign strings). You can see how a ''.pot'' file looks like in the repository : [https://sourceforge.net/p/wesnoth/code/ci/043c4f9fd33ac5abac1e9df311d2ad3edf70db47/tree/po/wesnoth/wesnoth.pot Current repository version].&lt;br /&gt;
* ''wesnoth/sv.po'', the file containing the translation, you can see how a ''.po'' file looks like in the repository: [https://sourceforge.net/p/wesnoth/code/ci/043c4f9fd33ac5abac1e9df311d2ad3edf70db47/tree/po/wesnoth/ru.po Current repository version].&lt;br /&gt;
* ''{translations_dir}/sv/LC_MESSAGES/wesnoth.gmo'', which is a binary version of &amp;lt;lang&amp;gt;.po that the game will use for efficiency reasons. This is not found in cvs, but is created during compilation of the game.&lt;br /&gt;
&lt;br /&gt;
The first of these files, we update every once in a while, when there is new or modified text,&lt;br /&gt;
for instance when a new campaign scenario hits the repository.&lt;br /&gt;
&lt;br /&gt;
Then, ''msgmerge'' is used to merge this new &amp;quot;state of the game strings&amp;quot; with your current translations, and generate a new, up-to-date, ''sv.po''.&lt;br /&gt;
&lt;br /&gt;
Then, a tool called ''msgfmt'' is called, which generates a new ''wesnoth.gmo'' file from your ''wesnoth.po'' file, which will be used by the game once installed.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;make -C po update-po&amp;quot; does these three steps in one pass.&lt;br /&gt;
&lt;br /&gt;
That was for the &amp;quot;Big Picture&amp;quot;.&lt;br /&gt;
But you really just need to be concerned with the po file:&lt;br /&gt;
translating new strings, checking &amp;quot;fuzzy&amp;quot; entries.&lt;br /&gt;
We can handle the administrative tasks of updating etc.&lt;br /&gt;
You really don't need to bother with any of these commands, unless you want to compile gmo files to check in-game.&lt;br /&gt;
&lt;br /&gt;
Ivanovic is now responsible for integrating translations into Wesnoth, with the help of Torangan and ott.&lt;br /&gt;
You should contact Ivanovic (crazy-ivanovic AT gmx DOT net), and he'll put them in the game.&lt;br /&gt;
&lt;br /&gt;
When sending po files to a maintainer to be included in SVN, please create a zip or tar.gz/bz2 archive that you attach, rather than cutting and pasting the translations into an email.  The translated strings are&lt;br /&gt;
very sensitive to formatting and the archive will also help distinguish which file is which when sending more than one po file.&lt;br /&gt;
&lt;br /&gt;
==  FAQ  ==&lt;br /&gt;
* '''What's a fuzzy string?'''&lt;br /&gt;
** It's a string calling for translator revision. For example, if an English string gets a small change and you run the ''msgmerge'' program, it will mark the translation of that string fuzzy. When we switched to gettext we marked all translations as fuzzy as lots of them were outdated.&lt;br /&gt;
* '''What are &amp;quot;Plural-forms&amp;quot;?'''&lt;br /&gt;
** Some languages have different word forms for different numbers of things (for example in English we have &amp;quot;1 thing&amp;quot; but &amp;quot;2 thing'''s'''&amp;quot;). The rules are different for different languages. You can find them [http://translate.sourceforge.net/wiki/l10n/pluralforms here].&lt;br /&gt;
* '''My language needs a different font to get displayed correctly.'''&lt;br /&gt;
** Wesnoth uses several different fonts, and the number is likely to grow with the support for new alphabets/writing systems. Right now we are using DejaVuSans (Roman and Cyrillic), FreeSans (Greek), sazanami-gothic (Japanese) and gkai00mp (Chinese). In the wesnoth/sv.po you will find a string containing the currently used fonts. By changing the order of fonts listed, you choose which font is preferred for your translations. A language using Greek letters would for instance translate that string with:&lt;br /&gt;
   msgid &amp;quot;DejaVuSans.ttf,FreeSans.ttf,sazanami-gothic.ttf,gkai00mp.ttf&amp;quot;&lt;br /&gt;
   msgstr &amp;quot;FreeSans.ttf,DejaVuSans.ttf,sazanami-gothic.ttf,gkai00mp.ttf&amp;quot;&lt;br /&gt;
Note that if a certain letter/glyph is not found in the first font listed, the second font will be scanned for it and so on.&lt;br /&gt;
* '''What should I do to insert a newline in a string?'''&lt;br /&gt;
** If you want to insert a newline in a string you need to include the pair of characters &amp;quot;&amp;quot;. You can use normal newlines as you wish as they don't affect the translation.&lt;br /&gt;
* '''How do I use ' within a single-quote delimited string when translating text= in help screen texts?'''&lt;br /&gt;
** Add a backslash  before it.&lt;br /&gt;
* '''What should I do with strings like &amp;quot;Prefs section^General&amp;quot;?'''&lt;br /&gt;
** There are ambiguous strings which should be translated in a different way depending on where they appear. For example, we have &amp;quot;General&amp;quot; in the preferences as &amp;quot;General preferences&amp;quot; and we can also have &amp;quot;a General&amp;quot;. These strings can have different translations for a given language, so we use &amp;quot;context&amp;quot; to solve this. The prefix only tries to give a hint about the string, and should be not translated, for example:&lt;br /&gt;
   msgid &amp;quot;Prefs section^General&amp;quot;&lt;br /&gt;
   msgstr &amp;quot;General&amp;quot;&lt;br /&gt;
* '''Who can I ask for further information?'''&lt;br /&gt;
** You can ask Ivanovic, Torangan, ott, Yann or Isaac in IRC (irc.freenode.net, #wesnoth or #wesnoth-dev).&lt;br /&gt;
If you don't like IRC, send a mail to crazy-ivanovic AT gmx DOT net, or pm him (ivanovic) at the forum.&lt;br /&gt;
* '''How do I quickly test PO file changes?'''&lt;br /&gt;
** When you modify a PO file, run &amp;quot;make update-gmo&amp;quot; in the main po directory to create a new MO file, then run &amp;quot;make install&amp;quot; there to install the new MO file.&lt;br /&gt;
** Then force cache rebuild. This is tricky -- if you only update MO files, the game may use a cached (i.e., old) version letting you wonder why it still displays the old translation. Either change game.cfg modification time, e.g. with &amp;quot;touch /usr/local/share/wesnoth/game.cfg&amp;quot;, or delete the corresponding cache[s] in ~/.wesnoth/cache.&lt;br /&gt;
* '''I don't know what ''make'' is and where to get it. Can I still quickly test PO file changes?'''&lt;br /&gt;
** Yes you can. Fist, you will need to get an editor for .po files like [http://www.poedit.net/ Poedit] or [http://translate.sourceforge.net/wiki/virtaal/index Virtaal].&lt;br /&gt;
** Create a temporary folder to put the .mo files in.&lt;br /&gt;
** Poedit automatically creates an .mo file when you save, in Virtaal choose File -&amp;gt; Export.&lt;br /&gt;
** Name your .mo files according to the text domain and put them into your temporary folder, e.g. for ''wesnoth-lib/&amp;lt;language_code&amp;gt;.po'' the .mo file will be called ''wesnoth-lib.mo''.&lt;br /&gt;
** Go to the folder your Wesnoth installation is in, e. g. ''C:\Users\&amp;lt;username&amp;gt;\AppData\Local\Battle for Wesnoth &amp;lt;version number&amp;gt;'' in Windows 7.&lt;br /&gt;
** Go to the ''translations'' folder and check if there is a subfolder for your language code. If there isn't, create one, then in the new subfolder create a folder called ''LC_MESSAGES''.&lt;br /&gt;
** Copy your .mo files to ''LC_MESSAGES'' and restart Wesnoth.&lt;br /&gt;
* '''The .po file in SVN has changed, how do I move over the translations I've made?'''&lt;br /&gt;
** If your file with additional translations is called old.po and the new file from SVN is called svn.po, create a new file called new.po by doing&lt;br /&gt;
&lt;br /&gt;
   msgmerge -o new.po old.po svn.po&lt;br /&gt;
&lt;br /&gt;
The new file new.po will keep your translations from old.po as well as the new strings from svn.po, but check the result -- some translations will not be possible to move across if the original strings changed, these are kept as comments at the end of the file.&lt;br /&gt;
&lt;br /&gt;
* '''How to generate man files from wesnoth-man(current 1.3 trunk) .po files?'''&lt;br /&gt;
To create &amp;quot;real&amp;quot; manpages out of the po files you have to install a prog&lt;br /&gt;
named &amp;quot;po4a&amp;quot; and run make update-po4a inside the maindir before running&lt;br /&gt;
make and make install. They are not automatically created out of po&lt;br /&gt;
files. With that command the files will be created and afterwards installed.&lt;br /&gt;
&lt;br /&gt;
Note: At least 80% of the .po file must be translated for the creation of a man file&lt;br /&gt;
&lt;br /&gt;
* '''Why is ''svn diff'' so huge? I have only made a small change to the .po file with poedit.'''&lt;br /&gt;
** When saving .po file poedit unwraps all strings. Usually, all .po files are wrapped at 80 characters so if you want smaller diffs and less merge conflicts you can execute the following commands each time after editing with poedit:&lt;br /&gt;
&lt;br /&gt;
   msgattrib file.po &amp;gt; file.po1&lt;br /&gt;
   mv file.po1 file.po&lt;br /&gt;
&lt;br /&gt;
==  Tools  ==&lt;br /&gt;
&lt;br /&gt;
There are several tools to work with .po files:&lt;br /&gt;
* [http://userbase.kde.org/Lokalize Lokalize] (Unix KDE, intended to replace KBabel)&lt;br /&gt;
* [http://i18n.kde.org/tools/kbabel/ KBabel] (Unix KDE)&lt;br /&gt;
* [http://gtranslator.sourceforge.net/ GTranslator] (Unix Gnome)&lt;br /&gt;
* [http://translate.sourceforge.net/wiki/virtaal/index Virtaal] (Multiplatform)&lt;br /&gt;
* [http://www.poedit.net/ poEdit] (Multiplatform)&lt;br /&gt;
* [http://www.gnu.org/software/emacs/emacs.html Emacs with po-mode] (Multiplatform)&lt;br /&gt;
* [http://www.vim.org/ Vim] with [http://www.vim.org/scripts/script.php?script_id=695 PO plug-in] (Multiplatform)&lt;br /&gt;
&lt;br /&gt;
Of course, you can edit po files with any UTF-8 capable text editor, but the tools listed above have great advantages over any text editor regarding .po translation, like going to next fuzzy/untranslated string, searching only in specific fields (msgid, msgstr, comment), ...&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[WesnothTranslations]]&lt;br /&gt;
* [[WesnothTranslationsHowTo]]&lt;br /&gt;
* [[GettextForWesnothDevelopers]]&lt;br /&gt;
* [[TranslatorShellscript]]&lt;br /&gt;
* [http://www.wesnoth.org/gettext/ Translation statistics]&lt;br /&gt;
&lt;br /&gt;
[[Category:Translations]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WesnothRepository&amp;diff=49398</id>
		<title>WesnothRepository</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WesnothRepository&amp;diff=49398"/>
		<updated>2013-03-27T05:16:40Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical references to Subversion from the wiki search function&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Compiling Wesnoth}}&lt;br /&gt;
&lt;br /&gt;
The Battle for Wesnoth code base is stored in a version control repository. Version control allows the entire dev team to edit files concurrently. The software tracks revisions, stores a record of all edits, revents simultaneous editing from causing clashes. All changes are stored in the subversion repository. &lt;br /&gt;
&lt;br /&gt;
When a release is planned, the current set of the files in the repository is frozen, given a release number, and shipped out to the world at large. Then, as files continue to be edited by the developers, the repository code advances past that point. The repository (or &amp;quot;repo&amp;quot;) version is by definition the most up-to-date version of the code.&lt;br /&gt;
&lt;br /&gt;
The Wesnoth repository uses Git and lives at https://sourceforge.net/p/wesnoth/code&lt;br /&gt;
&lt;br /&gt;
==  Git ==&lt;br /&gt;
&lt;br /&gt;
Git is the most widely used open-source version-control system. You can learn more about it at the Git home page, http://git-scm.com/.&lt;br /&gt;
&lt;br /&gt;
Git replaced Sub&amp;amp;shy;&amp;amp;shy;version as Wesnoth's version control system in March 2013. Sub&amp;amp;shy;&amp;amp;shy;version had itself previously replaced an older program called &amp;quot;CVS&amp;quot; or &amp;quot;concurrent versioning system&amp;quot; in 2005. These earlier systems have left a few traces in the version history which you might encounter; some older documentation and a few files refer to them.&lt;br /&gt;
&lt;br /&gt;
==  Browse the code  ==&lt;br /&gt;
&lt;br /&gt;
There are currently two main streams of development: trunk (1.11.x) and stable branch (1.10.x). Most other branches are only used for a short time to do some testing without disturbing the main development. You can use your web browser to navigate through the source code:&lt;br /&gt;
&lt;br /&gt;
https://sourceforge.net/p/wesnoth/code&lt;br /&gt;
&lt;br /&gt;
==  Download  ==&lt;br /&gt;
&lt;br /&gt;
To check out a read-only copy into a directory called ''wesnoth-code'',&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.code.sf.net/p/wesnoth/code wesnoth-code&lt;br /&gt;
&lt;br /&gt;
==  Commit access  ==&lt;br /&gt;
&lt;br /&gt;
For commit access, you must have a developer account on SourceForge, it must be registered as part of the Wesnoth group, and you must check out with&lt;br /&gt;
&lt;br /&gt;
 git clone ssh://USER@git.code.sf.net/p/wesnoth/code wesnoth-code&lt;br /&gt;
&lt;br /&gt;
where USER is your SourceForge developer name.&lt;br /&gt;
&lt;br /&gt;
==  Update  ==&lt;br /&gt;
&lt;br /&gt;
Do this from inside the ''wesnoth-code'' directory &lt;br /&gt;
&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
== Reviewing your changes ==&lt;br /&gt;
&lt;br /&gt;
Before committing, it's always wise to run&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
&lt;br /&gt;
and look at the output. Some kinds of mistakes that are hard to see embedded in all the code you have modified are more easily spotted in the isolated diff lines.&lt;br /&gt;
&lt;br /&gt;
== Generating patches ==&lt;br /&gt;
&lt;br /&gt;
Under Subversion on a Unix-like operating system, you'll typically do&lt;br /&gt;
&lt;br /&gt;
  git format-patch HEAD~1..HEAD&lt;br /&gt;
&lt;br /&gt;
or something similar; &amp;quot;HEAD~1&amp;quot; may be replaced by a hash or symbolic reference to any earlier revision. This will produce one or more patch files, numbered and endingth with the extension &amp;quot;.patch&amp;quot;.  See [[PatchSubmissionGuidelines]] for more on how to get these merged into the public repository.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[CompilingWesnoth]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WesnothRepository&amp;diff=49396</id>
		<title>WesnothRepository</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WesnothRepository&amp;diff=49396"/>
		<updated>2013-03-27T05:12:20Z</updated>

		<summary type="html">&lt;p&gt;Esr: We've switched to git.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Compiling Wesnoth}}&lt;br /&gt;
&lt;br /&gt;
The Battle for Wesnoth code base is stored in a version control repository. Version control allows the entire dev team to edit files concurrently. The software tracks revisions, stores a record of all edits, revents simultaneous editing from causing clashes. All changes are stored in the subversion repository. &lt;br /&gt;
&lt;br /&gt;
When a release is planned, the current set of the files in the repository is frozen, given a release number, and shipped out to the world at large. Then, as files continue to be edited by the developers, the repository code advances past that point. The repository (or &amp;quot;repo&amp;quot;) version is by definition the most up-to-date version of the code.&lt;br /&gt;
&lt;br /&gt;
The Wesnoth repository uses Git and lives at https://sourceforge.net/p/wesnoth/code&lt;br /&gt;
&lt;br /&gt;
==  Git ==&lt;br /&gt;
&lt;br /&gt;
Git is the most widely used open-source version-control system. You can learn more about it at the Git home page, http://git-scm.com/.&lt;br /&gt;
&lt;br /&gt;
Git replaced Subversion as Wesnoth's version control system in March 2013. Subversion had itself previously replaced an older program called &amp;quot;CVS&amp;quot; or &amp;quot;concurrent versioning system&amp;quot; in 2005. These earlier systems have left a few traces in the version history which you might encounter; some older documentation and a few files refer to them.&lt;br /&gt;
&lt;br /&gt;
==  Browse the code  ==&lt;br /&gt;
&lt;br /&gt;
There are currently two main streams of development: trunk (1.11.x) and stable branch (1.10.x). Most other branches are only used for a short time to do some testing without disturbing the main development. You can use your web browser to navigate through the source code:&lt;br /&gt;
&lt;br /&gt;
https://sourceforge.net/p/wesnoth/code&lt;br /&gt;
&lt;br /&gt;
==  Download  ==&lt;br /&gt;
&lt;br /&gt;
To check out a read-only copy into a directory called ''wesnoth-code'',&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.code.sf.net/p/wesnoth/code wesnoth-code&lt;br /&gt;
&lt;br /&gt;
==  Commit access  ==&lt;br /&gt;
&lt;br /&gt;
For commit access, you must have a developer account on SourceForge, it must be registered as part of the Wesnoth group, and you must check out with&lt;br /&gt;
&lt;br /&gt;
 git clone ssh://USER@git.code.sf.net/p/wesnoth/code wesnoth-code&lt;br /&gt;
&lt;br /&gt;
where USER is your SourceForge developer name.&lt;br /&gt;
&lt;br /&gt;
==  Update  ==&lt;br /&gt;
&lt;br /&gt;
Do this from inside the ''wesnoth-code'' directory &lt;br /&gt;
&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
== Reviewing your changes ==&lt;br /&gt;
&lt;br /&gt;
Before committing, it's always wise to run&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
&lt;br /&gt;
and look at the output. Some kinds of mistakes that are hard to see embedded in all the code you have modified are more easily spotted in the isolated diff lines.&lt;br /&gt;
&lt;br /&gt;
== Generating patches ==&lt;br /&gt;
&lt;br /&gt;
Under Subversion on a Unix-like operating system, you'll typically do&lt;br /&gt;
&lt;br /&gt;
  git format-patch HEAD~1..HEAD&lt;br /&gt;
&lt;br /&gt;
or something similar; &amp;quot;HEAD~1&amp;quot; may be replaced by a hash or symbolic reference to any earlier revision. This will produce one or more patch files, numbered and endingth with the extension &amp;quot;.patch&amp;quot;.  See [[PatchSubmissionGuidelines]] for more on how to get these merged into the public repository.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[CompilingWesnoth]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=UsefulLinks&amp;diff=49395</id>
		<title>UsefulLinks</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=UsefulLinks&amp;diff=49395"/>
		<updated>2013-03-27T04:48:29Z</updated>

		<summary type="html">&lt;p&gt;Esr: Replace Subversion links with git links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Battle for Wesnoth ===&lt;br /&gt;
 Home Page                         http://www.wesnoth.org/&lt;br /&gt;
 Gna! Project Page                 http://svn.wesnoth.org/&lt;br /&gt;
 Page on TheLinuxGameTome          http://happypenguin.org/show?Battle%20for%20Wesnoth&lt;br /&gt;
 Freshmeat entry                   http://freshmeat.net/projects/wesnoth/&lt;br /&gt;
 Changelog                         http://changelog.wesnoth.org/ [http://stable-changelog.wesnoth.org stable]&lt;br /&gt;
 This wiki                         http://wiki.wesnoth.org/&lt;br /&gt;
 The manual                        http://manual.wesnoth.org/&lt;br /&gt;
 Translation statistics            http://gettext.wesnoth.org/&lt;br /&gt;
 Add-on server web interface       http://addonlist.wesnoth.org/ [http://stable-addons.wesnoth.org stable] [http://dev-addons.wesnoth.org dev]&lt;br /&gt;
 Multiplayer server statistics     http://wesnothd.wesnoth.org/&lt;br /&gt;
                                   http://wesnoth.yi.org/statistics/ &lt;br /&gt;
 Multiplayer replays               http://replays.wesnoth.org&lt;br /&gt;
 Unit advancement tree             http://units.wesnoth.org/&lt;br /&gt;
 Forum for users and developers    http://forums.wesnoth.org/ [http://forums.wesnoth.org/search.php?search_id=newposts new posts]&lt;br /&gt;
 List of Frequently Proposed Ideas http://fpi.wesnoth.org/&lt;br /&gt;
 IRC channel (Freenode)            irc://irc.wesnoth.org/#wesnoth [http://webchat.freenode.net/?channels=wesnoth webchat]&lt;br /&gt;
 IRC logs                          http://irclog.wesnoth.org/&lt;br /&gt;
 Flattr Account                    http://flattr.com/profile/wesnoth&lt;br /&gt;
 Twitter Account                   http://twitter.com/Wesnoth&lt;br /&gt;
&lt;br /&gt;
=== Developers ===&lt;br /&gt;
 Git web interface                 https://sourceforge.net/p/wesnoth/code/ci&lt;br /&gt;
 Git homepage                      http://git-scm.com/&lt;br /&gt;
 Git documentation                 http://git-scm.com/documentation&lt;br /&gt;
 Code documentation                http://devdocs.wesnoth.org/&lt;br /&gt;
 Mailing lists                     https://gna.org/mail/?group=wesnoth&lt;br /&gt;
 Bug/Feature tracker               http://bugs.wesnoth.org/&lt;br /&gt;
 Patch tracker                     http://patches.wesnoth.org/&lt;br /&gt;
 ohloh statistics                  http://www.ohloh.net/p/wesnoth&lt;br /&gt;
 wesnoth.org server stats          http://collectd.wesnoth.org&lt;br /&gt;
 IRC channel (Freenode)            http://irc.wesnoth.org/#wesnoth-dev [http://webchat.freenode.net/?channels=wesnoth-dev webchat]&lt;br /&gt;
&lt;br /&gt;
=== Other Links ===&lt;br /&gt;
 1vs1 Wesnoth ladder               http://wesnoth.gamingladder.info/&lt;br /&gt;
 Wesnoth matches with commentary   http://www.youtube.com/user/NekisBrutalWesnoth&lt;br /&gt;
 WSNPP                             http://wiki.wesnoth.org/WSNPP&lt;br /&gt;
 Run Wesnoth online (Windows)      http://spoon.net/the-battle-for-wesnoth&lt;br /&gt;
&lt;br /&gt;
=== Multilingual Players' Sites ===&lt;br /&gt;
Community in China               http://wesnoth.cn/&lt;br /&gt;
&lt;br /&gt;
[[Category:Wesnoth Wiki]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Geography_of_Wesnoth&amp;diff=49271</id>
		<title>Geography of Wesnoth</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Geography_of_Wesnoth&amp;diff=49271"/>
		<updated>2013-03-23T20:00:06Z</updated>

		<summary type="html">&lt;p&gt;Esr: Contnuity fix from zookeeper's new map.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Geography of Wesnoth/Translations}}&lt;br /&gt;
= Irdya =&lt;br /&gt;
&lt;br /&gt;
The name of the world in which the kingdom of Wesnoth is situated is &amp;quot;Irdya&amp;quot;.  This term is , however, only rarely used in the era depicted by the main map.  People normally just say &amp;quot;the world&amp;quot; or, poetically, &amp;quot;the wide green world&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Wesnoth and Surrounding Lands ==&lt;br /&gt;
&lt;br /&gt;
http://svn.gna.org/viewcvs/*checkout*/wesnoth/trunk/data/core/images/maps/wesnoth.png&lt;br /&gt;
&lt;br /&gt;
This map is current for approximately YW 450.  Named cities were founded during the Golden Age of Wesnoth and have thus have existed for at least 200 years. &lt;br /&gt;
&lt;br /&gt;
Place names in '''bold''' are marked on the main map.&lt;br /&gt;
&lt;br /&gt;
* Major features:&lt;br /&gt;
** '''The Great Ocean''': Lies to the west of the continent and all rivers eventually flow to it.  &lt;br /&gt;
** The '''Bay of Pearls''': The Elensefar Peninsula in the North and the '''Isle of Alduin''' in the southwest separate this from the Great Ocean.  This is where human refugees from the Green Isle first landed in 1YW.&lt;br /&gt;
** '''Isle of Alduin''': Inhabited island off the west coast of the Great Continent.  Home of the Great Academy of Magic and a traditional center of magecraft.&lt;br /&gt;
** '''The Three Sisters''': Group of three islands north-northwest of Alduin.  The nearest is individually known as the Isle of the Damned and has an evil reputation.&lt;br /&gt;
** '''The Great River''': Runs east to west on the main map, unmarked.&lt;br /&gt;
** '''Ford of Abez''': Easternmost point at which the Great River can be crossed without ships.  A traditional invasion route for armies crossing in either direction.&lt;br /&gt;
** '''River Weldyn''': Tributary running north from the '''Dulatus Hills''' to the '''Great River'''.&lt;br /&gt;
** River Aethen: River running from the '''Dulatus Hills''' to the '''Great Ocean''' through the '''Aethenwood'''.&lt;br /&gt;
** '''The Heart Mountains''': the major mountain range surrounding '''Lake Vrug'''.&lt;br /&gt;
&lt;br /&gt;
=== Wesnoth ===&lt;br /&gt;
The Kingdom of Wesnoth is located in the north-central portion of the Great Continent. Most of the mainline campaigns revolve around it. It is bounded on the map by the '''Great River''' to the north, the shore of the '''Great Ocean''' to the west, the Aethenwood to the southwest, and the '''Bitter Swamp''' to the southeast (lower right corner of the main map).&lt;br /&gt;
&lt;br /&gt;
Over the '''River Aethen''', south of '''Fort Tahn''', is a Wesnothian frontier region. It is bounded to the south (off-map) by dense woods of which the '''Aethenwood''' may be considered a northernmost extension. &lt;br /&gt;
&lt;br /&gt;
* Notable cities:&lt;br /&gt;
** '''Weldyn''': The capital of Wesnoth.&lt;br /&gt;
** '''Aldril''': City lying on the Bay of Pearls.&lt;br /&gt;
** '''Blackwater Port''': City lying south of the Bay of Pearls.&lt;br /&gt;
** '''Carcyn''': Located between the Grey Woods and the Great River. &lt;br /&gt;
** '''Dan'Tonk''': Wesnoth's largest city, located in the center of the country, just west and north of Weldyn.&lt;br /&gt;
** '''Soradoc''': The northernmost border outpost of Wesnoth, controls the confluence of the Weldyn River and the Great River.&lt;br /&gt;
** '''Fort Tahn''': The southernmost border outpost, controls the north/south road crossing the River Aethen.&lt;br /&gt;
** '''Tath''': Important fort city north of Dan'Tonk, exerts control over the wilderness country around the east of the Brown Hills and north to the '''Ford of Abez'''. &lt;br /&gt;
&lt;br /&gt;
* Notable land features:&lt;br /&gt;
** '''Gryphon Mountain''': Home of the fabled Gryphons&lt;br /&gt;
** '''Ford of Abez''': Shallow part of the Great River, it is usually controlled by Wesnothian forces&lt;br /&gt;
** '''Weldyn River''': It branches from the Great River and goes south&lt;br /&gt;
** Great Central Plain: Area bounded by Weldyn, Dan'Tonk, and Fort Tahn, this plain is Wesnoth's bread basket and home to most of its population&lt;br /&gt;
** '''Dulatus Hills''': These rolling hills bordering the Great Central Plain provide much of Wesnoth's livestock and agriculture&lt;br /&gt;
** Brown Hills: Wasteland surrounding Gryphon Mountain that is not well-populated and occasionally very dangerous.&lt;br /&gt;
** Horse Plains: Region of rolling plains just south of the '''Great River''', bounded by '''Glyn's Forest''' to the west and the '''River Weldyn''' to the east; the southern reach merges into the Central Plain.  Home of the powerful Clans; the best horses in Wesnoth are bred here.  &lt;br /&gt;
** '''Estmark Hills''': Largish range rising south of the Great River and east of the Weldyn River.  The northernmost portion, nearest the '''River Weldyn''', has at various times been settled by Wesnothians, but the Kingdom's control is tenuous at best and banditry is common.&lt;br /&gt;
** '''Glyn's Forest''': Sometimes known as the Royal Forest, named for one of Haldric II's sons&lt;br /&gt;
** '''Gray Woods''': Large forest in the heart of the wilds of Wesnoth, located between Carcyn and Aldril and generally considered to be haunted&lt;br /&gt;
** Green Swamp: Large swamp in the heart of the wilds of Wesnoth, south of Aldril.  It receives drainage from the Brown Hills and feeds into the Great River. (Not shown on the main map.)&lt;br /&gt;
&lt;br /&gt;
=== Southwest Elven Lands ===&lt;br /&gt;
The Wood Elves are separate from those of the north, and have only intermittent relations with them and most other countries. Its borders are the Green Swamp to the northeast, the desert (not shown) to the south, and the Ocean to the west.&lt;br /&gt;
* Notable cities&lt;br /&gt;
** None known&lt;br /&gt;
* Notable land features:&lt;br /&gt;
** '''Aethen Forest''': The largest southern forest, it extends far to the southwest - much farther than is charted - and is home to elves&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Elensefar ===&lt;br /&gt;
'''Elensefar''' is at times a province of Wesnoth, at times an independent country, and at times in a treaty federation with Wesnoth. Its borders are the Great River to the north, a loosely defined line with Wesnoth to the east, the Bay of Pearls to the south, and the ocean to the west.  More information is found in the [[WesnothHistory|historical narrative]] of Wesnoth.&lt;br /&gt;
&lt;br /&gt;
* Notable cities:&lt;br /&gt;
** '''Elensefar''': The capital, located on an island in the Great River delta&lt;br /&gt;
** '''Carcyn''': City on the Wesnoth-Elensefar border, disputed with Wesnoth&lt;br /&gt;
* Notable land features:&lt;br /&gt;
** '''Great River''': It is very wide at this point, and only ships can cross it.&lt;br /&gt;
&lt;br /&gt;
=== Northlands ===&lt;br /&gt;
&lt;br /&gt;
There is no government of the Northlands. Various groups of orcs, dwarves, barbarian men and even elves populate the region. The northern and eastern borders are not defined, the southern border is the '''Great River''', and the western border is the '''Great Ocean'''.&lt;br /&gt;
&lt;br /&gt;
* Notable cities:&lt;br /&gt;
** '''Glamdrol''': An Orcish tribal capital&lt;br /&gt;
** '''Romyr''': Another Orcish tribal capital &lt;br /&gt;
** '''Wesmere''': The location of the Ka'lian - the Elvish Council&lt;br /&gt;
** Dwarven Doors: A mixed human/dwarven town in the region of Knalga in the southern Heart Mountains. A major trade center.&lt;br /&gt;
** Dallben and Delwyn: Human villages originally built by settlers who crossed the Great River during Wesnoth's Golden Age expansion.  Now abandoned.  The forested area northeast of '''Elensefar''', where these villages were located, was named the Annuvin province by men but was known by the elves as Wesmere.&lt;br /&gt;
&lt;br /&gt;
* Notable land features:&lt;br /&gt;
** '''Heart Mountains''': A virtually impassable barrier between the river country and the Northern Plains.&lt;br /&gt;
** Heartfangs: the particularly forbidding stretch of high peaks southwest of '''Lake Vrug''' and north of the '''Forest of Wesmere'''.  The most inhospitable and dangerous portion of the '''Heart Mountains'''; only hermits, madmen, and mages live there.&lt;br /&gt;
** '''Swamp of Dread''': a very large bog located between the '''Heart Mountains''' and the '''Great River'''.  A notoriously dangerous place.&lt;br /&gt;
** '''Lake Vrug''': A large mountain lake whose river carves the only pathway through the Northern Mountains&lt;br /&gt;
** '''Arkan-thoria''': The river than comes out of Lake Vrug.  This is the elvish name; among humans it is called Longlier.  &lt;br /&gt;
** '''River Listra''': The south-running tributary of the Great River into which the '''Arkan-thoria''' empties.&lt;br /&gt;
** '''Lintanir Forest''': The southernmost portion of the Great Northern Forest, a gigantic wood whose eastern and northern boundaries are known only the elves.  Their capitol, Elensiria, has only seldom been visited by humans.&lt;br /&gt;
** '''Great River''': The origin of this river is somewhere in the east of the northern lands&lt;br /&gt;
&lt;br /&gt;
==== Wesmere====&lt;br /&gt;
The location of the Ka'lian - the Elvish Council in the Eastern part of the forest. The river Telfar flows through the forest. The Kal'ian is on an island in the Telfar. The River Telfar is crossed by the Northern Shallows, the Ford of Alyas, the Ford of Tifranur and the North Bridge. Villages surrounding the Ka'lian are named Telionath, Arthen, Arryn, Illissa, Viricon, Tireas, Essarn, Valcathra, Aelion, Elendor, Erethean. Other areas near the Ka'lian are Brightleaf Wood, Telfar Green (an opening in the forest), Dancer’s Green (an opening in the forest), Karmarth Hills, Westwind Wood (possibly the foothills of the Heart Mountains to the north east of Wesmere), Southwind Wood. East and outside are the forest are the villages of Dallben and Delwyn.&lt;br /&gt;
&lt;br /&gt;
== Far North ==&lt;br /&gt;
&lt;br /&gt;
http://svn.gna.org/viewcvs/*checkout*/wesnoth/trunk/data/campaigns/Son_Of_The_Black_Eye/images/farnorth.png&lt;br /&gt;
&lt;br /&gt;
Cold, harsh, and inaccessible, the Far North is the ancestral home of the Orcish Clannate.  It lies north of the Heart Mountains, which the Orcs call the Haggid-Dargor and claim (without merit) as their own.  To the east lie the Unaligned Tribes of the Wild Steppe, who fell out of the control of the Clannate, instead roaming with wild human barbarians and clashing with the High Elves of the North Plains (known as North Elves in human lands).  The High Elves themselves reside further east, where it is rumored they rule a vast kingdom.&lt;br /&gt;
&lt;br /&gt;
* Notable cities:&lt;br /&gt;
** Barag Gor, a city home to the Orcish Council&lt;br /&gt;
** Bitok&lt;br /&gt;
** Borstep&lt;br /&gt;
** Castelfrang&lt;br /&gt;
** Farzi&lt;br /&gt;
** Festog&lt;br /&gt;
** Grisbi&lt;br /&gt;
** Lmarig&lt;br /&gt;
** Melmog&lt;br /&gt;
** Prestim&lt;br /&gt;
** Tirigaz&lt;br /&gt;
* Notable land features:&lt;br /&gt;
** Swamp of Desolation&lt;br /&gt;
** Mountains of Dorth&lt;br /&gt;
** Mountains of Haag&lt;br /&gt;
** Green Forest&lt;br /&gt;
** Silent Forest&lt;br /&gt;
** Forest of Thelien&lt;br /&gt;
** River Oumph&lt;br /&gt;
** River Bork&lt;br /&gt;
** Wild Steppe&lt;br /&gt;
&lt;br /&gt;
===Area around Tirigaz===&lt;br /&gt;
Featured in [http://wiki.wesnoth.org/Mainline_Campaigns#Dead_Water Dead Water].&lt;br /&gt;
&lt;br /&gt;
http://svn.gna.org/viewcvs/*checkout*/wesnoth/trunk/campaigns/Dead_Water/images/dead-water-map.png&lt;br /&gt;
&lt;br /&gt;
* Notable cities:&lt;br /&gt;
** Tirigaz&lt;br /&gt;
** Jotha&lt;br /&gt;
**Agvorad&lt;br /&gt;
* Notable land features:&lt;br /&gt;
** Swamp of Desolation&lt;br /&gt;
** Mountains of Dorth&lt;br /&gt;
** Bilheld, a large island.&lt;br /&gt;
** A small island of coast of Bilheld&lt;br /&gt;
&lt;br /&gt;
== The Southern Land ==&lt;br /&gt;
&amp;lt;tt&amp;gt;Where is this confirmed?&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the land to the far south of wesnoth.&lt;br /&gt;
* Notable cities:&lt;br /&gt;
** Serrul: a peaceful city that excels at sea trade.&lt;br /&gt;
** Varrant: a prosperous trade city.&lt;br /&gt;
** Kesh: a powerful military city.&lt;br /&gt;
** Azen: capitol of the Azgar (a Expansionist clan with a strong military force)&lt;br /&gt;
* Notable land features:&lt;br /&gt;
** The Ashland Desert: a long and hot desert that leads to Wesnoth.&lt;br /&gt;
&lt;br /&gt;
== The Green Isle ==&lt;br /&gt;
The geography features in [http://wiki.wesnoth.org/Mainline_Campaigns#The_Rise_of_Wesnoth The Rise of Wesnoth]. In this place names are placed over the map below as overlays.&lt;br /&gt;
http://svn.gna.org/viewcvs/*checkout*/wesnoth/trunk/data/campaigns/The_Rise_Of_Wesnoth/images/story/the_green_isle.png&lt;br /&gt;
=== Wesfolk Land ===&lt;br /&gt;
This is where the Wesfolk live, with their Lich overlords. The boundary between it and the Islefolk land is the hilly area running south-west to north-east. The Wesfolk land is in the north-west. Little is known about what happened to the island after Haldric left.&lt;br /&gt;
* Notable cities:&lt;br /&gt;
** Jevyan's Haven: The capital of the Wesfolk, where Jevyan reigned; presumably where the gates to orcland were opened&lt;br /&gt;
* Notable land features&lt;br /&gt;
** None. (its not a very detailed map, is it? :) )&lt;br /&gt;
&lt;br /&gt;
=== Islefolk Land ===&lt;br /&gt;
This is where the Islefolk (Haldric's folk) live. The boundary is the same as that of the Wesfolk; the islefolk land is to the southeast.&lt;br /&gt;
* Notable cities:&lt;br /&gt;
** Blackmore: {??}&lt;br /&gt;
** Clearwater Port: {??}&lt;br /&gt;
** Southbay: {??}&lt;br /&gt;
* Notable land features:&lt;br /&gt;
** None. (see Wesfolk land)&lt;br /&gt;
&lt;br /&gt;
== Campaign References ==&lt;br /&gt;
&lt;br /&gt;
This section collates specific facts about geography asserted in the the text of mainline campaigns, implied by map dots (track) or by features on a battle map (map).  It aims to be complete as to locations on the main map and identifiably adjacent to it.  Two groups of off-map locations are confined to single campaigns, the Green Isle in ''The Rise of Wesnoth'' and the Far North in ''Son of the Black Eye''; those locations are not listed here.&lt;br /&gt;
&lt;br /&gt;
=== Heir To The Throne ===&lt;br /&gt;
&lt;br /&gt;
Konrad was raised in the '''Aethenwood''' (track, ''The Elves Besieged'').  He returns to the mainland very near the location where Haldric the Great first landed in 1YW.  (map, ''Bay of Pearls''). The fight with Muff Malal takes place on the peninsula north of the '''Bay of Pearls''' (track, ''Bay of Pearls'').  The city of '''Elensefar''' is actually located on a large island in the mouth of the '''Great River''' (map, ''The Siege of Elensefar'').  The crossroads fight takes place where the roads from '''Carcyn''', '''Dan'Tonk''' and '''Fort Tahn''' meet (track, ''Crossroads''). Konrad meets Li'sar on the road between '''Dan'Tonk''' and '''Carcyn''' (track, ''The Princess of Wesnoth''). Konrad fights undead in the Brown Hills southeast of '''Gryphon Mountain''' (track, ''Valley of Death''). The track for ''Gryphon Mountain'' unsurprisingly lands on the '''Gryphon Mountain''' map feature; equally unsurprisingly, the track for ''Ford of Abez'' lands on the '''Ford of Abez''' map feature.&lt;br /&gt;
&lt;br /&gt;
North of the '''Great River''' this campaign is our basic textual evidence for several important features.  The country around the easternmost tip of the '''Swamp of Dread''' is described as &amp;quot;abundant pine forests nestled in rolling foothills&amp;quot; (track and text, ''Northern Winter'') and, at least during the Turmoil of Asheviere, is inhabited by orcs.  Dwarven Doors and Knalga are located in the center of the southern arm of the Heart Mountains, south-southeast of Lake Vrug (''The Dwarven Doors'').  Lionel, the Lost General, is found in an orcish warren at the northern edge of the southern '''Heart Mountains''', north-northeast of Knalga and adjacent to the valley of the Arkan-thoria (''The Lost General'').  Konrad re-encounters Li'sar north across that valley in the foothills of the northern '''Heart Mountains''' (track, ''Hasty Alliance'').  The Scepter of Fire is found in those same foothills a bit further east and south, just north of the southernmost bend of the '''Arkan-thoria''' (''Scepter of Fire''). &lt;br /&gt;
&lt;br /&gt;
Konrad's party travels southeast through the caverns, under the '''Arkan-thoria''',  to just south of a northward bend of the river (''A Choice Must Be Made'').  Kalenz says that this river is called 'Longlier' by men and 'Arkan-thoria' by the Elves.  He further says that the homeland of his people lies to the east and north.  Kalenz identifies their location at the easternmost edge of the southern '''Heart Mountains''' (track, ''Snow Plains'') as &amp;quot;...once the home of my people. We left here centuries ago&amp;quot; (text).  In the next scenario, the North Elves are contacted at the confluence of the '''Arkan-thoria''' and the '''Listra''' (track, ''Home of the North Elves'').  Konrad's party take refuge in Emetria, an Elven castle located just within the border of the southern lobe '''Lintanir Forest'''. ''The Elven Council'' takes place in the elven capital of Elensiria, location not specified. &lt;br /&gt;
&lt;br /&gt;
Konrad crosses the '''Great River''' into Wesnoth just north of '''Soradoc''' (''Return to Wesnoth''). The country between the Elven forests and the river is inhabited by, among other things, &amp;quot;hermit mages&amp;quot; (text). He then crosses the river into the '''Estmark Hills''' hills east of the '''Weldyn River''' (track, ''Test of the Clans'').&lt;br /&gt;
&lt;br /&gt;
Neither the '''Estmark Hills''', nor the '''Heart Mountains''', nor the swamp between them and the '''Great River''' are named in this campaign, but one scenario title refers to the latter as ''Swamp of Dread''.&lt;br /&gt;
&lt;br /&gt;
Continuity problems: the map for 'The Princess of Wesnoth' is difficult to reconcile with the track location; the lake to the south should be large enough to show on the main map and is difficult to fit in a valley in the Brown Hills.&lt;br /&gt;
Likewise, the map for ''Home of the North Elves'' shows only an east-west river probably too small to be the '''Arkan-thoria''', and not the '''Listra''' that it should flow into.&lt;br /&gt;
&lt;br /&gt;
The campaign maps feature [http://wiki.wesnoth.org/CampaignDialogue:HttT#Labels map labels]&lt;br /&gt;
&lt;br /&gt;
=== A Tale of Two Brothers ===&lt;br /&gt;
&lt;br /&gt;
This campaign has a tracking map.  In text, the village of Maghre is described as being in the &amp;quot;western reaches of Wesnoth&amp;quot; (''Rooting Out a Mage''). In ''The Chase'', the haunted forest is identified as the Gray Woods.&lt;br /&gt;
&lt;br /&gt;
=== An Orcish Incursion ===&lt;br /&gt;
&lt;br /&gt;
This campaign has a map and a journey track.  No places are named other than '''Wesmere'''; the action takes place north and west of there.  A pass that is bottleneck route through the northern mountains figures in the action.&lt;br /&gt;
&lt;br /&gt;
=== The South Guard ===&lt;br /&gt;
&lt;br /&gt;
This campaign takes place off the main map and has its own background map.&lt;br /&gt;
&lt;br /&gt;
We know from it that the city of Westin is located southwest of '''Fort Tahn''' (track, ''Born To The Banner'') and is capital of the frontier province of Kerlath (text), also that the Aethenwood is to the west (text).&lt;br /&gt;
&lt;br /&gt;
There is no map track after the second scenario.  We learn that south of Westin , Kerlath is bounded by dense woods, &amp;quot;a bastion of the ancient heart forest of the Great Continent so dense and gloomy that even elves forbore from dwelling there.&amp;quot;&lt;br /&gt;
(''Born to the Banner'') South of it an unspecified distance lies the elven Vale of Tears, and much further south of that the Black River, of which Etheliel says &amp;quot;No elf, still living, has crossed it.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The campaign maps feature [http://wiki.wesnoth.org/CampaignDialogue:TSG#Labels map labels]&lt;br /&gt;
&lt;br /&gt;
=== Liberty ===&lt;br /&gt;
&lt;br /&gt;
This campaign uses a modified version of the main Wesnoth map for tracking.  The map shows the villages of Dallben and Delwyn, and some small patches of forest, between the forest of Wesmere and the ocean; also it labels the '''Gray Woods'''.  Text (''The Raid'') identifies this as the province of Annuvin, a frontier area of Wesnoth.  It is clear that '''Elensefar''' is the chief city of Annuvin.&lt;br /&gt;
&lt;br /&gt;
Baldras and his party travel south to '''Elensefar''' (track, ''A Strategy of Hope''). From there they go upriver to '''Carcyn''' (track, ''Hide And Seek''), and south to the '''Gray Woods''' (track, ''The Gray Woods''), then south on the road to ''Aldril''.  The campaign finishes at '''Halstead'''.  In the Epilogue, there is a reference to villagers fleeing southwest to settle on the '''Three Sisters'''.&lt;br /&gt;
&lt;br /&gt;
The scenario maps feature [http://wiki.wesnoth.org/CampaignDialogue:L#Labels map labels]&lt;br /&gt;
&lt;br /&gt;
=== The Rise of Wesnoth ===&lt;br /&gt;
&lt;br /&gt;
This campaign has its own tracking map for the Green Isle, which is our only actual source of information about the Green Isle's geography.  The only Great Continent location of interest is the Ka'lian, which has the same location in the '''Forest of Wesmere''' that it does in other campaigns.&lt;br /&gt;
&lt;br /&gt;
The lady Jessene uses the term &amp;quot;Old Continent&amp;quot; to describe the ancestral home of her people, and implies that it lies in &amp;quot;the far West&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== The Legend of Wesmere ===&lt;br /&gt;
This campaign uses a [http://wiki.wesnoth.org/Geography_of_Wesnoth#LOW_Custom_Map modified version of the main Wesnoth map] for tracking. The map shows far fewer settlements with the notable addition of a castle settlement in the '''Swamp of Dread''', called '''Saurgrath''' (the location of ''The Saurian Treasury'').&lt;br /&gt;
&lt;br /&gt;
The map track for ''Hostile Mountains'' shows Kalenz starting from the '''Lintanir Forest''' and moving across the easternmost '''Heart Mountains''' to a spot on the Arkan-thoria. They travel to '''Wesmere Forest''' (''The Ka'lian Under Attack''); the map tracking runs almost lengthwise through the '''Heart Mountains'''.  The Ka'lian is near the northeast edge of '''Wesmere forest'''; the Elvish treasury is further west (track, ''The Elvish Treasury''). The Saurian treasury in the westernmost foothills of the '''Heart Mountains''' (track, ''The Saurian Treasury''); Kalenz and his men avoid the direct route from it back to Wesmere by going north from it and that they return via the eastern approaches to Wesmere.  On the way, they re-encounter Olurf in the southeastern reaches of the '''Heart Mountains''' (''Acquaintance In Need''). They march back to the north edge of '''Wesmere Forest''' (track, ''Elves' Last Stand'').&lt;br /&gt;
&lt;br /&gt;
In ''Council of Hard Choices'' we learn that the mage Crelanu lives in &amp;quot;the mountains of Thoria&amp;quot;.  The route north goes over the mountains to the &amp;quot;Arkan-thoria&amp;quot; (track: ''Bounty Hunters''), the name is confirmed in text.  The mountains of Thoria themselves are just north of the valley of the '''Arkan-thoria''' (track, ''Cliffs of Thoria''). Crelanu's keep is well into the northern '''Heart Mountains''', right at the northern edge of the map (track, ''Battle of the Book'').&lt;br /&gt;
&lt;br /&gt;
Kalenz and friends &amp;quot;return to the Ka'lian&amp;quot; (''News From The Front''); then to orcish forces are &amp;quot;encamped south of the '''Great River''', and have surrounded the fortified human settlement of Tath&amp;quot;.  The track for ''Breaking the Siege'' indicates that the killing of the Great Chief took place at the southeastern tip of the '''Heart Mountains''' and that ''Breaking the Siege'' takes place on the '''River Listra''', just north of the confluence with the '''Arkan-thoria'''.&lt;br /&gt;
&lt;br /&gt;
The remaining scenarios convey no new information; the track points are all east of the '''River Listra''' between it and the '''Lintanir Forest'''.&lt;br /&gt;
&lt;br /&gt;
Kalenz's home map has big water to the east.  This has to be a lake off the NE corner of the main map, emptying into the main course of the Listra.&lt;br /&gt;
&lt;br /&gt;
The campaign maps feature [http://wiki.wesnoth.org/CampaignDialogue:LOW#Labels map labels]&lt;br /&gt;
====LOW Custom Map====&lt;br /&gt;
http://svn.gna.org/viewcvs/*checkout*/wesnoth/trunk/data/campaigns/Legend_of_Wesmere/images/legend-of-wesmere-map.png&lt;br /&gt;
&lt;br /&gt;
=== Eastern Invasion ===&lt;br /&gt;
&lt;br /&gt;
This campaign has its own map, with the River Guard outposts shown, and a tracking map.  The intro describes the location of the River Guard posts on &amp;quot;the near bank of the Weldyn&amp;quot;, alludes to trouble in the Estmarks, and refers to &amp;quot;raiders from the great desert&amp;quot;, location unspecified.&lt;br /&gt;
&lt;br /&gt;
One path from ''An Unexpected Appearance'' leads west, the other east (text).  But the western path forces Gweddry and his men to travel north, into &amp;quot;known forest country just south of the Great River&amp;quot; (text).  On the other branch, Mal-Ravanal's capitol is in the '''Bitter Swamp''' (''Mal-Ravanal's Capitol''); the party flees &amp;quot;west and north&amp;quot; until they find a &amp;quot;low pass in the Estmarks, and [are] greatly relieved to see the valley of the Weldyn open before them.&amp;quot; (text). In ''Undead Crossing'', Gweddry's party crosses the '''Great River''' to the north (text). One of the following scenarios is named '''Lake Vrug'''. In ''Drowned Plains'' the party goes south to the '''Great River''', crosses it, and Owaec announces that they have entered the Horse Plains. '''Weldyn''' is on the map of the final scenario.&lt;br /&gt;
&lt;br /&gt;
The Orc kings stronghold map has [http://wiki.wesnoth.org/CampaignDialogue:EI#King_Dra-Nak.27s_City_.28labels.29 map labels]&lt;br /&gt;
&lt;br /&gt;
=== The Hammer of Thursagan ===&lt;br /&gt;
&lt;br /&gt;
This campaign has a tracking map. It begins at Knalga, and the heroes travel generally eastwards.  There are no other specific geographical references in it, except to &amp;quot;the High Pass&amp;quot; about halfway between Knalga and Kal Kartha.&lt;br /&gt;
&lt;br /&gt;
=== Descent Into Darkness ===&lt;br /&gt;
&lt;br /&gt;
This campaign has a journey track, and a map on which the the &amp;quot;northern border town of Parthyn&amp;quot; (''Saving Parthyn'') appears. An eartly fight (''Orc War'') takes place near the river Longlier (the '''Arkan-thoria'''). This is denoted by a [http://wiki.wesnoth.org/CampaignDialogue:DID#Places_.28labels.29 map label]. Later in the campaign (''Return To Parthyn'') it is specified that Malin follows a trail south across the '''Great River''' and west to Parthyn. Part of the action (''A Small Favor'' and three sequels) takes place in the city of '''Tath'''.&lt;br /&gt;
&lt;br /&gt;
=== Scepter of Fire ===&lt;br /&gt;
&lt;br /&gt;
This campaign has a tracking map.&lt;br /&gt;
The campaign begins in &amp;quot;the foothills of Knalga&amp;quot; (text, ''A Bargain Is Struck'') when Haldric II rides north from there from the '''Ford of Abez'''.  Rugnur looks for Thursagan in &amp;quot;the northern wastelands&amp;quot;, which is near the coast north-northeast of Rumyr (''Searching for the Runecrafter'').  Much of the rest of the campaign takes place in the old eastern mines just north of the Arkan-thoria; this is where the Scepter will be found in ''Heir To The Throne''. Alanin's running battle with the outriders takes place just north of the '''Ford of Abez''' (track, ''Outriding the Outriders'').&lt;br /&gt;
&lt;br /&gt;
(Note: earlier versions of SoF were set in a completely different location in the far western foothills of the Heart Mountains.  This was an error by some hapless chronicler.)&lt;br /&gt;
&lt;br /&gt;
=== Son Of The Black Eye ===&lt;br /&gt;
&lt;br /&gt;
This campaign takes place off the northern edge of the main map and has its own tracking map (see &amp;quot;The Far North&amp;quot;) above.  There is no reference to anywhere on the main map other than Dwarven Doors, and that does not indicate either distance or direction.&lt;br /&gt;
&lt;br /&gt;
=== Dead Water ===&lt;br /&gt;
&lt;br /&gt;
This campaign has a tracking map.  It takes place on and near the coast of the Far North; the port city of Tirigaz, mentioned in '''Son of the Black-Eye''', is a locale of one scenario.  We learn that one of the small islands off the coast is called Bilheld and is inhabited by drakes.&lt;br /&gt;
&lt;br /&gt;
=== Delfador's Memoirs ===&lt;br /&gt;
&lt;br /&gt;
This campaign has a tracking map.  Its scenario locations are in general well known from other campaigns. The campaing maps feature some [http://wiki.wesnoth.org/CampaignDialogue:DM#Places_.28labels.29 map labels]&lt;br /&gt;
&lt;br /&gt;
=== Northern Rebirth ===&lt;br /&gt;
&lt;br /&gt;
This campaign has a tracking map.  It begins in Dwarven Doors.  No distances or directions to places elsewhere in canon are indicated.&lt;br /&gt;
&lt;br /&gt;
=== Under The Burning Suns ===&lt;br /&gt;
&lt;br /&gt;
This campaign has no tracking map. It takes place long after the fall of Wesnoth and none of its locations can be clearly tied to anywhere in the main map.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[WesnothHistory]]&lt;br /&gt;
&lt;br /&gt;
[[Category:World of Wesnoth]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GettextParaTradutores&amp;diff=49206</id>
		<title>GettextParaTradutores</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GettextParaTradutores&amp;diff=49206"/>
		<updated>2013-03-21T17:27:25Z</updated>

		<summary type="html">&lt;p&gt;Esr: Remove SVN-specific terminology, hoping Google Translate got it right.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Este arquivo está em processo de tradução para o português brasileiro. Edite à vontade.&lt;br /&gt;
&lt;br /&gt;
== Os text-domains ==&lt;br /&gt;
A tradução de Battle for Wesnoth é dividida em alguns domínios-texto (''text-domain''), que na estrutura de diretórios forma uma pasta, onde os arquivos com as traduções para os mais diversos idiomas (cujo nome do arquivo é a abreviatura da língua) estão:&lt;br /&gt;
* wesnoth&lt;br /&gt;
* wesnoth-editor&lt;br /&gt;
* wesnoth-lib (contém expressões (strings) compartilhados pelo jogo e pelo editor)&lt;br /&gt;
* além de mais um domínio-texto para cada campanha do jogo. Os nomes desses domínios-texto são constituídos pela palavra &amp;quot;wesnoth&amp;quot; mais a abreviação comum da campanha em inglês (wesnoth-ei, wesnoth-httt, wesnoth-trow, wesnoth-tb, wesnoth-tsg, wesnoth-utbs, etc.)&lt;br /&gt;
&lt;br /&gt;
== Pegando os fontes ==&lt;br /&gt;
O código-fonte do jogo está disponível para download na página inicial, ou diretamente: [[Download]]. Baixe a versão mais atual (estável ou desenvolvimento) para o seu sistema operacional.&lt;br /&gt;
&lt;br /&gt;
Os arquivos de tradução estão dentro da pasto cujo nome é &amp;quot;po&amp;quot;. Dentro dessa pasta, estão os diretórios que foram citados na seção acima (wesnoth, wesnoth-editor, wesnoth-lib, wesnoth-httt, wesnoth-low...). E dentro de cada uma dessas pastas estão os arquivos po, um para cada uma das línguas suportadas no jogo.&lt;br /&gt;
&lt;br /&gt;
É importante notar que essa estrutura de diretórios (na pasta &amp;quot;po&amp;quot;) que está nos fontes (uma pasta para cada text-domain, e dentro os arquivos po, cujo nome é a abreviatura do idioma) não é a mesma da estrutura de traduções (na pasta &amp;quot;translations&amp;quot;) do jogo instalado (onde há uma pasta para cada idioma, e dentro os arquivos po, cujo nome é o text-domain).&lt;br /&gt;
&lt;br /&gt;
== Os arquivos do repositório ==&lt;br /&gt;
Usaremos a tradução Sueca (sv) e o domínio ''wesnoth'' como exemplo nessa página.&lt;br /&gt;
Existem três importantes arquivos para cada domínio-texto:&lt;br /&gt;
* arquivo ''wesnoth/wesnoth.pot'', que contém todas as strings usadas pelo jogo principal (não contém as strings do editor nem as strings das campanhas). Você pode ver como se parece um arquivo ''.pot'' no SVN: [http://svn.gna.org/viewcvs/wesnoth/trunk/po/wesnoth/wesnoth.pot?view=markup Current SVN version].&lt;br /&gt;
* ''wesnoth/sv.po'', o arquivo contendo a tradução, Você pode ver como se parece um arquivo ''.po'' no SVN: [http://svn.gna.org/viewcvs/wesnoth/trunk/po/wesnoth/sv.po?view=markup Current SVN version].&lt;br /&gt;
* ''{translations_dir}/sv/LC_MESSAGES/wesnoth.gmo'', que é a versão binária do &amp;lt;lang&amp;gt;.po que o jogo irá usar por razões de eficácia. Esse arquivo não é encontrado no cvs, mas é criado durante a compilação do jogo.&lt;br /&gt;
&lt;br /&gt;
Entretanto, os tradutores não precisam se preocupar diretamente com isso.&lt;br /&gt;
&lt;br /&gt;
=== Atualização de arquivos no repositório ===&lt;br /&gt;
&lt;br /&gt;
O primeiro desses arquivos podemos atualizar de vez em quando, quando há um texto novo ou modificado. Como, por exemplo, quando um cenário de nova campanha atinge o repositório.&lt;br /&gt;
&lt;br /&gt;
Então, ''msgmerge'' é usado para fundir esse novo &amp;quot;estado das strings do jogo&amp;quot; com suas traduções correspondetes, e gerando um novo, e ataulizado, ''sv.po''.&lt;br /&gt;
&lt;br /&gt;
Após, uma ferramenta chamada ''msgfmt'' é rodada, que gera um novo arquivo ''wesnoth.gmo'' a partir do arquivo ''wesnoth.po'', que será usado após o jogo ser instalado.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;make -C po update-po&amp;quot; executa esses três passos de uma vez só. &lt;br /&gt;
&lt;br /&gt;
Entretanto, como já mencionado, tais comandos são para os &amp;quot;cabeças&amp;quot;, se assim podemos chamar os administradores da tradução. Os tradutores, na realidade, apenas precisam se preocupar com os arquivos PO: traduzir novas expressões e checar as &amp;quot;fuzzy&amp;quot;. Assim, as tarefas administrativas ficam com os administradores. Você realmente não precisa se preocupar com nenhum desses comandos, a não ser que você queira compilar os arquivos gmo para checá-los no jogo.&lt;br /&gt;
&lt;br /&gt;
== Enviando as traduções ==&lt;br /&gt;
Ivanovic é o responsável, atualmente, pela integração entre as traduções de Wesnoth, com a ajuda de Torangan e Ott. Você pode contatar Ivanovic (crazy-ivanovic AT gmx DOT net), e ele colocará suas traduções no jogo. Entretanto, para facilitar o contato entre eles e os tradutores, cada um dos idiomas possui seu ''maintainer'', que intermedia essa relação. Atualmente (fevereiro de 2012), o ''maintainer'' da tradução para o Português do Brasil é o Diego Goergen &amp;lt;i&amp;gt;(e-mail: diego.goergen@yahoo.com.br)&amp;lt;/i&amp;gt;. Assim, sempre que você terminar um arquivo PO (ou achar que ele está aceitável para o jogo), envie para ele, anexando em um e-mail, que ele enviará para o Ivanovic, e o arquivo entrará no jogo.&lt;br /&gt;
&lt;br /&gt;
Quando mandar seus arquivos PO para o ''maintainer'' para serem incluídas no SVN, anexe-as ao e-mail, ao invés de copiar e colar as expressões no texto. As expressões são muito sensíveis à formatação, e o arquivo irá auxiliar a diferenciar qual arquivo é qual, quando forem mandados vários arquivos.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
* O que é uma &amp;quot;fuzzy string&amp;quot;?&lt;br /&gt;
** É uma expressão (string) que foi marcada para revisão de tradução. Por exemplo, se foi feita uma pequena alteração e foi rodado o comando ''msgmerge'', ele irá marcar a tradução como &amp;quot;fuzzy&amp;quot;. Quando o modelo de tradução foi mudado para gettext, todas as transações foram marcadas como &amp;quot;fuzzy&amp;quot;. Além disso, a maioria dos editores (como o poEdit) tem como opção o próprio editor colocar a string como &amp;quot;fuzzy&amp;quot;, caso ele não tenha certeza de alguma tradução.&lt;br /&gt;
&lt;br /&gt;
* O que são as &amp;quot;Plural-forms&amp;quot;?&lt;br /&gt;
** Alguns idiomas (como o português) tem diferentes formas de palavra para diferentes números de coisas (por exemplo, em português nós temos &amp;quot;1 coisa&amp;quot;, mas &amp;quot;2 coisa'''s'''&amp;quot;). As regras são diferentes para diferentes idiomas. Você pode achá-las [http://translate.sourceforge.net/wiki/l10n/pluralforms aqui].&lt;br /&gt;
&lt;br /&gt;
* O que eu faço para inserir uma nova linha numa expressão?&lt;br /&gt;
** Se você quer inserir uma nova linha numa string, você precisa incluir duas aspas (&amp;quot;&amp;quot;). Você pode usar normalmente novas linhas, sem afetar a tradução.&lt;br /&gt;
&lt;br /&gt;
* Como eu uso ', uma vez que um apóstrofo delimita o início e fim de uma string no texto?&lt;br /&gt;
** Adicione uma contrabarra antes dele (fica assim: \').&lt;br /&gt;
&lt;br /&gt;
* O que eu faço com strings como &amp;quot;Prefs section^General&amp;quot;?&lt;br /&gt;
** Existem algumas expressões ambíguas que talvez precisem ser traduzidas de formas diferentes, dependendo do local onde é utilizada. Por exemplo, nós temos o &amp;quot;General&amp;quot; (&amp;quot;Geral&amp;quot;) nas preferências, como em &amp;quot;General preferences&amp;quot; (&amp;quot;Preferências Gerais&amp;quot;), e nós também temos &amp;quot;a General&amp;quot; (&amp;quot;um General&amp;quot;, uma unidade). Essas expressões podem ter diferentes traduções para cada linguagem, então nós usamos o xontexto para resolver isso. O prefixo apenas tenta mostrar onde que a expressõa será usada, e não deve ser traduzido, por exemplo:&lt;br /&gt;
   msgid &amp;quot;Prefs section^General&amp;quot;&lt;br /&gt;
   msgstr &amp;quot;Gerais&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Com quem eu falo para maiores informações?&lt;br /&gt;
** Pode falar com Ivanovic, Torangan, ott, Yann ou Isaac no IRC (irc.freenode.net, #wesnoth or #wesnoth-dev). Se não gosta do IRC, mande um e-mail para crazy-ivanovic AT gmx DOT net, ou mande uma mensagem privada para ele (ivanovic) no fórum. Além disso, há um fórum para &amp;quot;Translations &amp;amp; Internationalization&amp;quot;, onde há um tópico para a tradução para o português.&lt;br /&gt;
&lt;br /&gt;
* Como eu rapidamente testo as mudanças no arquivo PO?&lt;br /&gt;
** Quando você modificar um arquivo PO, rode &amp;quot;make update-gmo&amp;quot; no diretório po para criar um novo arquivo MO, então rode o &amp;quot;make install&amp;quot; lá para instalar os novos arquivos MO. Caso esteja usando o poEdit, ele já cria o arquivo MO assim que você salva o arquivo PO.&lt;br /&gt;
** Após, force a reconstrução do cache. This is tricky -- if you only update MO files, the game may use a cached (i.e., old) version letting you wonder why it still displays the old translation. Either change game.cfg modification time, e.g. with &amp;quot;touch /usr/local/share/wesnoth/game.cfg&amp;quot;, or delete the corresponding cache[s] in ~/.wesnoth/cache.&lt;br /&gt;
** É possível, também, substituir o arquivo MO que está na pasta do jogo instalado pelo novo arquivo MO.&lt;br /&gt;
&lt;br /&gt;
== Editores ==&lt;br /&gt;
Existem várias ferramentas para se trabalhar com arquivos .po:&lt;br /&gt;
* [http://userbase.kde.org/Lokalize Lokalize] (Unix KDE, substituto do KBabel)&lt;br /&gt;
* [http://i18n.kde.org/tools/kbabel/ KBabel] (Unix KDE)&lt;br /&gt;
* [http://gtranslator.sourceforge.net/ GTranslator] (Unix Gnome)&lt;br /&gt;
* [http://translate.sourceforge.net/wiki/virtaal/index Virtaal] (Multiplataforma)&lt;br /&gt;
* [http://www.poedit.net/ poEdit] (Multiplataforma)&lt;br /&gt;
* [http://www.gnu.org/software/emacs/emacs.html Emacs with po-mode] (Multiplataforma)&lt;br /&gt;
* [http://www.vim.org/ Vim] with [http://www.vim.org/scripts/script.php?script_id=695 PO plug-in] (Multiplataforma)&lt;br /&gt;
&lt;br /&gt;
Obviamente, você pode editar os arquivos .po com qualquer editor de texto UTF-8. Entretanto, as ferramentas listadas acima possuem grandes vantagens sobre qualquer editor quando se trata de tradução por arquivos .po como, por exemplo, ir à próxima string fuzzy/não-traduzida ou pesquisa em campos específicos (msgid, msgstr, comment)...&lt;br /&gt;
&lt;br /&gt;
== Veja também ==&lt;br /&gt;
&lt;br /&gt;
* [[WesnothTranslations]]&lt;br /&gt;
* [[WesnothTranslationsHowTo]]&lt;br /&gt;
* [[GettextForWesnothDevelopers]]&lt;br /&gt;
* [http://gettext.wesnoth.org/ Estatísticas de tradução]&lt;br /&gt;
* [[PortugueseTranslation|Página de tradução PT_BR]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Translations]]&lt;br /&gt;
[[Category:Portuguese]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=FrenchTranslation&amp;diff=49205</id>
		<title>FrenchTranslation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=FrenchTranslation&amp;diff=49205"/>
		<updated>2013-03-21T17:09:18Z</updated>

		<summary type="html">&lt;p&gt;Esr: Oops.  Delete the old stuff.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Battle for Wesnoth - Traduction française&lt;br /&gt;
== Le mot d'introduction ==&lt;br /&gt;
&lt;br /&gt;
Cette page sert à mieux coordonner l'effort de tous et à donner les informations souvent demandées avant de se lancer dans la traduction française.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comment participer? == &lt;br /&gt;
Comme pour de nombreux autres projets open source, l'internationalisation de Battle for Wesnoth est basée sur l'utilisation de fichiers .po (pour en savoir plus sur ce système : http://fr.wikipedia.org/wiki/Gettext).&lt;br /&gt;
Le principe est de mettre à jour les fichiers .po, fichiers servant à gérer les traductions dans Wesnoth. Les échanges se font via la mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Première étape : S'inscrire à la mailing list ===&lt;br /&gt;
La mailing list francophone de Wesnoth est l'outil privilégié pour &lt;br /&gt;
# d'abord avertir les traducteurs que vous allez commencer une traduction (et éviter de travailler sur le même fichier),&lt;br /&gt;
# envoyer ses traductions pour validation ou relecture,&lt;br /&gt;
# poser des questions.&lt;br /&gt;
&lt;br /&gt;
Pour s'inscrire à la mailing list, envoyez un mail vide à wesnoth-request (at) ml.free.fr avec comme sujet « subscribe » (il sera traité par un robot) ; ou cliquez directement ici mailto:wesnoth-request@ml.free.fr?subject=subscribe et envoyez... Pour se désinscrire, envoyez aussi un mail à wesnoth-request@ml.free.fr, mais avec pour sujet unsubscribe.&lt;br /&gt;
&lt;br /&gt;
Une fois que vous aurez envoyé le message d'inscription, il vous faudra la confirmer en cliquant sur un lien fourni dans un mail envoyé par le robot de souscription. Une fois ceci fait, vous pourrez utiliser la liste de diffusion dont l'adresse est ''wesnoth (at) ml.free.fr''&lt;br /&gt;
&lt;br /&gt;
Les responsables des différentes mailing list sont ici : [[WesnothTranslations]].&lt;br /&gt;
&lt;br /&gt;
Les archives de la mailing list sont ici : http://news.gmane.org/gmane.games.wesnoth-fr ; vous pouvez vous abonner au serveur de news news.gmane.org (gmane.games.wesnoth-fr).&lt;br /&gt;
&lt;br /&gt;
Il est également possible de discuter sur le canal IRC #wesnothfr (sur irc.freenode.net) ou sur le forum, mais l'équipe de traduction française ne s'y promène que rarement.&lt;br /&gt;
&lt;br /&gt;
=== Deuxième étape : S'équiper pour modifier les fichiers .po ===&lt;br /&gt;
Plusieurs logiciels permettent de modifier ces fichiers :&lt;br /&gt;
# des éditeurs spécifiques aux fichiers .po&lt;br /&gt;
#* [http://www.poedit.net/ poEdit], Multiplateforme ;&lt;br /&gt;
#* [http://gtranslator.sourceforge.net/ gtranslator], Multiplateforme ;&lt;br /&gt;
#* [http://translate.sourceforge.net/wiki/virtaal/ Virtaal], Multiplateforme ;&lt;br /&gt;
#* [http://userbase.kde.org/Lokalize Lokalize] ainsi que KBabel qui n'est plus maintenu au profit de Lokalize.&lt;br /&gt;
# ou les éditeurs de texte (moins pratique)&lt;br /&gt;
#* [http://notepad-plus.sourceforge.net/fr/site.htm notepad++] ;&lt;br /&gt;
#* [http://www.textpad.com/ textpad] ;&lt;br /&gt;
#* ou, pour Mac, [http://www.barebones.com/products/textwrangler/index.shtml Textwrangler] ;&lt;br /&gt;
#* et puis bien d'autres encore...&lt;br /&gt;
&lt;br /&gt;
Quelque soit le logiciel choisi, il est nécessaire de réaliser un petit paramétrage, pas très compliqué, mais qu'il vaut mieux faire correctement tout de même...&lt;br /&gt;
&lt;br /&gt;
Les logiciels spécifiques (poEdit, gtranslator, ...) requièrent un petit paramétrage lors de la première utilisation. Tout ou partie des informations suivantes pourraient vous être demandées (parfois sous des dénominations différentes). Vous devez les renseigner tel quel : &amp;lt;br /&amp;gt;&lt;br /&gt;
''Language-Team: French &amp;lt;wesnoth@ml.free.fr&amp;gt; ''&amp;lt;br /&amp;gt;&lt;br /&gt;
''Language: fr ''&amp;lt;br /&amp;gt;&lt;br /&gt;
''MIME-Version: 1.0 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
''Content-Type: text/plain; charset=UTF-8 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
''Content-Transfer-Encoding: 8bit ''&amp;lt;br /&amp;gt;&lt;br /&gt;
''Plural-Forms: nplurals=2; plural=(n &amp;gt; 1); ''&lt;br /&gt;
&lt;br /&gt;
(Notez la présence d'un point virgule à la fin du dernier champ.)&lt;br /&gt;
&lt;br /&gt;
Pour les simples éditeurs de texte, cette configuration à la première utilisation n'est pas nécessaire mais une configuration similaire est nécessaire lors de la traduction d'un nouveau fichier (qui n'a encore jamais été traduit). Il faut alors renseigner l'entête du fichier .po, le plus simple étant alors de se baser sur l'entête d'un fichier po existant.&lt;br /&gt;
&lt;br /&gt;
=== Troisième étape : Jeter votre dévolu sur un fichier à actualiser, et récupérer les fichiers .po nécessaires ===&lt;br /&gt;
Idéalement, le processus est le suivant : Traduction-Révision-Relecture. Pour les traductions ou révisions, il est est nécessaire de posséder un bon niveau dans les deux langues, mais les relectures ne concernent en principe que des fautes de frappe ou des fautes d'orthographe. A vous de juger de votre niveau d'expérience pour vous atteler à une tâche qui vous convient.&lt;br /&gt;
&lt;br /&gt;
Les fichiers à traduire sont dans les &amp;quot;PO&amp;quot; sous-répertoires des répertoires de code source pour Wesnoth et Wescamp. Trouvez les liens à [[WesnothRepository]].&lt;br /&gt;
&lt;br /&gt;
Pour les fichiers à réviser ou à relire, il est préférable de s'adresser à la Mailing List pour être certain de récupérer la dernière version disponible.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :''' Wesnoth suit un [[FrenchTranslation/CycleDeDeveloppementDeWesnoth|cycle de développement]]. Déterminer la période de développement actuelle vous permettra de savoir s'il est préférable d'actualiser la version stable ou la version de développement du fichier que vous choisirez. N'hésitez pas à demander quelle version il vaut mieux actualiser sur la mailing-list. (Une quelconque question sur la mailing-list n'engage à aucune contribution !)&lt;br /&gt;
&lt;br /&gt;
==== Traduire les images ====&lt;br /&gt;
Certaines images comme le logo de Wesnoth, les cartes et les captures d'écrans peuvent être « traduites ». Si vous êtes intéressés par de telles traductions, renseignez-vous sur les images à traduire sur la Mailing-List.&lt;br /&gt;
&lt;br /&gt;
Quelques informations sur ce type de traduction sont disponibles ici : [[ImageLocalization]]&lt;br /&gt;
&lt;br /&gt;
Le fichier [http://svn.gna.org/viewcvs/wesnoth/trunk/l10n-track?view=markup l10n-track] donne le statut des traductions ''existantes''. Lorsque le statut n'est pas « ok », l'image doit être mise à jour. Les fichiers xcf (GIMP) des précédentes mises à jour sont disponibles [http://svn.gna.org/viewcvs/wesnoth/branches/resources/image-localization/fr/ ici] et peuvent être utilisés pour de nouvelles mises à jour.&lt;br /&gt;
&lt;br /&gt;
=== Quatrième étape : Modifier les fichiers .po et vérifier le statut des lignes traduites ===&lt;br /&gt;
TRÈS IMPORTANT! : Avant de commencer à travailler, annoncez à la mailing list, ce que vous entreprenez.&lt;br /&gt;
Avant de commencer votre première traduction, veuillez lire attentivement cette page de [[Conseils|Règles &amp;amp; Conseils]].&lt;br /&gt;
&lt;br /&gt;
Ce qu'il faut savoir sur les fichiers .po, c'est que chaque champ de traduction possède un statut :&lt;br /&gt;
# si vous traduisez pour la première fois un champ, mettez-le en traduction approximative (&amp;quot;fuzzy&amp;quot; en anglais), et cela, même si c'est une traduction très basique ; toute traduction doit être relue au moins une fois avant d'être approuvée ;&lt;br /&gt;
# si vous relisez un champ, libre à vous de décider de son statut après votre relecture ; &lt;br /&gt;
#* sortez-le de son état approximatif si vous le considérez incontestablement bien traduit ;&lt;br /&gt;
#* laissez-le à l'état approximatif et demandez une deuxième relecture si vous n'êtes pas sûr de la traduction.&lt;br /&gt;
&lt;br /&gt;
=== Pour finir : Envoyer sa traduction ===&lt;br /&gt;
Une traduction terminée est compressée, puis envoyée à la ML.&lt;br /&gt;
&lt;br /&gt;
Il est préférable, en cas de relecture, de signaler les modifications dans le corps du mail, par exemple en faisant comme ci-dessous :&lt;br /&gt;
#Exemple 1 (refonte d'une phrase) : &amp;lt;br /&amp;gt;N° ligne&amp;lt;br /&amp;gt;Anciene version =&amp;gt; Nouvelle version.&lt;br /&gt;
#Exemple 2 (correction d'une faute, indiquée par des *) : &amp;lt;br /&amp;gt;N°Ligne&amp;lt;br /&amp;gt;Ancien*n*e version&lt;br /&gt;
&lt;br /&gt;
Il est également possible de générer un fichier différentiel entre l'ancienne et la nouvelle version ; mais l'expérience semble montrer que cela est peu relu.&lt;br /&gt;
Cette technique est surtout à utiliser qu'en cas de modifications massives (cas où le suivi ligne à ligne serait complexe et lourd).&lt;br /&gt;
&lt;br /&gt;
=== Attention ===&lt;br /&gt;
Voici quelques points qui nécessitent une attention particulière lors de la traduction (leur non-respect entrainant divers bugs) :&lt;br /&gt;
* Les variables sont indiquées par ''$'' ; il ne faut pas les traduire : par exemple, ''$gold_left'' se traduit par ''$gold_left'' et non pas par ''$or_restant''. &lt;br /&gt;
&lt;br /&gt;
* Il y a un bug récurent dans les fichiers po : lorsque la phrase traduite '''commence''' par ''$'', rien ne s'affiche dans le jeu. Pour corriger le problème, il suffit de mettre un simple espace devant le signe.&lt;br /&gt;
&lt;br /&gt;
* ''\n'' dans la chaîne originale permet de créer un saut de ligne. Il faut le traduire en mettant ''\n'' en français (c'est important : ''gettext'' bug s'il n'y a pas le même nombre de ''\n'' des deux côtés).&lt;br /&gt;
&lt;br /&gt;
* Les chaînes telles que &amp;quot;Prefs section^General&amp;quot; ne doivent pas être traduites de manière classique : le texte précédent le ^ (« Prefs section » dans l'exemple) permet de définir le contexte pour la traduction et ne doit pas être traduit. La traduction de l'exemple ci-dessus serait donc &amp;quot;Général&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Il n'est pas important de passer les commentaires de traductions d'une ligne à plusieurs lignes (ou inversement) : cela ne provoquera aucun bug.&lt;br /&gt;
&lt;br /&gt;
== Aujourd'hui, qui fait quoi ? ==&lt;br /&gt;
Pour avoir une idée des tâches en cours, vous pouvez remonter un peu [http://news.gmane.org/gmane.games.wesnoth-fr les archives de la liste de diffusion] si vous n'y êtes pas déjà abonnés.&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez vous lancez dans une traduction ou une relecture, pensez à avertir les autres traducteurs à travers la liste. Cela évitera le travail en double.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voir aussi ==&lt;br /&gt;
* [[Conseils|Règles &amp;amp; Conseils]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Translations]]&lt;br /&gt;
[[Category:French]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=FrenchTranslation&amp;diff=49204</id>
		<title>FrenchTranslation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=FrenchTranslation&amp;diff=49204"/>
		<updated>2013-03-21T17:08:30Z</updated>

		<summary type="html">&lt;p&gt;Esr: Removing SN-specific terminology, hoping Google Translate got this right.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Battle for Wesnoth - Traduction française&lt;br /&gt;
== Le mot d'introduction ==&lt;br /&gt;
&lt;br /&gt;
Cette page sert à mieux coordonner l'effort de tous et à donner les informations souvent demandées avant de se lancer dans la traduction française.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comment participer? == &lt;br /&gt;
Comme pour de nombreux autres projets open source, l'internationalisation de Battle for Wesnoth est basée sur l'utilisation de fichiers .po (pour en savoir plus sur ce système : http://fr.wikipedia.org/wiki/Gettext).&lt;br /&gt;
Le principe est de mettre à jour les fichiers .po, fichiers servant à gérer les traductions dans Wesnoth. Les échanges se font via la mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Première étape : S'inscrire à la mailing list ===&lt;br /&gt;
La mailing list francophone de Wesnoth est l'outil privilégié pour &lt;br /&gt;
# d'abord avertir les traducteurs que vous allez commencer une traduction (et éviter de travailler sur le même fichier),&lt;br /&gt;
# envoyer ses traductions pour validation ou relecture,&lt;br /&gt;
# poser des questions.&lt;br /&gt;
&lt;br /&gt;
Pour s'inscrire à la mailing list, envoyez un mail vide à wesnoth-request (at) ml.free.fr avec comme sujet « subscribe » (il sera traité par un robot) ; ou cliquez directement ici mailto:wesnoth-request@ml.free.fr?subject=subscribe et envoyez... Pour se désinscrire, envoyez aussi un mail à wesnoth-request@ml.free.fr, mais avec pour sujet unsubscribe.&lt;br /&gt;
&lt;br /&gt;
Une fois que vous aurez envoyé le message d'inscription, il vous faudra la confirmer en cliquant sur un lien fourni dans un mail envoyé par le robot de souscription. Une fois ceci fait, vous pourrez utiliser la liste de diffusion dont l'adresse est ''wesnoth (at) ml.free.fr''&lt;br /&gt;
&lt;br /&gt;
Les responsables des différentes mailing list sont ici : [[WesnothTranslations]].&lt;br /&gt;
&lt;br /&gt;
Les archives de la mailing list sont ici : http://news.gmane.org/gmane.games.wesnoth-fr ; vous pouvez vous abonner au serveur de news news.gmane.org (gmane.games.wesnoth-fr).&lt;br /&gt;
&lt;br /&gt;
Il est également possible de discuter sur le canal IRC #wesnothfr (sur irc.freenode.net) ou sur le forum, mais l'équipe de traduction française ne s'y promène que rarement.&lt;br /&gt;
&lt;br /&gt;
=== Deuxième étape : S'équiper pour modifier les fichiers .po ===&lt;br /&gt;
Plusieurs logiciels permettent de modifier ces fichiers :&lt;br /&gt;
# des éditeurs spécifiques aux fichiers .po&lt;br /&gt;
#* [http://www.poedit.net/ poEdit], Multiplateforme ;&lt;br /&gt;
#* [http://gtranslator.sourceforge.net/ gtranslator], Multiplateforme ;&lt;br /&gt;
#* [http://translate.sourceforge.net/wiki/virtaal/ Virtaal], Multiplateforme ;&lt;br /&gt;
#* [http://userbase.kde.org/Lokalize Lokalize] ainsi que KBabel qui n'est plus maintenu au profit de Lokalize.&lt;br /&gt;
# ou les éditeurs de texte (moins pratique)&lt;br /&gt;
#* [http://notepad-plus.sourceforge.net/fr/site.htm notepad++] ;&lt;br /&gt;
#* [http://www.textpad.com/ textpad] ;&lt;br /&gt;
#* ou, pour Mac, [http://www.barebones.com/products/textwrangler/index.shtml Textwrangler] ;&lt;br /&gt;
#* et puis bien d'autres encore...&lt;br /&gt;
&lt;br /&gt;
Quelque soit le logiciel choisi, il est nécessaire de réaliser un petit paramétrage, pas très compliqué, mais qu'il vaut mieux faire correctement tout de même...&lt;br /&gt;
&lt;br /&gt;
Les logiciels spécifiques (poEdit, gtranslator, ...) requièrent un petit paramétrage lors de la première utilisation. Tout ou partie des informations suivantes pourraient vous être demandées (parfois sous des dénominations différentes). Vous devez les renseigner tel quel : &amp;lt;br /&amp;gt;&lt;br /&gt;
''Language-Team: French &amp;lt;wesnoth@ml.free.fr&amp;gt; ''&amp;lt;br /&amp;gt;&lt;br /&gt;
''Language: fr ''&amp;lt;br /&amp;gt;&lt;br /&gt;
''MIME-Version: 1.0 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
''Content-Type: text/plain; charset=UTF-8 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
''Content-Transfer-Encoding: 8bit ''&amp;lt;br /&amp;gt;&lt;br /&gt;
''Plural-Forms: nplurals=2; plural=(n &amp;gt; 1); ''&lt;br /&gt;
&lt;br /&gt;
(Notez la présence d'un point virgule à la fin du dernier champ.)&lt;br /&gt;
&lt;br /&gt;
Pour les simples éditeurs de texte, cette configuration à la première utilisation n'est pas nécessaire mais une configuration similaire est nécessaire lors de la traduction d'un nouveau fichier (qui n'a encore jamais été traduit). Il faut alors renseigner l'entête du fichier .po, le plus simple étant alors de se baser sur l'entête d'un fichier po existant.&lt;br /&gt;
&lt;br /&gt;
=== Troisième étape : Jeter votre dévolu sur un fichier à actualiser, et récupérer les fichiers .po nécessaires ===&lt;br /&gt;
Idéalement, le processus est le suivant : Traduction-Révision-Relecture. Pour les traductions ou révisions, il est est nécessaire de posséder un bon niveau dans les deux langues, mais les relectures ne concernent en principe que des fautes de frappe ou des fautes d'orthographe. A vous de juger de votre niveau d'expérience pour vous atteler à une tâche qui vous convient.&lt;br /&gt;
&lt;br /&gt;
Les fichiers à traduire sont dans les &amp;quot;PO&amp;quot; sous-répertoires des répertoires de code source pour Wesnoth et Wescamp. Trouvez les liens à [[WesnothRepository]].&lt;br /&gt;
&lt;br /&gt;
Les fichiers à traduire sont accessibles :&lt;br /&gt;
# soit par cette page : http://gettext.wesnoth.org/ (le plus simple),&lt;br /&gt;
# soit par le SVN (plus compliqué) : http://svn.gna.org/viewcvs/wesnoth/ (mainline) et https://github.com/wescamp/repositories (user campaigns).&lt;br /&gt;
&lt;br /&gt;
Pour les fichiers à réviser ou à relire, il est préférable de s'adresser à la Mailing List pour être certain de récupérer la dernière version disponible.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :''' Wesnoth suit un [[FrenchTranslation/CycleDeDeveloppementDeWesnoth|cycle de développement]]. Déterminer la période de développement actuelle vous permettra de savoir s'il est préférable d'actualiser la version stable ou la version de développement du fichier que vous choisirez. N'hésitez pas à demander quelle version il vaut mieux actualiser sur la mailing-list. (Une quelconque question sur la mailing-list n'engage à aucune contribution !)&lt;br /&gt;
&lt;br /&gt;
==== Traduire les images ====&lt;br /&gt;
Certaines images comme le logo de Wesnoth, les cartes et les captures d'écrans peuvent être « traduites ». Si vous êtes intéressés par de telles traductions, renseignez-vous sur les images à traduire sur la Mailing-List.&lt;br /&gt;
&lt;br /&gt;
Quelques informations sur ce type de traduction sont disponibles ici : [[ImageLocalization]]&lt;br /&gt;
&lt;br /&gt;
Le fichier [http://svn.gna.org/viewcvs/wesnoth/trunk/l10n-track?view=markup l10n-track] donne le statut des traductions ''existantes''. Lorsque le statut n'est pas « ok », l'image doit être mise à jour. Les fichiers xcf (GIMP) des précédentes mises à jour sont disponibles [http://svn.gna.org/viewcvs/wesnoth/branches/resources/image-localization/fr/ ici] et peuvent être utilisés pour de nouvelles mises à jour.&lt;br /&gt;
&lt;br /&gt;
=== Quatrième étape : Modifier les fichiers .po et vérifier le statut des lignes traduites ===&lt;br /&gt;
TRÈS IMPORTANT! : Avant de commencer à travailler, annoncez à la mailing list, ce que vous entreprenez.&lt;br /&gt;
Avant de commencer votre première traduction, veuillez lire attentivement cette page de [[Conseils|Règles &amp;amp; Conseils]].&lt;br /&gt;
&lt;br /&gt;
Ce qu'il faut savoir sur les fichiers .po, c'est que chaque champ de traduction possède un statut :&lt;br /&gt;
# si vous traduisez pour la première fois un champ, mettez-le en traduction approximative (&amp;quot;fuzzy&amp;quot; en anglais), et cela, même si c'est une traduction très basique ; toute traduction doit être relue au moins une fois avant d'être approuvée ;&lt;br /&gt;
# si vous relisez un champ, libre à vous de décider de son statut après votre relecture ; &lt;br /&gt;
#* sortez-le de son état approximatif si vous le considérez incontestablement bien traduit ;&lt;br /&gt;
#* laissez-le à l'état approximatif et demandez une deuxième relecture si vous n'êtes pas sûr de la traduction.&lt;br /&gt;
&lt;br /&gt;
=== Pour finir : Envoyer sa traduction ===&lt;br /&gt;
Une traduction terminée est compressée, puis envoyée à la ML.&lt;br /&gt;
&lt;br /&gt;
Il est préférable, en cas de relecture, de signaler les modifications dans le corps du mail, par exemple en faisant comme ci-dessous :&lt;br /&gt;
#Exemple 1 (refonte d'une phrase) : &amp;lt;br /&amp;gt;N° ligne&amp;lt;br /&amp;gt;Anciene version =&amp;gt; Nouvelle version.&lt;br /&gt;
#Exemple 2 (correction d'une faute, indiquée par des *) : &amp;lt;br /&amp;gt;N°Ligne&amp;lt;br /&amp;gt;Ancien*n*e version&lt;br /&gt;
&lt;br /&gt;
Il est également possible de générer un fichier différentiel entre l'ancienne et la nouvelle version ; mais l'expérience semble montrer que cela est peu relu.&lt;br /&gt;
Cette technique est surtout à utiliser qu'en cas de modifications massives (cas où le suivi ligne à ligne serait complexe et lourd).&lt;br /&gt;
&lt;br /&gt;
=== Attention ===&lt;br /&gt;
Voici quelques points qui nécessitent une attention particulière lors de la traduction (leur non-respect entrainant divers bugs) :&lt;br /&gt;
* Les variables sont indiquées par ''$'' ; il ne faut pas les traduire : par exemple, ''$gold_left'' se traduit par ''$gold_left'' et non pas par ''$or_restant''. &lt;br /&gt;
&lt;br /&gt;
* Il y a un bug récurent dans les fichiers po : lorsque la phrase traduite '''commence''' par ''$'', rien ne s'affiche dans le jeu. Pour corriger le problème, il suffit de mettre un simple espace devant le signe.&lt;br /&gt;
&lt;br /&gt;
* ''\n'' dans la chaîne originale permet de créer un saut de ligne. Il faut le traduire en mettant ''\n'' en français (c'est important : ''gettext'' bug s'il n'y a pas le même nombre de ''\n'' des deux côtés).&lt;br /&gt;
&lt;br /&gt;
* Les chaînes telles que &amp;quot;Prefs section^General&amp;quot; ne doivent pas être traduites de manière classique : le texte précédent le ^ (« Prefs section » dans l'exemple) permet de définir le contexte pour la traduction et ne doit pas être traduit. La traduction de l'exemple ci-dessus serait donc &amp;quot;Général&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Il n'est pas important de passer les commentaires de traductions d'une ligne à plusieurs lignes (ou inversement) : cela ne provoquera aucun bug.&lt;br /&gt;
&lt;br /&gt;
== Aujourd'hui, qui fait quoi ? ==&lt;br /&gt;
Pour avoir une idée des tâches en cours, vous pouvez remonter un peu [http://news.gmane.org/gmane.games.wesnoth-fr les archives de la liste de diffusion] si vous n'y êtes pas déjà abonnés.&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez vous lancez dans une traduction ou une relecture, pensez à avertir les autres traducteurs à travers la liste. Cela évitera le travail en double.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voir aussi ==&lt;br /&gt;
* [[Conseils|Règles &amp;amp; Conseils]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Translations]]&lt;br /&gt;
[[Category:French]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WesnothRepository&amp;diff=49203</id>
		<title>WesnothRepository</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WesnothRepository&amp;diff=49203"/>
		<updated>2013-03-21T16:43:20Z</updated>

		<summary type="html">&lt;p&gt;Esr: Merge in most of the material fromm the SVN page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Compiling Wesnoth}}&lt;br /&gt;
&lt;br /&gt;
The Battle for Wesnoth code base is stored in a version control repository. Version control allows the entire dev team to edit files concurrently. The software tracks revisions, stores a record of all edits, revents simultaneous editing from causing clashes. All changes are stored in the subversion repository. &lt;br /&gt;
&lt;br /&gt;
When a release is planned, the current set of the files in the repository is frozen, given a release number, and shipped out to the world at large. Then, as files continue to be edited by the developers, the repository code advances past that point. The repository (or &amp;quot;repo&amp;quot;) version is by definition the most up-to-date version of the code.&lt;br /&gt;
&lt;br /&gt;
Wesnoth is in the process of moving to the git version-control system and changing hosting sites.  The repository is currently at http://gna.org and the version-control system is Subversion, but we expect to move to SourceForge soon.&lt;br /&gt;
&lt;br /&gt;
==  SVN ==&lt;br /&gt;
&lt;br /&gt;
Wesnoth development currently (but not for much longer) is using the open-source Subversion software tool to keep developers in sync with each other. See the [http://svnbook.org SVN book] for more on how to use Subversion. &lt;br /&gt;
&lt;br /&gt;
Subversion replaced an older program called &amp;quot;CVS&amp;quot; or &amp;quot;concurrent versioning system.&amp;quot; The very earliest versions of Wesnoth were developed under CVS, and it has left a few traces far back in the version history.&lt;br /&gt;
&lt;br /&gt;
==  Browse the code  ==&lt;br /&gt;
&lt;br /&gt;
There are currently two main streams of development: trunk (1.11.x) and stable branch (1.10.x). Most other branches are only used for a short time to do some testing without disturbing the main development. You can use your web browser to navigate through the source code:&lt;br /&gt;
&lt;br /&gt;
http://svn.gna.org/viewcvs/wesnoth/&lt;br /&gt;
&lt;br /&gt;
==  Download  ==&lt;br /&gt;
&lt;br /&gt;
To check out trunk into a directory called ''wesnoth'' (about 400 MB to download as of March 30th 2009, and about 1.3 GB disk space required, including .svn dirs, as of June 17th 2012):&lt;br /&gt;
 svn co http://svn.gna.org/svn/wesnoth/trunk wesnoth&lt;br /&gt;
&lt;br /&gt;
Or, to check out the 1.10 branch (about 400 MB to download and 960 MB to store on disk as of March 30th 2009; by extrapolation, probably around 1.3 GB too by June 17th 2012) into a directory called ''wesnoth-1.10'':&lt;br /&gt;
 svn co http://svn.gna.org/svn/wesnoth/branches/1.10 wesnoth-1.10&lt;br /&gt;
&lt;br /&gt;
More info on the repository: https://gna.org/svn/?group=wesnoth&lt;br /&gt;
&lt;br /&gt;
==  Commit access  ==&lt;br /&gt;
&lt;br /&gt;
For commit access, you must have a developer account on gna, it must be registered as part of the Wesnoth group, and you must check out with&lt;br /&gt;
 svn co svn+ssh://gna_username@svn.gna.org/svn/wesnoth/trunk wesnoth&lt;br /&gt;
&lt;br /&gt;
==  Update  ==&lt;br /&gt;
&lt;br /&gt;
Do this from inside the ''wesnoth'' or ''wesnoth-1.10'' directory where you checked out the repository:&lt;br /&gt;
 svn update&lt;br /&gt;
&lt;br /&gt;
== Reviewing your changes ==&lt;br /&gt;
&lt;br /&gt;
Before committing, it's always wise to run&lt;br /&gt;
 svn diff&lt;br /&gt;
&lt;br /&gt;
and look at the output. Some kinds of mistakes that are hard to see embedded in all the code you have modified are more easily spotted in the isolated diff lines.&lt;br /&gt;
&lt;br /&gt;
== Generating patches ==&lt;br /&gt;
&lt;br /&gt;
Under Subversion on a Unix-like operating system, do&lt;br /&gt;
  svn diff &amp;gt;my.patch&lt;br /&gt;
&lt;br /&gt;
or something similar.  If you are using git-svn a git diff is acceptable.  See [[PatchSubmissionGuidelines]] for more on how to get these merged into the public repository.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[CompilingWesnoth]]&lt;br /&gt;
* [[SVN_on_Windows]]&lt;br /&gt;
* [[GIT-SVN]] - for git users&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=LuaWML/Misc&amp;diff=49202</id>
		<title>LuaWML/Misc</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=LuaWML/Misc&amp;diff=49202"/>
		<updated>2013-03-21T16:24:40Z</updated>

		<summary type="html">&lt;p&gt;Esr: Remove SVN-specific stuff in example, it's not necessary.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes miscellaneous [[LuaWML]] objects and helpers.&lt;br /&gt;
&lt;br /&gt;
==== wesnoth.game_config ====&lt;br /&gt;
&lt;br /&gt;
Contrarily to the other values of the ''wesnoth'' table, ''game_config'' is simply a proxy table. Its fields offer an interface to the global settings of Wesnoth:&lt;br /&gt;
&lt;br /&gt;
* '''version''': string (read only)&lt;br /&gt;
* '''base_income''': integer (read/write)&lt;br /&gt;
* '''village_income''': integer (read/write)&lt;br /&gt;
* '''poison_amount''': integer (read/write)&lt;br /&gt;
* '''rest_heal_amount''': integer (read/write)&lt;br /&gt;
* '''recall_cost''': integer (read/write)&lt;br /&gt;
* '''kill_experience''': integer (read/write)&lt;br /&gt;
* '''last_turn''': integer (read/write) turn limit, maximum number of turns&lt;br /&gt;
* '''debug''': boolean (read only)&lt;br /&gt;
* '''mp_debug''': boolean (read only) {{DevFeature1.11}}&lt;br /&gt;
&lt;br /&gt;
 -- Poison a bit weak? Let's boost it!&lt;br /&gt;
 wesnoth.game_config.poison_amount = 15&lt;br /&gt;
&lt;br /&gt;
==== wesnoth.current ====&lt;br /&gt;
&lt;br /&gt;
As with ''game_config'', ''current'' is a proxy table. Its fields are getter for game-related properties:&lt;br /&gt;
&lt;br /&gt;
* '''side''': integer (read only)&lt;br /&gt;
* '''turn''': integer (read only)&lt;br /&gt;
* '''event_context''': WML table with attributes ''name'', ''x1'', ''y1'', ''x2'', ''y2'', and children ''weapon'', ''second_weapon'', describing the trigger for the current event.&lt;br /&gt;
&lt;br /&gt;
 wesnoth.message(string.format(&amp;quot;Turn %d, side %d is playing.&amp;quot;, wesnoth.current.turn, wesnoth.current.side))&lt;br /&gt;
&lt;br /&gt;
==== wesnoth.synchronize_choice ====&lt;br /&gt;
&lt;br /&gt;
Recovers a WML table that was computed on one client only or was stored in a replay. The actual computation is performed by the function passed as the first argument, assuming that the client is the side currently playing. For all the other clients, the function will not be called. An optional second function can be passed; if present, it will be used instead of the first one when the client happens to be an AI (hence not enable to interact with a user interface).&lt;br /&gt;
&lt;br /&gt;
 local result = wesnoth.synchronize_choice(&lt;br /&gt;
   function()&lt;br /&gt;
     -- Called only on the client handling the current side, if it is a human.&lt;br /&gt;
     local choice = 0&lt;br /&gt;
     wesnoth.show_dialog(&lt;br /&gt;
       some_dialog_cfg, nil,&lt;br /&gt;
       function()&lt;br /&gt;
         choice = wesnoth.get_dialog_value &amp;quot;some_list&amp;quot;&lt;br /&gt;
       end)&lt;br /&gt;
     return { value = choice }&lt;br /&gt;
   end,&lt;br /&gt;
   function()&lt;br /&gt;
     -- Called only on the client handling the current side, if it is an AI.&lt;br /&gt;
     return { value = math.random(some_list_size) }&lt;br /&gt;
   end)&lt;br /&gt;
 wesnoth.message(string.format(&amp;quot;Selected item: %d&amp;quot;, result.value))&lt;br /&gt;
&lt;br /&gt;
==== wesnoth.get_image_size ====&lt;br /&gt;
&lt;br /&gt;
Returns the width and height of an image.&lt;br /&gt;
&lt;br /&gt;
 local w, h = wesnoth.get_image_size &amp;quot;units/transport/galleon.png&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== wesnoth.compare_versions ====&lt;br /&gt;
&lt;br /&gt;
Takes two versions strings and an operator, returns whether the comparison yields true.&lt;br /&gt;
Follows the same rules like the #ifver preprocessor statement.&lt;br /&gt;
&lt;br /&gt;
 local function version_is_sufficient(required)&lt;br /&gt;
  if not wesnoth.compare_versions then return false end&lt;br /&gt;
  return wesnoth.compare_versions(wesnoth.game_config.version, &amp;quot;&amp;gt;=&amp;quot;, required)&lt;br /&gt;
 end&lt;br /&gt;
 local required = &amp;quot;1.9.6&amp;quot;&lt;br /&gt;
 if not version_is_sufficient(required) then wesnoth.message(string.format(&lt;br /&gt;
  &amp;quot;Your BfW version is insufficient, please get BfW %s or greater!&amp;quot;, required)) end&lt;br /&gt;
&lt;br /&gt;
==== wesnoth.have_file ====&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.11}}Checks if the file (not necessarily a Lua file) or the directory passed as argument exists. Returns true if the file exists, false otherwise. Follows the same rules like the #ifhave preprocessor statement.&lt;br /&gt;
&lt;br /&gt;
 -- Does the user have installed the UMC Music Book 1?&lt;br /&gt;
 local umc_music = wesnoth.have_file( &amp;quot;~add-ons/UMC_Music_Book_1/_main.cfg&amp;quot; )&lt;br /&gt;
 -- and if we want to check for the folder?&lt;br /&gt;
 local music_folder = wesnoth.have_file( &amp;quot;~add-ons/UMC_Music_Book_1/&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
==== wesnoth.debug ====&lt;br /&gt;
&lt;br /&gt;
Takes a userdata with metatable wml object or a wml table and dumps its content into a pretty string.&lt;br /&gt;
 wesnoth.set_variable(&amp;quot;number&amp;quot;, 100)&lt;br /&gt;
 local vconfig = wesnoth.tovconfig({ key = &amp;quot;$number&amp;quot;, another_key = true,&lt;br /&gt;
     {&amp;quot;a_subtag&amp;quot;, { a_key_in_the_subtag = &amp;quot;foo&amp;quot; }}&lt;br /&gt;
 })&lt;br /&gt;
 wesnoth.message(wesnoth.debug(vconfig))&lt;br /&gt;
 wesnoth.message(wesnoth.debug(vconfig.__literal))&lt;br /&gt;
&lt;br /&gt;
==== wesnoth.get_time_stamp ====&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.11}}This function retrieves the current time stamp, that is the amount of milliseconds passed from when the SDL library was initialized. It takes no arguments and returns an integer.&lt;br /&gt;
'''WARNING:''' this function uses the same code as [set_variable] time=stamp, and so it is MP-unsafe. It is provided only for benchmark purposes and AI development, although it should work inside wesnoth.synchronize_choice() as well.&lt;br /&gt;
 local stamp = wesnoth.get_time_stamp()&lt;br /&gt;
&lt;br /&gt;
==== helper.set_wml_tag_metatable ====&lt;br /&gt;
&lt;br /&gt;
Sets the metable of a table so that it can be used to create subtags with less brackets. Returns the table. The fields of the table are simple wrappers around table constructors.&lt;br /&gt;
&lt;br /&gt;
 T = helper.set_wml_tag_metatable {}&lt;br /&gt;
 W.event { name = &amp;quot;new turn&amp;quot;, T.message { speaker = &amp;quot;narrator&amp;quot;, message = &amp;quot;?&amp;quot; } }&lt;br /&gt;
&lt;br /&gt;
==== helper.modify_unit ====&lt;br /&gt;
&lt;br /&gt;
Modifies all the units satisfying the given filter (argument 1) with some WML attributes/objects (argument 2). This is a Lua implementation of the [http://www.wesnoth.org/macro-reference.xhtml MODIFY_UNIT] macro.&lt;br /&gt;
&lt;br /&gt;
 helper.modify_unit({ id=&amp;quot;Delfador&amp;quot; }, { moves=0 })&lt;br /&gt;
&lt;br /&gt;
==== helper.move_unit_fake ====&lt;br /&gt;
&lt;br /&gt;
Fakes the move of a unit satisfying the given filter (argument 1) to the given position (argument 2). This is a Lua implementation of the [http://www.wesnoth.org/macro-reference.xhtml MOVE_UNIT] macro.&lt;br /&gt;
&lt;br /&gt;
 helper.move_unit_fake({ id=&amp;quot;Delfador&amp;quot; }, 14, 8)&lt;br /&gt;
&lt;br /&gt;
==== helper.rand ====&lt;br /&gt;
&lt;br /&gt;
(A shortcut to set_variable's rand= since math.rand is an OOS magnet and therefore disabled.) Pass a string like you would to set_variable's rand=.&lt;br /&gt;
&lt;br /&gt;
create a random unit at (1, 1) on side=1 :&lt;br /&gt;
 wesnoth.put_unit(1, 1, { type = helper.rand(&amp;quot;Dwarvish Fighter,Dwarvish Thunderer,Dwarvish Scout&amp;quot;) })&lt;br /&gt;
&lt;br /&gt;
==== helper.round ====&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.11}}Unlike other languages (Python, Perl, Javascript, ...), Lua does not include a round function. This helper function allows rounding numbers, following the &amp;quot;round half away from zero method&amp;quot;, see Wikipedia [[http://en.wikipedia.org/wiki/Rounding_numbers#Round_half_away_from_zero]]. Returns the number rounded to the nearest integer.&lt;br /&gt;
&lt;br /&gt;
 -- this number will be rounded up&lt;br /&gt;
 helper.round(345.67) -- returns 346&lt;br /&gt;
 -- this one will be rounded down&lt;br /&gt;
 helper.round(543.21) -- returns 543&lt;br /&gt;
 -- an integer stays integer&lt;br /&gt;
 helper.round(123) -- returns 123&lt;br /&gt;
 -- works also for negative numbers&lt;br /&gt;
 helper.round(-369.84) -- returns -370&lt;br /&gt;
 helper.round(-246.42) -- returns -246&lt;br /&gt;
&lt;br /&gt;
==== helper.shuffle ====&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.11}}This function randomly sorts in place the elements of the table passed as argument, following the Fisher-Yates algorithm. It returns no value.&lt;br /&gt;
'''WARNING:''' this function uses Lua's math.random(), and so it is MP-unsafe. It is provided mainly for AI development, although it should work inside wesnoth.synchronize_choice() as well.&lt;br /&gt;
 local locs = wesnoth.get_locations( { terrain=&amp;quot;G*&amp;quot; } )&lt;br /&gt;
 helper.shuffle( locs )&lt;br /&gt;
&lt;br /&gt;
[[Category: Lua Reference]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=DevelopersHome&amp;diff=49200</id>
		<title>DevelopersHome</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=DevelopersHome&amp;diff=49200"/>
		<updated>2013-03-21T15:37:31Z</updated>

		<summary type="html">&lt;p&gt;Esr: Let the Repository page describe access&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General Information =&lt;br /&gt;
* Links&lt;br /&gt;
** [http://changelog.wesnoth.org Changelog] - the most recent changes made to the game&lt;br /&gt;
** [http://cia.vc/stats/project/wesnoth Latest commits] - Up-to-date commit messages&lt;br /&gt;
&lt;br /&gt;
* Coding Guidelines&lt;br /&gt;
** [[HackingWesnoth]] - guide for programmers&lt;br /&gt;
** [[CodingStandards]] - for programmers&lt;br /&gt;
** [[DeveloperGuide]] - for those who received repository commit rights&lt;br /&gt;
&lt;br /&gt;
* Library documentation&lt;br /&gt;
** http://www.sgi.com/tech/stl/ - Standard Template Library&lt;br /&gt;
** [http://www.boost.org/doc/libs/1_36_0/ Boost 1.36 documentation]&lt;br /&gt;
&lt;br /&gt;
= Tools and Packaging =&lt;br /&gt;
* Supporting Websites&lt;br /&gt;
** [[WesnothRepository]] - accessing the source code&lt;br /&gt;
** http://gettext.wesnoth.org/ - gettext status&lt;br /&gt;
* Compiling and Building&lt;br /&gt;
** [[CompilingWesnoth]] - how to compile Battle for Wesnoth (it's not hard)&lt;br /&gt;
** [[SCons]]&lt;br /&gt;
* Packaging and Releasing&lt;br /&gt;
** [[ReleasingWesnoth]] - steps to follow to release a new version&lt;br /&gt;
** [[WesnothPackagersGuide]] - guidelines for packaging Wesnoth for different platforms&lt;br /&gt;
* Documentation&lt;br /&gt;
** [[Doxygen]] - Documentation generator&lt;br /&gt;
* More stuff&lt;br /&gt;
** [[ExternalUtilities]] (Wercator, CampGen, wmllint, etc.)&lt;br /&gt;
** [[MaintenanceTools]] WMLLint, WMLIndent and WMLScope&lt;br /&gt;
** [[UsingGooglePerformanceTools]] to profile Wesnoth CPU and memory usage.&lt;br /&gt;
&lt;br /&gt;
= I want to start coding, what can I do? =&lt;br /&gt;
* [[EasyCoding]] - Bugs and features that are easy to implement for new coders&lt;br /&gt;
* [[NotSoEasyCoding]] - Bugs and features which are doable but lacking someone working on them&lt;br /&gt;
* [[GettingStarted]]&lt;br /&gt;
* [[FrequentlyProposedIdeas]] - summary of past often-repeated forum discussions&lt;br /&gt;
* [[Glossary]]&lt;br /&gt;
&lt;br /&gt;
= Game - Create content =&lt;br /&gt;
* [[BuildingScenarios]] and related useful forum discussions: &lt;br /&gt;
** [http://www.wesnoth.org/forum/viewtopic.php?t=4188 Beginning Campaign Development]&lt;br /&gt;
** [http://www.wesnoth.org/forum/viewtopic.php?t=4301 A Balancing Act]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
= Code documentation =&lt;br /&gt;
* http://devdocs.wesnoth.org - generated code documentation&lt;br /&gt;
* AI&lt;br /&gt;
** [[AI_Module]] - guide to AI module (src/ai)&lt;br /&gt;
** [[FormulaAI]] - Guide to the experimental formula AI branch&lt;br /&gt;
* Themes&lt;br /&gt;
** [[ThemeSystem]] - customizing the screen layout for the game and the editor&lt;br /&gt;
* Multiplayer&lt;br /&gt;
** [[WesnothdDesign]] - Guide to the design of wesnothd, the multiplayer server.&lt;br /&gt;
* Gui2 - The new Gui-Framework&lt;br /&gt;
** [[GUIToolkit]]&lt;br /&gt;
** [[GUILayout]]&lt;br /&gt;
** [[GUIVariable]]&lt;br /&gt;
** Gui2 WML&lt;br /&gt;
*** [[GUICanvasWML]]&lt;br /&gt;
*** [[GUIToolkitWML]]&lt;br /&gt;
*** [[GUIWidgetDefinitionWML]]&lt;br /&gt;
*** [[GUIWidgetInstanceWML]]&lt;br /&gt;
*** [[GUIWindowDefinitionWML]]&lt;br /&gt;
* Savegames&lt;br /&gt;
** [[SavegameClassHierarchy]]&lt;br /&gt;
&lt;br /&gt;
= Communication, Feedback, Events =&lt;br /&gt;
* Gna! links&lt;br /&gt;
** http://bugs.wesnoth.org/ - Gna! - bugs and feature requests&lt;br /&gt;
** http://patches.wesnoth.org/ - Gna! - patches&lt;br /&gt;
&lt;br /&gt;
* Mailing lists&lt;br /&gt;
** https://mail.gna.org/listinfo/wesnoth-dev/ - wesnoth-dev&lt;br /&gt;
** https://mail.gna.org/listinfo/wesnoth-commits/ - wesnoth-commits&lt;br /&gt;
&lt;br /&gt;
* IRC&lt;br /&gt;
** [irc://irc.wesnoth.org/#wesnoth-dev freenode/#wesnoth-dev] - IRC (alias to irc.freenode.net)&lt;br /&gt;
** http://irclog.wesnoth.org/ - IRC logs&lt;br /&gt;
&lt;br /&gt;
* Forum - http://forum.wesnoth.org&lt;br /&gt;
&lt;br /&gt;
* This wiki - http://www.wesnoth.org/wiki/Main_Page &lt;br /&gt;
&lt;br /&gt;
* FOSDEM&lt;br /&gt;
** [[Fosdem2008]]&lt;br /&gt;
** [[Fosdem2009]]&lt;br /&gt;
** [[Fosdem2010]]&lt;br /&gt;
** [[Fosdem2011]]&lt;br /&gt;
** [[Fosdem2012]]&lt;br /&gt;
&lt;br /&gt;
* Google Summer of Code&lt;br /&gt;
** [[SummerOfCodeIdeas]] - Ideas for GSoC&lt;br /&gt;
** [[SoC_Information_for_Google]] - Our organization profile for Google&lt;br /&gt;
** [[SoC_People_to_bug_on_IRC]] - Who GSoC students can ask for help&lt;br /&gt;
&lt;br /&gt;
= Miscellaneous =&lt;br /&gt;
* [[DebugMode]] and [[CommandMode]] - in game debugging commands&lt;br /&gt;
* [http://www.wesnoth.org/units/trunk/animations.html Missing unit animations] - what's available and what's missing&lt;br /&gt;
* http://units.wesnoth.org/ - Unit reference&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WesnothRepository&amp;diff=49199</id>
		<title>WesnothRepository</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WesnothRepository&amp;diff=49199"/>
		<updated>2013-03-21T15:35:10Z</updated>

		<summary type="html">&lt;p&gt;Esr: Move SVN-specific terminology here from PatchSubmissionGuidelines&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Compiling Wesnoth}}&lt;br /&gt;
==  SVN ==&lt;br /&gt;
&lt;br /&gt;
Wesnoth development currently uses the [[SVN|Subversion]] software tool to keep developers in sync with each other. See the [http://svnbook.org SVN book] for more on how to use Subversion.&lt;br /&gt;
&lt;br /&gt;
Note: Wesnoth is moving to git.  This informtion may be obsolete by the time you read it!&lt;br /&gt;
&lt;br /&gt;
==  Browse the code  ==&lt;br /&gt;
&lt;br /&gt;
There are currently two main streams of development: trunk (1.11.x) and stable branch (1.10.x). Most other branches are only used for a short time to do some testing without disturbing the main development. You can use your web browser to navigate through the source code:&lt;br /&gt;
&lt;br /&gt;
http://svn.gna.org/viewcvs/wesnoth/&lt;br /&gt;
&lt;br /&gt;
==  Download  ==&lt;br /&gt;
&lt;br /&gt;
To check out trunk into a directory called ''wesnoth'' (about 400 MB to download as of March 30th 2009, and about 1.3 GB disk space required, including .svn dirs, as of June 17th 2012):&lt;br /&gt;
 svn co http://svn.gna.org/svn/wesnoth/trunk wesnoth&lt;br /&gt;
&lt;br /&gt;
Or, to check out the 1.10 branch (about 400 MB to download and 960 MB to store on disk as of March 30th 2009; by extrapolation, probably around 1.3 GB too by June 17th 2012) into a directory called ''wesnoth-1.10'':&lt;br /&gt;
 svn co http://svn.gna.org/svn/wesnoth/branches/1.10 wesnoth-1.10&lt;br /&gt;
&lt;br /&gt;
More info on the repository: https://gna.org/svn/?group=wesnoth&lt;br /&gt;
&lt;br /&gt;
==  Commit access  ==&lt;br /&gt;
&lt;br /&gt;
For commit access, you must have a developer account on gna, it must be registered as part of the Wesnoth group, and you must check out with&lt;br /&gt;
 svn co svn+ssh://gna_username@svn.gna.org/svn/wesnoth/trunk wesnoth&lt;br /&gt;
&lt;br /&gt;
==  Update  ==&lt;br /&gt;
&lt;br /&gt;
Do this from inside the ''wesnoth'' or ''wesnoth-1.10'' directory where you checked out the repository:&lt;br /&gt;
 svn update&lt;br /&gt;
&lt;br /&gt;
== Reviewing your changes ==&lt;br /&gt;
&lt;br /&gt;
Before committing, it's always wise to run&lt;br /&gt;
 svn diff&lt;br /&gt;
&lt;br /&gt;
and look at the output. Some kinds of mistakes that are hard to see embedded in all the code you have modified are more easily spotted in the isolated diff lines.&lt;br /&gt;
&lt;br /&gt;
== Generating patches ==&lt;br /&gt;
&lt;br /&gt;
Under Subversion on a Unix-like operating system, do&lt;br /&gt;
  svn diff &amp;gt;my.patch&lt;br /&gt;
&lt;br /&gt;
or something similar.  If you are using git-svn a git diff is acceptable.  See [[PatchSubmissionGuidelines]] for more on how to get these merged into the public repository.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[CompilingWesnoth]]&lt;br /&gt;
* [[SVN_on_Windows]]&lt;br /&gt;
* [[GIT-SVN]] - for git users&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=PatchSubmissionGuidelines&amp;diff=49198</id>
		<title>PatchSubmissionGuidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=PatchSubmissionGuidelines&amp;diff=49198"/>
		<updated>2013-03-21T15:30:53Z</updated>

		<summary type="html">&lt;p&gt;Esr: Remove SVN-specific terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Adapted from http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=9979&lt;br /&gt;
&lt;br /&gt;
The exact mechanics of generating a patch on your development machine will vary according to what operating system and tools you are using. [[WesnothRepository]] describes some common scenarios.&lt;br /&gt;
&lt;br /&gt;
* '''All patches should be submitted at patches.wesnoth.org'''&lt;br /&gt;
You can post them in the [http://www.wesnoth.org/forum/viewtopic.php?f=10&amp;amp;t=9979 Coder's Corner] subforum too for discussion, but we need to track what is their status and p.w.o helps a lot&lt;br /&gt;
&lt;br /&gt;
It even records precisely the commit against which it was generated, it makes things really easy for us...&lt;br /&gt;
&lt;br /&gt;
* '''Don't forget to add an entry to the Changelog'''&lt;br /&gt;
* '''If you add a file, don't forget to update src/SConscript,  src/CMakeLists.txt, and projectfiles/VC9/wesnoth.vcproj '''&lt;br /&gt;
&lt;br /&gt;
* '''Add yourself in about.cfg'''&lt;br /&gt;
Including your name and/or nickname(s) makes it easier for us to recognize your contributions.&lt;br /&gt;
New contributors (i.e., those without commit access) should add themselves to the ''Miscellaneous Contributors'' section of the about file (data/core/about.cfg). Please keep the alphabetical order while doing it!&lt;br /&gt;
&lt;br /&gt;
* '''When changing WML, please add a pointer in the wiki to where it should be updated when commited'''&lt;br /&gt;
&lt;br /&gt;
* '''Be patient, sometimes we are not very responsive'''&lt;br /&gt;
* '''Don't be suprised if we discuss the patch a lot'''&lt;br /&gt;
Thus, you should leave us a way to contact you, either a forum nick, an email adress, or submit with a registered gna account. We recommend that you join the #wesnoth-dev channel on irc.freenode.net regularly so we can contact you in real time if needed.&lt;br /&gt;
&lt;br /&gt;
* '''The patch should generate no warnings'''&lt;br /&gt;
Wesnoth has a large number of compiler warnings enabled, and all of them are useful. If your code spits warnings, please have a look, and ask yourself why you are doing whatever causes the warning.&lt;br /&gt;
&lt;br /&gt;
* '''Sometimes patches are rejected, don't be suprised if it happens'''&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HackingWesnoth]]&lt;br /&gt;
* [[CodingStandards]]&lt;br /&gt;
* [[GoodCommitCommentingPractice]]&lt;br /&gt;
* [[EasyCoding]]&lt;br /&gt;
* [[DeveloperResources]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WesnothRepository&amp;diff=49197</id>
		<title>WesnothRepository</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WesnothRepository&amp;diff=49197"/>
		<updated>2013-03-21T15:22:52Z</updated>

		<summary type="html">&lt;p&gt;Esr: Markup fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Compiling Wesnoth}}&lt;br /&gt;
==  SVN ==&lt;br /&gt;
&lt;br /&gt;
Wesnoth development currently uses the [[SVN|Subversion]] software tool to keep developers in sync with each other. See the [http://svnbook.org SVN book] for more on how to use Subversion.&lt;br /&gt;
&lt;br /&gt;
Note: Wesnoth is moving to git.  This informtion may be obsolete by the time you read it!&lt;br /&gt;
&lt;br /&gt;
==  Browse the code  ==&lt;br /&gt;
&lt;br /&gt;
There are currently two main streams of development: trunk (1.11.x) and stable branch (1.10.x). Most other branches are only used for a short time to do some testing without disturbing the main development. You can use your web browser to navigate through the source code:&lt;br /&gt;
&lt;br /&gt;
http://svn.gna.org/viewcvs/wesnoth/&lt;br /&gt;
&lt;br /&gt;
==  Download  ==&lt;br /&gt;
&lt;br /&gt;
To check out trunk into a directory called ''wesnoth'' (about 400 MB to download as of March 30th 2009, and about 1.3 GB disk space required, including .svn dirs, as of June 17th 2012):&lt;br /&gt;
 svn co http://svn.gna.org/svn/wesnoth/trunk wesnoth&lt;br /&gt;
&lt;br /&gt;
Or, to check out the 1.10 branch (about 400 MB to download and 960 MB to store on disk as of March 30th 2009; by extrapolation, probably around 1.3 GB too by June 17th 2012) into a directory called ''wesnoth-1.10'':&lt;br /&gt;
 svn co http://svn.gna.org/svn/wesnoth/branches/1.10 wesnoth-1.10&lt;br /&gt;
&lt;br /&gt;
More info on the repository: https://gna.org/svn/?group=wesnoth&lt;br /&gt;
&lt;br /&gt;
==  Commit access  ==&lt;br /&gt;
&lt;br /&gt;
For commit access, you must have a developer account on gna, it must be registered as part of the Wesnoth group, and you must check out with&lt;br /&gt;
 svn co svn+ssh://gna_username@svn.gna.org/svn/wesnoth/trunk wesnoth&lt;br /&gt;
&lt;br /&gt;
==  Update  ==&lt;br /&gt;
&lt;br /&gt;
Do this from inside the ''wesnoth'' or ''wesnoth-1.10'' directory where you checked out the repository:&lt;br /&gt;
 svn update&lt;br /&gt;
&lt;br /&gt;
== Reviewing your changes ==&lt;br /&gt;
&lt;br /&gt;
Before committing, it's always wise to run&lt;br /&gt;
 svn diff&lt;br /&gt;
&lt;br /&gt;
and look at the output. Some kinds of mistakes that are hard to see embedded in all the code you have modified are more easily spotted in the isolated diff lines.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[CompilingWesnoth]]&lt;br /&gt;
* [[SVN_on_Windows]]&lt;br /&gt;
* [[GIT-SVN]] - for git users&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=DeveloperGuide&amp;diff=49196</id>
		<title>DeveloperGuide</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=DeveloperGuide&amp;diff=49196"/>
		<updated>2013-03-21T15:21:52Z</updated>

		<summary type="html">&lt;p&gt;Esr: Remove Subversion-specific terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Commits ==&lt;br /&gt;
* Setting up developer access to the repository: [[WesnothRepository#Commit_access]]&lt;br /&gt;
* Register to commit mailing list: https://mail.gna.org/listinfo/wesnoth-commits or get the list moderator to approve commit messages from you otherwise&lt;br /&gt;
* Trunk should compile and work after commit&lt;br /&gt;
* Few small commits are better than a big one (hard to review), so when possible split it in working parts with info about where you are going&lt;br /&gt;
* Be on #wesnoth-dev IRC channel and coordinate with other developers. Bots report commits and some devs may ask you a question about it.&lt;br /&gt;
* Don't forget changelogs: ''changelog'' for any (significant enough) changes and ''player_changelog'' for changes visible to users.&lt;br /&gt;
* Always check your changes before commit (see [[WesnothRepository#Reviewing your changes]]).&lt;br /&gt;
* Commit message:&lt;br /&gt;
** Mention any change, especially if some are unrelated to the main one (but you should use separated commits for this).&lt;br /&gt;
** Mention &amp;quot;bug #1234&amp;quot; for automatic cc to that gna bug number&lt;br /&gt;
** Mention a developer's IRC name will ping him on IRC (when the bot report it), and if he's not there, he may see it on the IRC logs&lt;br /&gt;
&lt;br /&gt;
== Bugs management ==&lt;br /&gt;
* Change status of fixed bugs to &amp;quot;Fixed&amp;quot; when committed&lt;br /&gt;
* Change status of fixed bugs to &amp;quot;Closed&amp;quot; when released, see [[ReportingBugs#Bug_protocol]] for details&lt;br /&gt;
* Check if there is new bugs relevant to your code and if any, assign them to you.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Project#Developers]]&lt;br /&gt;
* [[WesnothRepository]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WesnothRepository&amp;diff=49195</id>
		<title>WesnothRepository</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WesnothRepository&amp;diff=49195"/>
		<updated>2013-03-21T15:19:20Z</updated>

		<summary type="html">&lt;p&gt;Esr: Describe svn diff&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Compiling Wesnoth}}&lt;br /&gt;
==  SVN ==&lt;br /&gt;
&lt;br /&gt;
Wesnoth development currently uses the [[SVN|Subversion]] software tool to keep developers in sync with each other. See the [http://svnbook.org SVN book] for more on how to use Subversion.&lt;br /&gt;
&lt;br /&gt;
Note: Wesnoth is moving to git.  This informtion may be obsolete by the time you read it!&lt;br /&gt;
&lt;br /&gt;
==  Browse the code  ==&lt;br /&gt;
&lt;br /&gt;
There are currently two main streams of development: trunk (1.11.x) and stable branch (1.10.x). Most other branches are only used for a short time to do some testing without disturbing the main development. You can use your web browser to navigate through the source code:&lt;br /&gt;
&lt;br /&gt;
http://svn.gna.org/viewcvs/wesnoth/&lt;br /&gt;
&lt;br /&gt;
==  Download  ==&lt;br /&gt;
&lt;br /&gt;
To check out trunk into a directory called ''wesnoth'' (about 400 MB to download as of March 30th 2009, and about 1.3 GB disk space required, including .svn dirs, as of June 17th 2012):&lt;br /&gt;
 svn co http://svn.gna.org/svn/wesnoth/trunk wesnoth&lt;br /&gt;
&lt;br /&gt;
Or, to check out the 1.10 branch (about 400 MB to download and 960 MB to store on disk as of March 30th 2009; by extrapolation, probably around 1.3 GB too by June 17th 2012) into a directory called ''wesnoth-1.10'':&lt;br /&gt;
 svn co http://svn.gna.org/svn/wesnoth/branches/1.10 wesnoth-1.10&lt;br /&gt;
&lt;br /&gt;
More info on the repository: https://gna.org/svn/?group=wesnoth&lt;br /&gt;
&lt;br /&gt;
==  Commit access  ==&lt;br /&gt;
&lt;br /&gt;
For commit access, you must have a developer account on gna, it must be registered as part of the Wesnoth group, and you must check out with&lt;br /&gt;
 svn co svn+ssh://gna_username@svn.gna.org/svn/wesnoth/trunk wesnoth&lt;br /&gt;
&lt;br /&gt;
==  Update  ==&lt;br /&gt;
&lt;br /&gt;
Do this from inside the ''wesnoth'' or ''wesnoth-1.10'' directory where you checked out the repository:&lt;br /&gt;
 svn update&lt;br /&gt;
&lt;br /&gt;
== Reviewing your changes ==&lt;br /&gt;
&lt;br /&gt;
Before committing, it's always wise to run &amp;quot;svn diff&amp;quot; and look at the output. Some kinds of mistakes that are hard to see embedded in all the code you have modified are more easily spotted in the isolated diff lines.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[CompilingWesnoth]]&lt;br /&gt;
* [[SVN_on_Windows]]&lt;br /&gt;
* [[GIT-SVN]] - for git users&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Observer:Profiles:An_Interview_With_Shadow_Master&amp;diff=49194</id>
		<title>Observer:Profiles:An Interview With Shadow Master</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Observer:Profiles:An_Interview_With_Shadow_Master&amp;diff=49194"/>
		<updated>2013-03-21T15:09:49Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical instance of &amp;quot;SVN&amp;quot; from mediawiki search to avoid false positives.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''1) You have made a campaign, Invasion from the Unknown. Do you have any tips for campaign designers, pitfalls to avoid?'''&lt;br /&gt;
&lt;br /&gt;
In the process of writing the 30 planned scenarios of &amp;quot;Invasion from the Unknown&amp;quot;, and getting it to completion, I made many tremendous mistakes that I still regret. One of them was the campaign's length: I chose an amount of scenarios that I could not play-test in less than a week and a half, which was a very unpleasant experience for me as a player. To solve the issue, I removed some scenarios that contributed little to the story, and put some of their dialogues in those scenarios I was happy with. That reduced the campaign's length from 30 scenarios to 26, and then I was able to release version 1.0, after rewriting a few scenarios that were incredibly easy yet essential to the plot.&lt;br /&gt;
&lt;br /&gt;
Afterwards I had a small discussion with [http://www.wesnoth.org/wiki/Observer:Profiles#An_Interview_With_esr ESR] about the length and the possibility of inclusion in mainline. He personally did not like to handle such a big campaign (which is a trouble for Legend of Wesmere's inclusion in mainline, by the way) for revising story texts, dialogues, etc. So, I did another heavy revision pass to the campaign, collapsing some very long maps into small ones, and splitting it into two episodes that could be picked independently from the campaign menu, or played as a whole by selecting the adequate option at the end of the first one. This helped me a lot to balance and play-test further the existing scenarios, to a point I consider the campaign complete. But you can see now that polishing it took me thrice the amount of time it took me to write the original 30 scenarios.&lt;br /&gt;
&lt;br /&gt;
I guess that the biggest cause of this quirky design is that I did not have a story written down - I designed it in the way, while writing the WML for &amp;quot;Invasion from the Unknown&amp;quot;. ESR wrote a &amp;quot;Campaign Design How-to&amp;quot; shortly after the first playable release of my campaign (with 10 scenarios); if it had been done before, I probably would not have made such a mess of a project. Nevertheless, when I had 16 scenarios completed, I felt I could not bear the task of driving it to completion. But at the end, I managed to finish it, and to polish it with that How-to's help.&lt;br /&gt;
&lt;br /&gt;
At the end, I can be proud that I never had to ask for artwork for the myriads of custom units my campaign uses. I made most of the artwork, including sprites for two of the main characters, and an entire faction of foes, the [http://www.wesnoth.org/wiki/Shaxthals Shaxthals]. The only artwork the campaign still lacks are animation sets for these custom units (which I just started to make, see [http://www.wesnoth.org/forum/viewtopic.php?f=23&amp;amp;t=17306&amp;amp;start=165 my artwork thread] in the forums) and portraits for characters. At the moment I'm using placeholder portraits (some of them recolored) to please myself when playing, but I hope that in the future the campaign can attract artists to help with them. Currently, kitty has demonstrated interest on making art for this campaign, but of course I prefer (as a mainline developer) that she makes generic portraits for the game instead, as she planned.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''I see on your [http://www.wesnoth.org/wiki/User:ShikadiLord wiki page] that you have made many contributions to the C++ side of Wesnoth. In your opinion, what is one area of the wesnoth code that wants improving the most?''' &lt;br /&gt;
&lt;br /&gt;
The Graphical User Interface. At the moment it is pretty obscure and inflexible from the programming side, and almost impossible to customize (i.e. custom game themes) from the artists' point of view. The toolkit used by Wesnoth is also very unpleasant - we lack separate classes and artwork for radio buttons (which are present in old and famous toolkits such as GTK 1.x), combo boxes are visually represented as generic command buttons, and it is currently impossible to create completely custom dialogs in WML, which would be great for the long wanted pick-up items management interface for units (which wold allow players to give items to other units after having picked them up, to drop them, etc.), which would make many RPG-style multiplayer content look more professional.&lt;br /&gt;
&lt;br /&gt;
Another problem with this toolkit is its lack of use. I recently had to handle some obscure dialogues in the built-in map editor that use SDL drawing functions directly for text labels, instead of using the provided gui::label class which would make the code much more readable. My best guess is that it is part of the reason the built-in map editor is in such a poor state, not maintained by anyone in particular.&lt;br /&gt;
&lt;br /&gt;
(As far as I know, Mordante/SkeletonCrew is currently rewriting the GUI toolkit code in the development versions (1.5.x), and it already works, but it still requires some additional features he wants in order to replace completely the default toolkit.)&lt;br /&gt;
&lt;br /&gt;
Besides the GUI, there is also a great lack of people who can handle [http://www.wesnoth.org/wiki/ThemeWML Theme WML] both in mainline and in user-made content. Mordante already expressed interest in rewriting the Theme WML dialect to make it easier to use for content authors, but I don't know if that could be done for version 1.6.0. Of course I would love to see that - my campaign has some unfinished GUI theme code and/or artwork that are not used until I get to learn this arcane dialect.&lt;br /&gt;
&lt;br /&gt;
Other areas of Wesnoth are already being improved by other of our developers, or are part of the recently announced Google Summer of Code projects.&lt;br /&gt;
&lt;br /&gt;
In the future, I would like to rewrite the multiplayer games' side set-up interface so that instead of having different screens for host and clients, there was an unified, more user-friendly interface, with built-in support for specifying whether one of the players is ready or not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) What is the development culture like in the Battle for Wesnoth, compared to other projects?'''&lt;br /&gt;
&lt;br /&gt;
I have not been contributor or developer in any project but Wesnoth, but I do know the history of many other open-source games. Wesnoth has evolved over time and has achieved a grade of quality that I have yet to see in other free (as in freedom) game. Being a community-based project has surely helped Wesnoth's development; any competent person can fix or improve the different aspects of the game by submitting a [http://patches.wesnoth.org patch], and if they make such contributions in a regular basis, or in a significant amount of importance, they eventually get developer access to the mainline sub&amp;amp;shy;&amp;amp;shy;version repository. This makes the project not constrained to a closed circle of people, and incarnates the spirit of free software in all its aspects.&lt;br /&gt;
&lt;br /&gt;
Albeit the small amount of time I have been player (since version 0.9.6), and my incredibly recent work as developer (since 1.3.8), I can tell the game has evolved in a way I could never have imagined by playing version 1.0. It felt more than complete enough for an open-source software made by volunteers, but now it feels and looks professional enough to have been made by a medium-sized software company.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4) What is your opinion on custom art for UMCs? Can art be better used in the mainline?'''&lt;br /&gt;
&lt;br /&gt;
Custom art is that, custom. UMCs have need for completely new artwork, units, stories, while mainline does not. Mainline has very specific needs in the artwork area now that our core units set is stable, and those are having idle animations, better defense animations and directional graphics for every unit, besides having standing animations for units that justify it (such as flying creatures or fire-wielding units). Jetryl et al are working very hard on remaking some legacy graphics (adding team-color pixels in the way), which is why the task of making new animations is mostly left to the vast community of Wesnoth, rather than the core art developers/contributors. They of course do not have all the time of the world for this, so if more capable people could help them to get the TC project to completion, they would have more time for those wanted animations and other subtle fanciness (particles, animated missile animations, etc.) which are already supported by the engine, yet lack the graphics to be used.&lt;br /&gt;
&lt;br /&gt;
I (and I think is the case of many other artists such as Wayfarer and Eternal) have focused on UMC artwork development to learn the basics in the process, before attempting to do improvements in mainline. Often I have made artwork for custom units in my campaign, and later I find myself completely replacing it in favor of something more mainline-quality. I think I have learned a lot while at it, but I don't feel ready to face the challenge of animating every sprite I make, which is why I do not contribute to mainline yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5) You are making an [http://shadowm.nfshost.com/wesnoth-UMC/UMCDev-Announcement S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N for user made campaigns]. Would you care to tell our readers, in a nutshell, what it is?'''&lt;br /&gt;
&lt;br /&gt;
The S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N is made, and there are a few projects already using it (Invasion from the Unknown, [http://www.wesnoth.org/wiki/Thunderstone Thunderstone], Delfador's Memoirs, Era of Strife, The Dark Hordes, in order of appearance). It is an initiative that I and ESR put to practice for coordinate development of User Made Content. Some add-ons used WesCamp-i18n for that purpose in the past (Northern Rebirth, Son of the Black Eye), but that strongly deviated from the repository's official purpose and hampered translations management.&lt;br /&gt;
&lt;br /&gt;
For that reason we started on SourceForge.net this project, using the provided version control capabilities. The project has a [http://cia.vc CIA] bot that reports every commit on the repository to the #wesnoth-umc-dev IRC channel at irc.freenode.net, and to the mailing list.&lt;br /&gt;
&lt;br /&gt;
Another goal of the project is to provide a secure and permanent medium for storing and backing up campaigns so that when they get abandoned, someone else can take them over with minimal effort. This repository also serves as an excellent release book-keeping tool for Invasion from the Unknown, the only add-on so far that takes full advantage of the version control possibilities thanks to a set of scripts I wrote for it. I hope to get them usable for every author in the future.&lt;br /&gt;
&lt;br /&gt;
Also I would like to provide a facility for storing .pbl files in a secure manner (i.e. privately for each author). But I still do not know how to achieve that, or how much time it will take to be done.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;[[The Observer|Return to Front Page]] --&amp;gt; [http://www.wesnoth.org/mw/index.php?title=Category:Observer:Profiles Return to Profiles]&amp;lt;/small&amp;gt;&lt;br /&gt;
[[Category:Observer:Profiles]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=CommandMode/ru&amp;diff=49193</id>
		<title>CommandMode/ru</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=CommandMode/ru&amp;diff=49193"/>
		<updated>2013-03-21T15:06:48Z</updated>

		<summary type="html">&lt;p&gt;Esr: Removing SVN-specific terminology.  Hoping Google Translate got this right.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Во время игры в Веснот, любой игрок может воспользоваться '''командами''' Веснота. Существуют команды для любого [[игрок|игрока]], и для [[хост|хоста]]. Для того чтобы ввести команду, напечатайте &amp;quot;:&amp;quot; (именно &amp;quot;:&amp;quot;, а не &amp;quot;;&amp;quot;, т.е. необходимо нажать - Shift+&amp;quot;;&amp;quot;). Вы можете переназначить это сочетание в настройках, либо вручную подправив '''game.cfg'''. Некоторые команды имеют vi-стиль. Чтобы узнать информацию о командах прямо из игры, предусмотрена команда '''help'''. ''':help''' - выводит список команд, ''':help команда''' - выводит информацию по команде.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Общие команды ==&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;q или q!&lt;br /&gt;
: Выйти из сценария&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;w&lt;br /&gt;
: Сохранить игру&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;wq&lt;br /&gt;
:Сохранить игру, и выйти из сценария&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;refresh&lt;br /&gt;
: Перерисовать изображение&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;droid [сторона] [on|off]&lt;br /&gt;
: Переключение управления [[сторона|стороной]], между человеком и компьютером. Эту команду может использовать только игрок, управляющий указанной стороной. Если не указать сторону, будет использована текущая сторона.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;clear&lt;br /&gt;
: Очистить сообщения чата&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;theme&lt;br /&gt;
: Показать меню выбора темы&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;nosaves&lt;br /&gt;
: Отключить автосохранения&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;show_coordinates (или &amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;sc)&lt;br /&gt;
: Переключение отображения координат на сетке карты&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;show_terrain_codes (или &amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;tc)&lt;br /&gt;
: Переключение отображения [[код местности|кодов местности]] на сетке карты&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;lua оператор&lt;br /&gt;
: Выполнить оператор Lua&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;discover&lt;br /&gt;
: Отобразить все скрытые описания [[юнит|юнитов]], в справке игры.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;version&lt;br /&gt;
:Просмотреть [[версия игры|версию игры]] или ревизии хранилища.&lt;br /&gt;
&lt;br /&gt;
== Мультиплеер ==&lt;br /&gt;
&lt;br /&gt;
=== Общие ===&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;control сторона пользователь&lt;br /&gt;
: Передать управление стороной пользователю. Хост может передавать управление любой из сторон, обычный игрок - только той, которой он управляет в данный момент.&lt;br /&gt;
&lt;br /&gt;
=== Хост ===&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;muteall&lt;br /&gt;
: Переключение режима запрета общения в чате всем [[наблюдатель|наблюдателям]].&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;mute [пользователь]&lt;br /&gt;
: Запретить общаться в чате указанному наблюдателю. Если пользователь не указан, будет выведен список пользователей, на которых наложен запрет.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;unmute [пользователь]&lt;br /&gt;
: Снять запрет на общение в чате указанному наблюдателю. Если пользователь не указан, будет снят запрет на общение со всех наблюдателей (не несет эффекта на '''muteall''')&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;kick пользователь&lt;br /&gt;
: Кикнуть (выкинуть из игры) пользователя&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;ban пользователь&lt;br /&gt;
: Забанить (запретить входить в игру) и кикнуть пользователя&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;unban пользователь&lt;br /&gt;
: Разбанить (снять запрет на вход в игру) пользователя&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальная игра ==&lt;br /&gt;
&lt;br /&gt;
=== Команды отладки ===&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;debug&lt;br /&gt;
:Включить режим отладки (не работает в режиме мультиплеера). Режим отладки отключается при выходе из игры, либо использовании команды &amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;nodebug.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;nodebug&lt;br /&gt;
:Выключить режим отладки&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;n&lt;br /&gt;
:Перейти к следующему сценарию, вызвав событие [[победа|победы]].&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;shroud&lt;br /&gt;
:Включить/отключить [[пелена|пелену]]&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;fog&lt;br /&gt;
:Включить/отключить [[туман войны]]&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;gold сумма&lt;br /&gt;
:Добавить указанную сумму золота текущему игроку&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;create тип_бойца&lt;br /&gt;
:Создать бойца&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;unit hitpoints=очки_здоровья&lt;br /&gt;
:Изменить [[очки здоровья]] юнита&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;unit experience=опыт&lt;br /&gt;
:Изменить [[опыт]] юнита&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;unit свойство=значение&lt;br /&gt;
:Когда юнит выбран, это изменить одно из свойств юнита, на указанное значение. См. [[WML одного бойца]], чтобы узнать возможные значения.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;unit advances=число&lt;br /&gt;
:Когда юнит выбран, эта команда произведет [[повышение уровня]], указанное количество раз.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;set_var переменная=значение&lt;br /&gt;
:Установить значение WML [[Переменная|переменной]].&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;show_var переменная&lt;br /&gt;
:Показать значение WML переменной, в всплывающем окне.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;throw/fire название_событиия&lt;br /&gt;
:Запустить событие игры, например - ''time over'' или ''enemies defeated''&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;inspect&lt;br /&gt;
:Запустить диалог инспектора состояния игры, в котором вы можете просмотреть информацию о переменных, команде и [[ИИ]].&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;cl&lt;br /&gt;
:Вызвать меню перехода напрямую в определенный [[сценарий]].&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[DebugMode]]&lt;br /&gt;
* [[ChatCommands]]&lt;br /&gt;
* [[ServerAdministration]]&lt;br /&gt;
* [[DeveloperResources]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Playing Wesnoth]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SwedishTranslation/Method&amp;diff=49192</id>
		<title>SwedishTranslation/Method</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SwedishTranslation/Method&amp;diff=49192"/>
		<updated>2013-03-21T15:02:47Z</updated>

		<summary type="html">&lt;p&gt;Esr: Removing SVN-specific terminology, hoping Google Translate got this right.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SwedishTranslation}}&lt;br /&gt;
&lt;br /&gt;
= Metod =&lt;br /&gt;
&lt;br /&gt;
== Ny översättare ==&lt;br /&gt;
&lt;br /&gt;
Hör av dig till den [[User:dacovale |huvudansvarige]] för vidare instruktioner. Under tiden kan listan här nedan tittas igenom för att få ett hum om hur översättningsarbetet fungerar.&lt;br /&gt;
&lt;br /&gt;
# Kontakta den huvudansvarige via e-post&lt;br /&gt;
# Medan du väntar på svar&lt;br /&gt;
## Skaffa konto på Wiki:n&lt;br /&gt;
## Läs information på Wiki:n angående termer, med mera&lt;br /&gt;
# Läs e-postsvaret från den huvudansvarige&lt;br /&gt;
# Lägg till dig på listan över aktiva översättare&lt;br /&gt;
# Översätt&lt;br /&gt;
## Adoptera en textdomän (markera på Wiki:n)&lt;br /&gt;
## Börja översätta enligt mallen nedan&lt;br /&gt;
&lt;br /&gt;
== Översättning ==&lt;br /&gt;
&lt;br /&gt;
Vanligtvis fungerar översättandet som följer.&lt;br /&gt;
&lt;br /&gt;
# Översättaren meddelar den huvudansvarige att han eller hon adopterar en av textdomänerna (se ordförklaringar nedan). Vilka domäner som är lediga kan man se på huvudsidan för den svenska översättningen.&lt;br /&gt;
# Översättaren tankar hem en av de svenska po-filerna (''sv.po'') till sin dator. Det enklaste sättet att komma åt filerna är genom [http://www.wesnoth.org/gettext/index.lang.php?version=trunk&amp;amp;package=&amp;amp;lang=sv denna lista]. För att undvika förvirring så är det bra att direkt byta namn på filen från ''sv.po'' till (t ex) ''wesnoth-A_New_Order.po''.&lt;br /&gt;
# Po-filen redigeras med en lämplig editor; detta är inte vad som helst, utan någon av:&lt;br /&gt;
#* [http://i18n.kde.org/tools/kbabel/ KBabel] (Linux KDE)&lt;br /&gt;
#* [http://gtranslator.sourceforge.net/ GTranslator] (Linux Gnome)&lt;br /&gt;
#* [http://www.poedit.net/ poEdit] (Multiplattform)&lt;br /&gt;
#* [http://www.gnu.org/software/emacs/emacs.html Emacs] i po-mode (Multiplattform)&lt;br /&gt;
#* [http://www.vim.org/ Vim] med [http://www.vim.org/scripts/script.php?script_id=695 po-plugin] (Multiplattform)&lt;br /&gt;
# När ett lämpligt antal strängar översatts (100-200 stycken, alternativt 100% om textdomänen är liten), så skickas filen per e-post till den huvudansvarige.&lt;br /&gt;
# Filen merge:as med huvudfilen. För att göra det enkelt för mig har jag gjort ett script som plockar ut de nya översättningarna ur ett &amp;quot;draft&amp;quot; från en översättare, och stoppar in dessa i den fil jag sitter på. '''Detta script tar dock bara hänsyn till helt nya översättningar - ändrade redan existerande översättningar kommer alltså att försvinna!''' Om du har gjort ändringar - eller tycker att en existerande översättning bör ändras - säg då till, så att jag kan ta hänsyn till dessa.&lt;br /&gt;
# Huvudansvarige korrekturläser strängarna ytterligare en gång och rättar eventuella fel som upptäcks. Därefter skickar huvudansvarige filen vidare för inkludering i Wesnoths arkiv.&lt;br /&gt;
# När den nya versionen finns tillgänglig i arkivet, tankar lämpligen översättaren hem den på nytt så att en färsk po-fil används. Detta minskar risken att översättningar går förlorade när mallen ändras (dessa mallar kallas pot-filer).&lt;br /&gt;
&lt;br /&gt;
== Ordförklaringar ==&lt;br /&gt;
&lt;br /&gt;
Lite kort om några ord vi använder i översättningssammanhang.&lt;br /&gt;
&lt;br /&gt;
; Po-fil&lt;br /&gt;
:: Översättningarna är uppdelade i flera olika filer. Dessa filer råkar ha efternamnet &amp;quot;po&amp;quot;, varför man kan kalla dem po-filer om man känner för det. Det är dessa filer vi använder när vi översätter. Man kan skriva i dem direkt (vilket inte är att rekommendera) eller använda ett lämpligt program (poedit, kBabel, osv). Förnamnet på po-filerna anger till vilket språk filen &amp;quot;översätter&amp;quot;. Svenskans po-filer heter &amp;quot;sv.po&amp;quot;, tyskans &amp;quot;de.po&amp;quot;, osv.&lt;br /&gt;
; Domän&lt;br /&gt;
:: Som sagt är översättningarna uppdelade i flera olika filer. Uppdelningen är givetvis inte godtycklig, utan beror på vilket sammanhang filen används i. Varje enskild kampanj har sin egen domän; till exempel innehåller domänen ''wesnoth-httt'' översättningen för kampanjen Tronarvingen (Heir to The Throne, förkortat HTTT). På [http://gettext.wesnoth.org/index.lang.php?lang=sv statussidan för den svenska översättningen] kan man se detta direkt. I kolumnen ''package'' (som väl egentligen borde heta ''domain'') kan man se alla domäner som finns i Kampen om Wesnoth. Länkarna leder till po-filen för aktuell domän för valt språk (i det här fallet svenska).&lt;br /&gt;
; Sträng&lt;br /&gt;
:: Detta är programmeringsjargon för en mening, ett ord eller en fras som hänger ihop på ett eller annat sätt. I po-filssammanhang använder vi uttrycket för att hänvisa till en fras eller översättningen av en fras, alltså varje enskild &amp;quot;msgid&amp;quot; och &amp;quot;msgstr&amp;quot; i po-filerna.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Sluta som översättare =&lt;br /&gt;
&lt;br /&gt;
=(&lt;br /&gt;
&lt;br /&gt;
# Kontakta huvudansvarige&lt;br /&gt;
## Skicka in allt färdigt arbete &lt;br /&gt;
## Meddela att du slutar&lt;br /&gt;
# Flytta dig till listan över inaktiva översättare&lt;br /&gt;
# Avadoptera dina textdomäner på wiki:n&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=UsefulLinks&amp;diff=49191</id>
		<title>UsefulLinks</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=UsefulLinks&amp;diff=49191"/>
		<updated>2013-03-21T14:49:14Z</updated>

		<summary type="html">&lt;p&gt;Esr: CIA ia dead&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Battle for Wesnoth ===&lt;br /&gt;
 Home Page                         http://www.wesnoth.org/&lt;br /&gt;
 Gna! Project Page                 http://svn.wesnoth.org/&lt;br /&gt;
 Page on TheLinuxGameTome          http://happypenguin.org/show?Battle%20for%20Wesnoth&lt;br /&gt;
 Freshmeat entry                   http://freshmeat.net/projects/wesnoth/&lt;br /&gt;
 Changelog                         http://changelog.wesnoth.org/ [http://stable-changelog.wesnoth.org stable]&lt;br /&gt;
 This wiki                         http://wiki.wesnoth.org/&lt;br /&gt;
 The manual                        http://manual.wesnoth.org/&lt;br /&gt;
 Translation statistics            http://gettext.wesnoth.org/&lt;br /&gt;
 Add-on server web interface       http://addonlist.wesnoth.org/ [http://stable-addons.wesnoth.org stable] [http://dev-addons.wesnoth.org dev]&lt;br /&gt;
 Multiplayer server statistics     http://wesnothd.wesnoth.org/&lt;br /&gt;
                                   http://wesnoth.yi.org/statistics/ &lt;br /&gt;
 Multiplayer replays               http://replays.wesnoth.org&lt;br /&gt;
 Unit advancement tree             http://units.wesnoth.org/&lt;br /&gt;
 Forum for users and developers    http://forums.wesnoth.org/ [http://forums.wesnoth.org/search.php?search_id=newposts new posts]&lt;br /&gt;
 List of Frequently Proposed Ideas http://fpi.wesnoth.org/&lt;br /&gt;
 IRC channel (Freenode)            irc://irc.wesnoth.org/#wesnoth [http://webchat.freenode.net/?channels=wesnoth webchat]&lt;br /&gt;
 IRC logs                          http://irclog.wesnoth.org/&lt;br /&gt;
 Flattr Account                    http://flattr.com/profile/wesnoth&lt;br /&gt;
 Twitter Account                   http://twitter.com/Wesnoth&lt;br /&gt;
&lt;br /&gt;
=== Developers ===&lt;br /&gt;
 SVN web interface                 http://websvn.wesnoth.org/&lt;br /&gt;
 Subversion homepage               http://subversion.apache.org/&lt;br /&gt;
 SVN book                          http://svnbook.org/&lt;br /&gt;
 Code documentation                http://devdocs.wesnoth.org/&lt;br /&gt;
 Mailing lists                     https://gna.org/mail/?group=wesnoth&lt;br /&gt;
 Bug/Feature tracker               http://bugs.wesnoth.org/&lt;br /&gt;
 Patch tracker                     http://patches.wesnoth.org/&lt;br /&gt;
 ohloh statistics                  http://www.ohloh.net/p/wesnoth&lt;br /&gt;
 wesnoth.org server stats          http://collectd.wesnoth.org&lt;br /&gt;
 IRC channel (Freenode)            http://irc.wesnoth.org/#wesnoth-dev [http://webchat.freenode.net/?channels=wesnoth-dev webchat]&lt;br /&gt;
&lt;br /&gt;
=== Other Links ===&lt;br /&gt;
 1vs1 Wesnoth ladder               http://wesnoth.gamingladder.info/&lt;br /&gt;
 Wesnoth matches with commentary   http://www.youtube.com/user/NekisBrutalWesnoth&lt;br /&gt;
 WSNPP                             http://wiki.wesnoth.org/WSNPP&lt;br /&gt;
 Run Wesnoth online (Windows)      http://spoon.net/the-battle-for-wesnoth&lt;br /&gt;
&lt;br /&gt;
=== Multilingual Players' Sites ===&lt;br /&gt;
Community in China               http://wesnoth.cn/&lt;br /&gt;
&lt;br /&gt;
[[Category:Wesnoth Wiki]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Wescamp.py_Instructions&amp;diff=49190</id>
		<title>Wescamp.py Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Wescamp.py_Instructions&amp;diff=49190"/>
		<updated>2013-03-21T14:43:49Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical instance of &amp;quot;SVN&amp;quot; from mediawiki search to avoid false positives.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documented here is how wescamp.py works.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* Git&lt;br /&gt;
* Python (2.5 or above should work)&lt;br /&gt;
* Ssh keys so that git push doesn't require a password prompt (for everything except -C, which uses a read-only checkout)&lt;br /&gt;
* Administrator rights on github.com/wescamp (if you need to create new repositories)&lt;br /&gt;
&lt;br /&gt;
== Checkouts ==&lt;br /&gt;
Like the s&amp;amp;shy;&amp;amp;shy;v&amp;amp;shy;&amp;amp;shy;n invocation, with git, a directory per &amp;quot;version branch&amp;quot; is required. Unlike the s&amp;amp;shy;&amp;amp;shy;v&amp;amp;shy;&amp;amp;shy;n version, you can't simply check out a single directory to do this.&lt;br /&gt;
The -c/--checkout switch will check out a version directory for you, if it is properly named. The -U switch can make the checkouts as a side-effect.&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;version directory&amp;quot; is required to end in the version it's for, as this is currently the method used to identify the version. The following formats work:&lt;br /&gt;
 /tmp/wescamp/1.10&lt;br /&gt;
 /tmp/wescamp-1.10&lt;br /&gt;
&lt;br /&gt;
== Invocation ==&lt;br /&gt;
* -u ADDON uploads a single add-on to wescamp.&lt;br /&gt;
* -U uploads all translatable add-ons.&lt;br /&gt;
* -l lists all add-ons.&lt;br /&gt;
* -L lists all translatable add-ons.&lt;br /&gt;
* -c creates a normal checkout&lt;br /&gt;
* -C creates a read-only checkout (doesn't require any github credentials)&lt;br /&gt;
* -s SERVER is the hostname of the add-on server&lt;br /&gt;
* -p PORT is the port of the add-on server&lt;br /&gt;
* -w WESCAMP_CHECKOUT specifies the directory of the wescamp checkout (or where it will be created)&lt;br /&gt;
* -G USER:PASSWORD is your login to github. This argument is required if an upload would create a new repository on github. This is because a json API is used to create the new repository.&lt;br /&gt;
** You can also use a github OAuth2 token instead of your username and password. This token must have the 'repo' scope.&lt;br /&gt;
* -B BUILD_SYSTEM_CHECKOUT can be used to specify a build-system checkout&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
 ./data/tools/wesnoth/wescamp.py -scampaigns.wesnoth.org -p15002 -w/tmp/wescamp/branch-1.10/ -c&lt;br /&gt;
This makes a fresh checkout of all translatable 1.10 add-ons in the specified directory.&lt;br /&gt;
&lt;br /&gt;
 ./data/tools/wesnoth/wescamp.py -scampaigns.wesnoth.org -p15002 -w/tmp/wescamp-upload/1.10/ -u Invasion_from_the_Unknown&lt;br /&gt;
An existing checkout of the Invasion_from_the_Unknown-1.10 repository in /tmp/wescamp-upload/1.10/Invasion_from_the_Unknown/ is updated.&lt;br /&gt;
&lt;br /&gt;
 ./data/tools/wesnoth/wescamp.py -scampaigns.wesnoth.org -p15002 -w/tmp/wescamp-upload/1.10/ -u Era_of_Myths -G USER:PASSWORD&lt;br /&gt;
The directory /tmp/wescamp-upload/1.10/ exists, but there is no Era_of_Myths directory in it and neither is there an Era_of_Myths-1.10 repository on github. After this command it will be on github and a checkout will be in the directory.&lt;br /&gt;
&lt;br /&gt;
 ./data/tools/wesnoth/wescamp.py -scampaigns.wesnoth.org -p15002 -w/tmp/wescamp-upload/branch-1.10/ -U -G longhexadecimalstringthatisanoath2bearertoken&lt;br /&gt;
Updates all 1.10 add-ons. If they are not yet on wescamp, a new repository will be created for them.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
If there's anything missing, please contact me. (AI0867)&lt;br /&gt;
&lt;br /&gt;
[[Category:Translations|*]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=PreprocessorRef&amp;diff=49189</id>
		<title>PreprocessorRef</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=PreprocessorRef&amp;diff=49189"/>
		<updated>2013-03-21T14:32:50Z</updated>

		<summary type="html">&lt;p&gt;Esr: We're moving off SVN.  Thankfully, there are no examples of +svn in current mainline&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Wesnoth loads just one configuration file directly: '''data/_main.cfg'''. However the '''WML preprocessor''' allows to include more files. Whenever a WML file is read by Wesnoth, it is passed through the preprocessor.&lt;br /&gt;
&lt;br /&gt;
The preprocessor can interpret a simple language of string expansions known as ''macros''. A macro should always be defined '''before''' the place where it needs to be used.&lt;br /&gt;
&lt;br /&gt;
The preprocessor is applied recursively, so included files will be parsed for macros, and after macro expansion will be parsed for macros again, and so on. As a result, you should not write a recursive macro that references itself, because it will cause errors (but, alas, not necessarily error messages).&lt;br /&gt;
&lt;br /&gt;
== Preprocessor directives ==&lt;br /&gt;
&lt;br /&gt;
The following directives are used to create and use ''macros'', i.e. shortcuts which reduce repetition of information. See [http://www.wesnoth.org/macro-reference.xhtml the macro reference] for the list of predefined core macros.&lt;br /&gt;
&lt;br /&gt;
The preprocessor has changed several times, so don't expect old Wesnoth versions to behave exactly the same as the current stable and development series.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' In multiplayer scenarios, these directives will appear to work only for the host and not for other clients. This is because the preprocessor is run only on the host, and the clients receive the resultant WML from the server. It's particularly important to keep this in mind before using preprocessor conditionals.&lt;br /&gt;
&lt;br /&gt;
=== #define ===&lt;br /&gt;
&lt;br /&gt;
'''Syntax: #define ''symbol'' [''parameters''] ''&amp;lt;newline&amp;gt;'' ''substitution'' #enddef'''&lt;br /&gt;
&lt;br /&gt;
All subsequent occurences of '''{''symbol'' [''arguments'']}''' (see below) will be replaced by the contents of the ''substitution'' block, with all occurrences of any parameter {''parameter''} within ''substitution'' replaced by the corresponding value in ''arguments''.  For example, the ENEMY_UNIT macro for the [[#Macro inclusions|macro inclusion]] example below could be defined as follows:&lt;br /&gt;
&lt;br /&gt;
 #define ENEMY_UNIT TYPE X Y&lt;br /&gt;
 ## the ordering above is important, since the preprocessor does not distinguish&lt;br /&gt;
 ## data into different types; only the ordering is used to determine which&lt;br /&gt;
 ## arguments apply to which parameters.&lt;br /&gt;
 [unit]&lt;br /&gt;
     type={TYPE} ## the unit will be of type TYPE, so different&lt;br /&gt;
                 ## instantiations&lt;br /&gt;
                 ## of this macro can create different units.&lt;br /&gt;
     x={X}&lt;br /&gt;
     y={Y}&lt;br /&gt;
     side=2 ## the unit will be an enemy, regardless of the parameter&lt;br /&gt;
            ## values. This reduces &amp;quot;repetition of information&amp;quot;,&lt;br /&gt;
            ## since it is no longer necessary to specify&lt;br /&gt;
            ## each created unit as an enemy.&lt;br /&gt;
 [/unit]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
(See [[SingleUnitWML]] for further information on creating units using WML.)&lt;br /&gt;
&lt;br /&gt;
=== #undef ===&lt;br /&gt;
&lt;br /&gt;
'''Syntax:''' '''#undef ''symbol'' '''&lt;br /&gt;
&lt;br /&gt;
Removes the previous definition of the macro named ''symbol''.&lt;br /&gt;
&lt;br /&gt;
=== Inclusion directive {} ===&lt;br /&gt;
&lt;br /&gt;
This directive can be used to include macros, single files or sets of files from a target directory.&lt;br /&gt;
&lt;br /&gt;
==== File/directory inclusions ====&lt;br /&gt;
&lt;br /&gt;
'''Syntax: {''path''}'''&lt;br /&gt;
&lt;br /&gt;
Includes the file with the specified ''path'', which will in turn run the preprocessor on it and perform any required substitutions or inclusions within it. The ''path'' may not contain ''..'' or the inclusion will be skipped.&lt;br /&gt;
&lt;br /&gt;
The exact location in which the ''path'' will be resolved will depend on its prefix:&lt;br /&gt;
&lt;br /&gt;
* '''{''path''}''': If ''path'' isn't a known macro (see below), the game will assume it's a relative path to a file in the main game '''data/''' directory and include it.&lt;br /&gt;
* '''{~''path''}''': As above, but instead of the game data directory, the path is resolved relative to the user '''data/''' directory, where user made add-ons can normally be found.&lt;br /&gt;
* '''{./''path''}''': The path is resolved relative to the location of the current file containing this inclusion.&lt;br /&gt;
&lt;br /&gt;
Information for locating the user data and game data directories can be found in [[EditingWesnoth]].&lt;br /&gt;
&lt;br /&gt;
Forward slashes ('''/''') should '''always''' be used as the path delimiter, even if your platform uses a different symbol such as colons (''':''') or backslashes ('''\''')! It is also very important to respect the '''actual letter case''' used to name files and directories for compatibility with case-sensitive filesystems on Unix-based operating systems.&lt;br /&gt;
&lt;br /&gt;
When ''path'' points to a directory instead of a file, the preprocessor will include all files found within with the '''.cfg''' extension, in alphabetical order; files without this extension (such as '''.map''' or '''.png''' files) are ignored.&lt;br /&gt;
&lt;br /&gt;
Some directories are handled in a special fashion according to their contents:&lt;br /&gt;
&lt;br /&gt;
* If there's a file named '''_main.cfg''' in the target directory, only that file will be included and preprocessed. It may include other files from its own directory or subdirectories within it, of course. This is used for managing WML directories as self-contained packages, like user made add-ons.&lt;br /&gt;
* If there are files named '''_main.cfg''' in subdirectories of the target and there isn't one in the target itself, they will be all preprocessed. Given the following layout:&lt;br /&gt;
 dir/&lt;br /&gt;
 dir/a/_main.cfg&lt;br /&gt;
 dir/a/other.cfg&lt;br /&gt;
 dir/b/_main.cfg&lt;br /&gt;
 dir/b/other.cfg&lt;br /&gt;
 dir/other.cfg&lt;br /&gt;
Using '''{dir}''' will cause dir/a/_main.cfg, dir/b/_main.cfg and dir/other.cfg to be included.&lt;br /&gt;
* If there's a file named '''_final.cfg''' but no '''_main.cfg''', the file is guaranteed to be included and processed ''after'' all the other files in the directory.&lt;br /&gt;
* If there's a file named '''_initial.cfg''' but no '''_main.cfg''', the file is guaranteed to be included and processed ''before'' all the other files in the directory.&lt;br /&gt;
&lt;br /&gt;
==== Macro inclusions ====&lt;br /&gt;
&lt;br /&gt;
'''Syntax: {''symbol'' [''arguments'']}'''&lt;br /&gt;
&lt;br /&gt;
If the macro named ''symbol'' is defined, the preprocessor will replace this instruction by the expression ''symbol'' was previously defined as, using ''arguments'' as parameters. The number of arguments must be exactly the same as in the original definition or an error will occur.&lt;br /&gt;
&lt;br /&gt;
You can create multiple word arguments by using parentheses to delimit the contents. For example, in '''{ENEMY_UNIT Wolf Rider 18 24}''' the four words will be interpreted as separate arguments and cause the preprocessor to fail since the macro was defined above with only three; instead, you should use '''{ENEMY_UNIT (Wolf Rider) 18 24}'''.&lt;br /&gt;
&lt;br /&gt;
Using the name of an existing macro as the name of a macro argument is possible, but the argument will always take precedence over the original macro:&lt;br /&gt;
&lt;br /&gt;
 #define VARIABLE&lt;br /&gt;
 #enddef&lt;br /&gt;
 #define MACRO VARIABLE&lt;br /&gt;
     {VARIABLE} # is calling for the argument, not for the macro above&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== #ifdef and #ifndef ===&lt;br /&gt;
&lt;br /&gt;
Unlike the other preprocessor directives, '''#ifdef''' and '''#ifndef''' are not mere conveniences. They are often necessary to distinguish between different gameplay modes or difficulties (see [[#Built-in macros|Built-in macros]] below).&lt;br /&gt;
&lt;br /&gt;
'''Syntax:''' '''#ifdef ''symbol'' ''substitution-if-defined'' [#else ''substitution-if-not-defined'' ] #endif'''&lt;br /&gt;
&lt;br /&gt;
If ''symbol'' has been defined with '''#define''' or as a built-in macro, the whole block will be replaced by ''substitution-if-stored''.  If not, it will be replaced by ''substitution-if-not-stored'' if it is available.&lt;br /&gt;
&lt;br /&gt;
'''#ifndef''' is the exact opposite of '''#ifdef''', reversing the logic:&lt;br /&gt;
&lt;br /&gt;
'''Syntax:''' '''#ifndef ''symbol'' ''substitution-if-not-stored''  [#else ''substitution-if-stored''] #endif'''&lt;br /&gt;
&lt;br /&gt;
=== #ifhave and #ifnhave ===&lt;br /&gt;
&lt;br /&gt;
'''Syntax:''' '''#ifhave ''path'' ''substitution-if-path-exists'' [#else ''substitution-if-path-does-not-exist''] #endif'''&lt;br /&gt;
&lt;br /&gt;
Checks for the existence of a file. Uses the same relative paths as include directives (see below).&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 #ifhave ~add-ons/My_Addon/_main.cfg&lt;br /&gt;
     {MY_ADDON_MACROS}&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
'''#ifnhave'''  does the opposite of '''#ifhave''':&lt;br /&gt;
&lt;br /&gt;
'''Syntax:''' '''#ifnhave ''path'' ''substitution-if-path-does-not-exist'' [#else ''substitution-if-path-exists''] #endif'''&lt;br /&gt;
&lt;br /&gt;
=== #ifver and #ifnver ===&lt;br /&gt;
&lt;br /&gt;
'''Syntax:''' '''#ifver ''symbol'' ''operator'' ''version-number'' ''&amp;lt;newline&amp;gt;'' ''substitution-if-condition-met'' [#else ''substitution-if-condition-not-met''] #endif'''&lt;br /&gt;
&lt;br /&gt;
Compares a version number defined in a macro against an argument for conditional block inclusions, like ''#ifdef'' and ''#ifhave''. ''operator'' is one of ''=='' (equal), ''!='' (not equal), ''&amp;lt;'' (less), ''&amp;lt;='' (less or equal), ''&amp;gt;'' (greater), ''&amp;gt;='' (greater or equal). The specified ''symbol'' should have been previously defined as plain text without more macro inclusions within it, and it must not require any arguments.&lt;br /&gt;
&lt;br /&gt;
Versions with text suffixes are sorted in binary order and come after all versions with the same number. The most common suffixes begin with &amp;quot;+&amp;quot;, but as this represents multiple possible versions, comparing versions against it is not recommended.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 #ifver WESNOTH_VERSION &amp;gt;= 1.9.7+&lt;br /&gt;
     [message]&lt;br /&gt;
         speaker=narrator&lt;br /&gt;
         message= _ &amp;quot;I’m on Wesnoth 1.9.7+, 1.9.8 or later!&amp;quot;&lt;br /&gt;
     [/message]&lt;br /&gt;
 #else&lt;br /&gt;
 #ifver WESNOTH_VERSION == 1.9.7&lt;br /&gt;
     [message]&lt;br /&gt;
         speaker=narrator&lt;br /&gt;
         message= _ &amp;quot;I’m on Wesnoth 1.9.7, and I’ll include some workaround code for bug #9001!&amp;quot;&lt;br /&gt;
     [/message]&lt;br /&gt;
 #endif&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
'''#ifnver'''  does the opposite of '''#ifver''':&lt;br /&gt;
&lt;br /&gt;
'''Syntax:''' '''#ifnver ''symbol'' ''operator'' ''version-number'' ''&amp;lt;newline&amp;gt;'' ''substitution-if-condition-not-met'' [#else ''substitution-if-condition-met''] #endif'''&lt;br /&gt;
&lt;br /&gt;
== Built-in macros ==&lt;br /&gt;
&lt;br /&gt;
The following macros are automatically defined with empty contents (unless specified otherwise) by the game engine depending on the configuration or gameplay mode.&lt;br /&gt;
&lt;br /&gt;
* A campaign define symbol (see ''define'' in [[CampaignWML]]): defined when playing a single-player campaign.&lt;br /&gt;
* A campaign difficulty level, usually '''EASY''', '''NORMAL''' or '''HARD''' (see ''difficulties'' in [[CampaignWML]]): defined according to the chosen difficulty when starting a single-player campaign, also stored in saved games.&lt;br /&gt;
* '''MULTIPLAYER''': defined when in multiplayer mode.&lt;br /&gt;
* '''TUTORIAL''': defined when playing the tutorial campaign.&lt;br /&gt;
* '''EDITOR''': defined when running the built-in map editor.&lt;br /&gt;
* '''DEBUG_MODE''': defined when the game has been launched in debug mode (i.e. with '''-d''' or '''--debug''' in the command line).&lt;br /&gt;
* '''APPLE''': defined while processing the main game data when running on Mac OS X.&lt;br /&gt;
* '''WESNOTH_VERSION''': defined containing just the game version number when running the WML preprocessor.&lt;br /&gt;
&lt;br /&gt;
== Command-line preprocessor ==&lt;br /&gt;
&lt;br /&gt;
'''Syntax: --preprocess ''&amp;lt;source file/directory&amp;gt;'' ''&amp;lt;target directory&amp;gt;'' '''&lt;br /&gt;
&lt;br /&gt;
Or the short form:&lt;br /&gt;
&lt;br /&gt;
'''Syntax: -p ''&amp;lt;source file/directory&amp;gt;'' ''&amp;lt;target directory&amp;gt;'' '''&lt;br /&gt;
&lt;br /&gt;
You can specify a list of predefined defines with:&lt;br /&gt;
&lt;br /&gt;
'''Syntax: --preprocess-defines=DEFINE1,DEFINE2,etc'''&lt;br /&gt;
&lt;br /&gt;
comma separated list of defines to be used by '--preprocess' command. If 'SKIP_CORE' is in the define list the data/core won't be preprocessed.&lt;br /&gt;
&lt;br /&gt;
The command will preprocess first the common config files in the main game ''data/'' directory, and afterwards the specified ones. You can specify a single file to be preprocessed (if you want to preprocess multiple separate files, you'll need to run a different command line for each one), or an entire directory, which will be preprocessed according to the rules used by the inclusion directive above.&lt;br /&gt;
&lt;br /&gt;
The resulted preprocessed files will be written in the target directory. There will be two types of files: .cfg files --- the normal ones, and .plain files containing line markers and textdomain changes.&lt;br /&gt;
&lt;br /&gt;
If by chance, the simple macro define doesn't suffice, you can use:&lt;br /&gt;
&lt;br /&gt;
'''Syntax: --preprocess-input-macros &amp;lt;file&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
To import an existing file that contains macros, and they will be available in the defines database before processing the specified files.&lt;br /&gt;
&lt;br /&gt;
There is also the possibility to export the preprocessed defines/macro list with:&lt;br /&gt;
&lt;br /&gt;
'''Syntax: --preprocess-output-macros [&amp;lt;target file&amp;gt;]'''&lt;br /&gt;
&lt;br /&gt;
This file could be fed to the 'input-macros' argument next time you run it. For example, a scenario  would be: parsing just the core first time, and for the intended target files, you would add SKIP_CORE but import the generated macros file - that will be faster than preprocessing the core again. If the target file is not specified, the output file will be _MACROS_.cfg in the target directory of the preprocess's command.&lt;br /&gt;
&lt;br /&gt;
If ''file/directory'' and ''target directory'' are not absolute paths, they will be considered relative to the game's executable path.&lt;br /&gt;
&lt;br /&gt;
Some examples:&lt;br /&gt;
&lt;br /&gt;
* Preprocess the entire tutorial dir, and write the results in the ~/result folder:&lt;br /&gt;
 -p ~/wesnoth/data/campaigns/tutorial ~/result&lt;br /&gt;
* Add the MULTIPLAYER define to the list and preprocess a scenario's config file:&lt;br /&gt;
 -p ~/.wesnoth/data/add-ons/My_Campaign/scenarios/01_First_Scenario.cfg ~/result --preprocess-defines=MULTIPLAYER&lt;br /&gt;
* Add the MY_CAMPAIGN and HARD defines before preprocessing a campaign's files:&lt;br /&gt;
 -p ~/.wesnoth/data/add-ons/My_Campaign ~/result --preprocess-defines=MY_CAMPAIGN,HARD&lt;br /&gt;
&lt;br /&gt;
If you want a more detailed (and potentially overwhelming) log, you can simply add the switches '''--log-debug=all''' or '''--log-info=all''' to the command line, so you can see how things are preprocessed in detail.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[SyntaxWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SoC_Ideas_Simple_Content_Manager&amp;diff=49188</id>
		<title>SoC Ideas Simple Content Manager</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SoC_Ideas_Simple_Content_Manager&amp;diff=49188"/>
		<updated>2013-03-21T14:21:34Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical instance of &amp;quot;SVN&amp;quot; from mediawiki search to avoid false positives.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Idea}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h2&amp;gt;Create a simple content manager frontend for non-technical users&amp;lt;/h2&amp;gt;&lt;br /&gt;
More info at [[SoC_Ideas_Simple_Content_Manager]]&lt;br /&gt;
&lt;br /&gt;
Wesnoth has all sorts of contributors that are not coders (translators, graphists, multiplayer developers, musicians, etc)&lt;br /&gt;
&lt;br /&gt;
A large part of these users don't know how to use content managers (git, s&amp;amp;shy;&amp;amp;shy;v&amp;amp;shy;&amp;amp;shy;n, etc...) and are not interested in learning. Wesnoth has been looking for a simple frontend to the most common content managers for those developers but none of these are simple enough for our use case. &lt;br /&gt;
&lt;br /&gt;
{{#dpl:&lt;br /&gt;
 |resultsheader=''There are %PAGES% submitted student proposals for this idea''&lt;br /&gt;
 |oneresultheader=''There is 1 submitted student proposal for this idea''&lt;br /&gt;
 |suppresserrors=true&lt;br /&gt;
 |noresultsheader=''There are no submitted student proposals for this idea''&lt;br /&gt;
 |category=Summer of Code 2011 Student Page&amp;amp;: SoC_Ideas_Simple_Content_Manager&lt;br /&gt;
 |notcategory=SoC 2011 Not Submitted To Google&lt;br /&gt;
 |include=#Description&lt;br /&gt;
 |mode=userformat&lt;br /&gt;
 |format=,,&amp;lt;br/&amp;gt;See [[%PAGE%|%TITLE%]] for more information.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;,&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Additional information=&lt;br /&gt;
&lt;br /&gt;
This task would be to develop a front end for the most common SCM that would mask completely the underlying tool and would target people that want to contribute to open source, are not technically inclined, and don't want to learn. This tool would implement a minimal subset of SCM features with the philosophy that the user has the support of technical people to do complicated tasks.&lt;br /&gt;
&lt;br /&gt;
the following feature list is here to help understand the use-case for the tool&lt;br /&gt;
&lt;br /&gt;
'''things the tool might do'''&lt;br /&gt;
* update repository wrt distant repository&lt;br /&gt;
* commit to distant repository&lt;br /&gt;
* prepare a bundle to attach to a mail&lt;br /&gt;
* switch branch &lt;br /&gt;
* resolve merge conflicts&lt;br /&gt;
* build a report on the underlying SCM situation to allow debugging by someone else&lt;br /&gt;
* register as a handler to s&amp;amp;shy;&amp;amp;shy;v&amp;amp;shy;&amp;amp;shy;n:// and git://&lt;br /&gt;
&lt;br /&gt;
'''things the tool shouldn't do''&lt;br /&gt;
* create a new project (if you want to do that, you should learn the real tool)&lt;br /&gt;
* create a new branch (a person with the real tool can do that on the repository for you in the rare case it's needed)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''other misc constraints'''&lt;br /&gt;
* python is the preferred language (all of wesnoth tool are in python) java could be used too (we already have some java code, so maintainability should be ok)&lt;br /&gt;
* it should be SCM agnostic (the point is to lower the barrier to entry for non-technical users)&lt;br /&gt;
* the UI should not be frightening to non-technical people (I.E give some thought to UI design in your proposal)&lt;br /&gt;
* it should integrate as properly as possible into the OS&lt;br /&gt;
* it should work on windows, Mac and Linux&lt;br /&gt;
&lt;br /&gt;
Zaroth: I [http://wiki.wesnoth.org/Zaroth_Simple_Content_Manager discussed] with the devs a bit about this idea, the information I gathered may be useful for you.&lt;br /&gt;
&lt;br /&gt;
= Whom to ask about this =&lt;br /&gt;
* Boucman (original idea)&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GettextParaTradutores&amp;diff=49187</id>
		<title>GettextParaTradutores</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GettextParaTradutores&amp;diff=49187"/>
		<updated>2013-03-21T14:19:16Z</updated>

		<summary type="html">&lt;p&gt;Esr: Remove SVN-specific terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Este arquivo está em processo de tradução para o português brasileiro. Edite à vontade.&lt;br /&gt;
&lt;br /&gt;
== Os text-domains ==&lt;br /&gt;
A tradução de Battle for Wesnoth é dividida em alguns domínios-texto (''text-domain''), que na estrutura de diretórios forma uma pasta, onde os arquivos com as traduções para os mais diversos idiomas (cujo nome do arquivo é a abreviatura da língua) estão:&lt;br /&gt;
* wesnoth&lt;br /&gt;
* wesnoth-editor&lt;br /&gt;
* wesnoth-lib (contém expressões (strings) compartilhados pelo jogo e pelo editor)&lt;br /&gt;
* além de mais um domínio-texto para cada campanha do jogo. Os nomes desses domínios-texto são constituídos pela palavra &amp;quot;wesnoth&amp;quot; mais a abreviação comum da campanha em inglês (wesnoth-ei, wesnoth-httt, wesnoth-trow, wesnoth-tb, wesnoth-tsg, wesnoth-utbs, etc.)&lt;br /&gt;
&lt;br /&gt;
== Pegando os fontes ==&lt;br /&gt;
O código-fonte do jogo está disponível para download na página inicial, ou diretamente: [[Download]]. Baixe a versão mais atual (estável ou desenvolvimento) para o seu sistema operacional.&lt;br /&gt;
&lt;br /&gt;
Os arquivos de tradução estão dentro da pasto cujo nome é &amp;quot;po&amp;quot;. Dentro dessa pasta, estão os diretórios que foram citados na seção acima (wesnoth, wesnoth-editor, wesnoth-lib, wesnoth-httt, wesnoth-low...). E dentro de cada uma dessas pastas estão os arquivos po, um para cada uma das línguas suportadas no jogo.&lt;br /&gt;
&lt;br /&gt;
É importante notar que essa estrutura de diretórios (na pasta &amp;quot;po&amp;quot;) que está nos fontes (uma pasta para cada text-domain, e dentro os arquivos po, cujo nome é a abreviatura do idioma) não é a mesma da estrutura de traduções (na pasta &amp;quot;translations&amp;quot;) do jogo instalado (onde há uma pasta para cada idioma, e dentro os arquivos po, cujo nome é o text-domain).&lt;br /&gt;
&lt;br /&gt;
== Os arquivos do repositório ==&lt;br /&gt;
Usaremos a tradução Sueca (sv) e o domínio ''wesnoth'' como exemplo nessa página.&lt;br /&gt;
Existem três importantes arquivos para cada domínio-texto:&lt;br /&gt;
* arquivo ''wesnoth/wesnoth.pot'', que contém todas as strings usadas pelo jogo principal (não contém as strings do editor nem as strings das campanhas). Você pode ver como se parece um arquivo ''.pot'' no SVN: [http://svn.gna.org/viewcvs/wesnoth/trunk/po/wesnoth/wesnoth.pot?view=markup Current SVN version].&lt;br /&gt;
* ''wesnoth/sv.po'', o arquivo contendo a tradução, Você pode ver como se parece um arquivo ''.po'' no SVN: [http://svn.gna.org/viewcvs/wesnoth/trunk/po/wesnoth/sv.po?view=markup Current SVN version].&lt;br /&gt;
* ''{translations_dir}/sv/LC_MESSAGES/wesnoth.gmo'', que é a versão binária do &amp;lt;lang&amp;gt;.po que o jogo irá usar por razões de eficácia. Esse arquivo não é encontrado no cvs, mas é criado durante a compilação do jogo.&lt;br /&gt;
&lt;br /&gt;
Entretanto, os tradutores não precisam se preocupar diretamente com isso.&lt;br /&gt;
&lt;br /&gt;
=== Atualizando os arquivos no SVN ===&lt;br /&gt;
O primeiro desses arquivos podemos atualizar de vez em quando, quando há um texto novo ou modificado. Como, por exemplo, quando um cenário de nova campanha atinge o SVN.&lt;br /&gt;
&lt;br /&gt;
Então, ''msgmerge'' é usado para fundir esse novo &amp;quot;estado das strings do jogo&amp;quot; com suas traduções correspondetes, e gerando um novo, e ataulizado, ''sv.po''.&lt;br /&gt;
&lt;br /&gt;
Após, uma ferramenta chamada ''msgfmt'' é rodada, que gera um novo arquivo ''wesnoth.gmo'' a partir do arquivo ''wesnoth.po'', que será usado após o jogo ser instalado.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;make -C po update-po&amp;quot; executa esses três passos de uma vez só. &lt;br /&gt;
&lt;br /&gt;
Entretanto, como já mencionado, tais comandos são para os &amp;quot;cabeças&amp;quot;, se assim podemos chamar os administradores da tradução. Os tradutores, na realidade, apenas precisam se preocupar com os arquivos PO: traduzir novas expressões e checar as &amp;quot;fuzzy&amp;quot;. Assim, as tarefas administrativas ficam com os administradores. Você realmente não precisa se preocupar com nenhum desses comandos, a não ser que você queira compilar os arquivos gmo para checá-los no jogo.&lt;br /&gt;
&lt;br /&gt;
== Enviando as traduções ==&lt;br /&gt;
Ivanovic é o responsável, atualmente, pela integração entre as traduções de Wesnoth, com a ajuda de Torangan e Ott. Você pode contatar Ivanovic (crazy-ivanovic AT gmx DOT net), e ele colocará suas traduções no jogo. Entretanto, para facilitar o contato entre eles e os tradutores, cada um dos idiomas possui seu ''maintainer'', que intermedia essa relação. Atualmente (fevereiro de 2012), o ''maintainer'' da tradução para o Português do Brasil é o Diego Goergen &amp;lt;i&amp;gt;(e-mail: diego.goergen@yahoo.com.br)&amp;lt;/i&amp;gt;. Assim, sempre que você terminar um arquivo PO (ou achar que ele está aceitável para o jogo), envie para ele, anexando em um e-mail, que ele enviará para o Ivanovic, e o arquivo entrará no jogo.&lt;br /&gt;
&lt;br /&gt;
Quando mandar seus arquivos PO para o ''maintainer'' para serem incluídas no SVN, anexe-as ao e-mail, ao invés de copiar e colar as expressões no texto. As expressões são muito sensíveis à formatação, e o arquivo irá auxiliar a diferenciar qual arquivo é qual, quando forem mandados vários arquivos.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
* O que é uma &amp;quot;fuzzy string&amp;quot;?&lt;br /&gt;
** É uma expressão (string) que foi marcada para revisão de tradução. Por exemplo, se foi feita uma pequena alteração e foi rodado o comando ''msgmerge'', ele irá marcar a tradução como &amp;quot;fuzzy&amp;quot;. Quando o modelo de tradução foi mudado para gettext, todas as transações foram marcadas como &amp;quot;fuzzy&amp;quot;. Além disso, a maioria dos editores (como o poEdit) tem como opção o próprio editor colocar a string como &amp;quot;fuzzy&amp;quot;, caso ele não tenha certeza de alguma tradução.&lt;br /&gt;
&lt;br /&gt;
* O que são as &amp;quot;Plural-forms&amp;quot;?&lt;br /&gt;
** Alguns idiomas (como o português) tem diferentes formas de palavra para diferentes números de coisas (por exemplo, em português nós temos &amp;quot;1 coisa&amp;quot;, mas &amp;quot;2 coisa'''s'''&amp;quot;). As regras são diferentes para diferentes idiomas. Você pode achá-las [http://translate.sourceforge.net/wiki/l10n/pluralforms aqui].&lt;br /&gt;
&lt;br /&gt;
* O que eu faço para inserir uma nova linha numa expressão?&lt;br /&gt;
** Se você quer inserir uma nova linha numa string, você precisa incluir duas aspas (&amp;quot;&amp;quot;). Você pode usar normalmente novas linhas, sem afetar a tradução.&lt;br /&gt;
&lt;br /&gt;
* Como eu uso ', uma vez que um apóstrofo delimita o início e fim de uma string no texto?&lt;br /&gt;
** Adicione uma contrabarra antes dele (fica assim: \').&lt;br /&gt;
&lt;br /&gt;
* O que eu faço com strings como &amp;quot;Prefs section^General&amp;quot;?&lt;br /&gt;
** Existem algumas expressões ambíguas que talvez precisem ser traduzidas de formas diferentes, dependendo do local onde é utilizada. Por exemplo, nós temos o &amp;quot;General&amp;quot; (&amp;quot;Geral&amp;quot;) nas preferências, como em &amp;quot;General preferences&amp;quot; (&amp;quot;Preferências Gerais&amp;quot;), e nós também temos &amp;quot;a General&amp;quot; (&amp;quot;um General&amp;quot;, uma unidade). Essas expressões podem ter diferentes traduções para cada linguagem, então nós usamos o xontexto para resolver isso. O prefixo apenas tenta mostrar onde que a expressõa será usada, e não deve ser traduzido, por exemplo:&lt;br /&gt;
   msgid &amp;quot;Prefs section^General&amp;quot;&lt;br /&gt;
   msgstr &amp;quot;Gerais&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Com quem eu falo para maiores informações?&lt;br /&gt;
** Pode falar com Ivanovic, Torangan, ott, Yann ou Isaac no IRC (irc.freenode.net, #wesnoth or #wesnoth-dev). Se não gosta do IRC, mande um e-mail para crazy-ivanovic AT gmx DOT net, ou mande uma mensagem privada para ele (ivanovic) no fórum. Além disso, há um fórum para &amp;quot;Translations &amp;amp; Internationalization&amp;quot;, onde há um tópico para a tradução para o português.&lt;br /&gt;
&lt;br /&gt;
* Como eu rapidamente testo as mudanças no arquivo PO?&lt;br /&gt;
** Quando você modificar um arquivo PO, rode &amp;quot;make update-gmo&amp;quot; no diretório po para criar um novo arquivo MO, então rode o &amp;quot;make install&amp;quot; lá para instalar os novos arquivos MO. Caso esteja usando o poEdit, ele já cria o arquivo MO assim que você salva o arquivo PO.&lt;br /&gt;
** Após, force a reconstrução do cache. This is tricky -- if you only update MO files, the game may use a cached (i.e., old) version letting you wonder why it still displays the old translation. Either change game.cfg modification time, e.g. with &amp;quot;touch /usr/local/share/wesnoth/game.cfg&amp;quot;, or delete the corresponding cache[s] in ~/.wesnoth/cache.&lt;br /&gt;
** É possível, também, substituir o arquivo MO que está na pasta do jogo instalado pelo novo arquivo MO.&lt;br /&gt;
&lt;br /&gt;
== Editores ==&lt;br /&gt;
Existem várias ferramentas para se trabalhar com arquivos .po:&lt;br /&gt;
* [http://userbase.kde.org/Lokalize Lokalize] (Unix KDE, substituto do KBabel)&lt;br /&gt;
* [http://i18n.kde.org/tools/kbabel/ KBabel] (Unix KDE)&lt;br /&gt;
* [http://gtranslator.sourceforge.net/ GTranslator] (Unix Gnome)&lt;br /&gt;
* [http://translate.sourceforge.net/wiki/virtaal/index Virtaal] (Multiplataforma)&lt;br /&gt;
* [http://www.poedit.net/ poEdit] (Multiplataforma)&lt;br /&gt;
* [http://www.gnu.org/software/emacs/emacs.html Emacs with po-mode] (Multiplataforma)&lt;br /&gt;
* [http://www.vim.org/ Vim] with [http://www.vim.org/scripts/script.php?script_id=695 PO plug-in] (Multiplataforma)&lt;br /&gt;
&lt;br /&gt;
Obviamente, você pode editar os arquivos .po com qualquer editor de texto UTF-8. Entretanto, as ferramentas listadas acima possuem grandes vantagens sobre qualquer editor quando se trata de tradução por arquivos .po como, por exemplo, ir à próxima string fuzzy/não-traduzida ou pesquisa em campos específicos (msgid, msgstr, comment)...&lt;br /&gt;
&lt;br /&gt;
== Veja também ==&lt;br /&gt;
&lt;br /&gt;
* [[WesnothTranslations]]&lt;br /&gt;
* [[WesnothTranslationsHowTo]]&lt;br /&gt;
* [[GettextForWesnothDevelopers]]&lt;br /&gt;
* [http://gettext.wesnoth.org/ Estatísticas de tradução]&lt;br /&gt;
* [[PortugueseTranslation|Página de tradução PT_BR]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Translations]]&lt;br /&gt;
[[Category:Portuguese]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SlovakTranslation&amp;diff=49186</id>
		<title>SlovakTranslation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SlovakTranslation&amp;diff=49186"/>
		<updated>2013-03-21T14:03:42Z</updated>

		<summary type="html">&lt;p&gt;Esr: Here's hoping Google Translate got this right&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SlovakMenu}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Táto stránka slúži na koordináciu prekladu hry Bitka o Wesnoth do slovenského jazyka. Ak sa chcete pridať k tímu, toto je správne miesto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prekladatelia ==&lt;br /&gt;
&lt;br /&gt;
Súčasní slovenskí prekladatelia:&lt;br /&gt;
* Aceman - koordinátor/správca (acelists&amp;lt;span&amp;gt;&amp;amp;#64;&amp;lt;/span&amp;gt;atlas&amp;lt;span&amp;gt;&amp;amp;#x2E;&amp;lt;/span&amp;gt;sk)&lt;br /&gt;
* Martin Dzbor&lt;br /&gt;
* Stanislav Hoferek (shoferek&amp;lt;span&amp;gt;&amp;amp;#64;&amp;lt;/span&amp;gt;gmail&amp;lt;span&amp;gt;&amp;amp;#x2E;&amp;lt;/span&amp;gt;com)&lt;br /&gt;
* Matúš Nerád&lt;br /&gt;
* Omelius&lt;br /&gt;
* Martin Plávala&lt;br /&gt;
* Vlado Zelik&lt;br /&gt;
* Pavol Pidanič (PaulP)&lt;br /&gt;
* Roman Beňo&lt;br /&gt;
&lt;br /&gt;
Bývalí prekladatelia:&lt;br /&gt;
* Viliam Búr&lt;br /&gt;
* Ivan Kovacs&lt;br /&gt;
* Jan Sucan&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Momentálny stav prekladu ==&lt;br /&gt;
&lt;br /&gt;
Momentálne sa môže prekladať verzia 1.10. Je tiež možné zasielať neoficiálne balíky pre verzie 1.10, 1.8, 1.6 a 1.4.&lt;br /&gt;
&lt;br /&gt;
Kto sa stará o ktorý balík a v akom je štádiu rozpracovanosti:&lt;br /&gt;
&lt;br /&gt;
(&amp;lt;span style=&amp;quot;background-color: #c0ffc0;&amp;quot;&amp;gt;zelená&amp;lt;/span&amp;gt; = balík je hotový; &amp;lt;span style=&amp;quot;background-color: #e0e0ff;&amp;quot;&amp;gt;modrá&amp;lt;/span&amp;gt; = na balíku sa pracuje; &amp;lt;span style=&amp;quot;background-color: #ffc0c0;&amp;quot;&amp;gt;červená&amp;lt;/span&amp;gt; = na balíku nikto nepracuje, biela = prekladateľ staršej verzie zatiaľ neuviedol, či bude pokračovať na verzii 1.10)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color: yellow;&amp;quot; | &amp;quot;Stabilná&amp;quot; verzia 1.10&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color: yellow;&amp;quot; | Oficiálne základné balíky&lt;br /&gt;
|-&lt;br /&gt;
! balík !! čo obsahuje !! prekladateľ&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth || hlavné texty v programe || Aceman&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-editor || editor máp || Aceman&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-lib || texty v programe || Aceman&lt;br /&gt;
|- style=&amp;quot;background-color: #e0e0ff;&amp;quot;&lt;br /&gt;
| wesnoth-help || návod v hre || Aceman&lt;br /&gt;
|- style=&amp;quot;background-color: white;&amp;quot;&lt;br /&gt;
| wesnoth-units || názvy a popisy jednotiek || Martin Dzbor&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-multiplayer || mapy a prostredie v multiplayeri || Aceman&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-tutorial || výcvik || Stanislav Hoferek&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-manpages || linuxový manuál || Aceman&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-manual || manuál v HTML || Vlado Zelik (Jan Latecka)&lt;br /&gt;
|-&lt;br /&gt;
! colspan=3 style=&amp;quot;background-color: yellow;&amp;quot; | Oficiálne výpravy&lt;br /&gt;
|-&lt;br /&gt;
! balík !! čo je to !! prekladateľ&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-httt || Dedič trónu || Aceman&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-anl || Zátoka || Martin Plávala&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-aoi || Invázia orkov || Stanislav Hoferek&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-did || Pád do Temnoty || Stanislav Hoferek, Omelius&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-dm || Delfadorove pamäti || Roman Beňo&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-dw || More mŕtvych || Roman Beňo&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-ei || Invázia z východu || Roman Beňo&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-l || Sloboda || Vlado Zelik (Stanislav Hoferek, Marian Kluvanec)&lt;br /&gt;
|- style=&amp;quot;background-color: white;&amp;quot;&lt;br /&gt;
| wesnoth-low || Legenda Wesméru || Martin Dzbor&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-nr || Prerod severu || Vlado Zelik + Pavol Pidanič&lt;br /&gt;
|- style=&amp;quot;background-color: white;&amp;quot;&lt;br /&gt;
| wesnoth-sof || Ohnivé žezlo || Stanislav Hoferek&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-sotbe || || Roman Beňo (Martin Plávala)&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-tb || Príbeh o dvoch bratoch || Roman Beňo (Stanislav Hoferek)&lt;br /&gt;
|- style=&amp;quot;background-color: #e0e0ff;&amp;quot;&lt;br /&gt;
| wesnoth-thot || Tursagánovo kladivo || Martin Dzbor, Marek Cacko&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-trow || Zrodenie Wesnothu || Pavol Pidanič&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-tsg || Južná hliadka || Martin Plávala&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-utbs || Pod žeravými slnkami || Pavol Pidanič (Martin Dzbor)&lt;br /&gt;
|-&lt;br /&gt;
! colspan=3 style=&amp;quot;background-color: yellow;&amp;quot; | Verzia 1.8&lt;br /&gt;
|-&lt;br /&gt;
! colspan=3 style=&amp;quot;background-color: yellow;&amp;quot; | Neoficiálne balíky&lt;br /&gt;
|-&lt;br /&gt;
! balík !! čo je to !! prekladateľ&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-The_Final_Exam || Posledná skúška || Stanislav Hoferek&lt;br /&gt;
|-&lt;br /&gt;
! colspan=3 style=&amp;quot;background-color: yellow;&amp;quot; | Verzia 1.6&lt;br /&gt;
|-&lt;br /&gt;
! colspan=3 style=&amp;quot;background-color: yellow;&amp;quot; | Neoficiálne balíky&lt;br /&gt;
|-&lt;br /&gt;
! balík !! čo je to !! prekladateľ&lt;br /&gt;
|- style=&amp;quot;background-color: white;&amp;quot;&lt;br /&gt;
| wesnoth-Attack_of_the_Undead || Útok nemŕtvych || Stanislav Hoferek&lt;br /&gt;
|-&lt;br /&gt;
! colspan=3 style=&amp;quot;background-color: yellow;&amp;quot; | Verzia 1.4&lt;br /&gt;
|-&lt;br /&gt;
! colspan=3 style=&amp;quot;background-color: yellow;&amp;quot; | Neoficiálne balíky&lt;br /&gt;
|-&lt;br /&gt;
! balík !! čo je to !! prekladateľ&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-Attack_of_the_Undead || Útok nemŕtvych || Stanislav Hoferek&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-The_Final_Exam || Posledná skúška || Stanislav Hoferek&lt;br /&gt;
|- style=&amp;quot;background-color: #e0e0ff;&amp;quot;&lt;br /&gt;
| wesnoth-The_Three_Elves || O troch elfoch || Stanislav Hoferek&lt;br /&gt;
|- style=&amp;quot;background-color: #c0ffc0;&amp;quot;&lt;br /&gt;
| wesnoth-Trolls || Trolovia || Stanislav Hoferek&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Prekladatelia však pracujú na prekladoch na svojich počítačoch. &lt;br /&gt;
Presná [http://gettext.wesnoth.org/index.lang.php?version=trunk&amp;amp;package=&amp;amp;lang=sk štatistika slovenského prekladu verzie 1.10] ukazuje koľko z preložených textov už bolo naozaj odoslaných správcom hry a budú obsiahnuté v nasledujúcej oficiálnej verzii hry na stiahnutie. Je možné si pozrieť aj [http://gettext.wesnoth.org/index.php?package=alloff&amp;amp;order=trans&amp;amp;version=trunk porovnanie s inými jazykmi].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Návod pre správcu prekladu ==&lt;br /&gt;
&lt;br /&gt;
Úlohou slovenského správcu prekladu je vytvárať &amp;quot;nárazník&amp;quot; medzi globálnymi správcami prekladu a slovenskými prekladateľmi:&lt;br /&gt;
* zaúčať nových slovenských prekladateľov;&lt;br /&gt;
* sledovať, kto na čom pracuje, aby dvaja prekladatelia neprekladali rovnaký text;&lt;br /&gt;
* kontrolovať správny formát súborov pred odoslaním globálnemu správcovi;&lt;br /&gt;
* kontrolovať kvalitu prekladu, upozorňovať na chyby, vysvetľovať technické záležitosti;&lt;br /&gt;
* riešiť jazykové otázky;&lt;br /&gt;
* aktualizovať [[Credits#Slovak_Translation|zoznam slovenských prekladateľov]] v hre a na webe;&lt;br /&gt;
* občas aktualizovať túto wiki stránku;&lt;br /&gt;
* sledovať konferenciu správcov prekladu a informovať prekladateľov o blížiacich sa termínoch;&lt;br /&gt;
* urobiť strategické rozhodnutie, kedy majú prekladatelia prejsť na novú verziu.&lt;br /&gt;
&lt;br /&gt;
Súbory preposielané globálnym správcom v balíku ZIP ''musia'' mať rovnaký názov a adresár ako v úložisku, napríklad &amp;quot;wesnoth/sk.po&amp;quot; (nie &amp;quot;wesnoth.po&amp;quot; ani &amp;quot;wesnoth_sk.po&amp;quot;). Posielajú sa iba PO súbory, nie MO súbory. Treba uvádzať verziu programu, napríklad &amp;quot;This is update for Slovak translation, branch 1.8.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Správcovia pre oficiálne balíky sú uvedení na stránke &amp;quot;[[WesnothTranslationsHowTo]]&amp;quot;, momentálne Ivanovic a Torangan. Správca pre neoficiálne balíky je uvedený na stránke &amp;quot;[[Wescamp]]&amp;quot;, momentálne Torangan.&lt;br /&gt;
&lt;br /&gt;
Zoznam prekladateľov je na stránke &amp;quot;[[Credits]]&amp;quot;, nemôže sa editovať priamo, ale treba poslať e-mail správcovi. Do zoznamu sa prekladatelia pridávajú až potom, čo naozaj niečo pošlú.&lt;br /&gt;
&lt;br /&gt;
== Návod pre prekladateľa ==&lt;br /&gt;
&lt;br /&gt;
=== Základy ===&lt;br /&gt;
&lt;br /&gt;
Texty určené na preklad sú rozdelené do balíkov obsahujúcich desiatky, stovky, alebo tisíce fráz.&lt;br /&gt;
Jedna &amp;quot;fráza&amp;quot; môže znamenať jedno slovo, slovné spojenie, vetu, alebo niekoľko viet; nemožno teda naisto povedať, že viac fráz je viac textu, ale približne to platí. V [http://gettext.wesnoth.org/index.lang.php?version=branch&amp;amp;package=&amp;amp;lang=sk štatistike] zelená farba označuje počet preložených fráz v balíku, červená farba počet nepreložených. Prípadná modrá farba znamená počet automaticky preložených fráz, ktoré rozhodne ešte treba skontrolovať. Prekladové balíky sú vo formáte &amp;quot;po&amp;quot;. Stiahnete ich tak, že kliknete pravým tlačidlom na názov balíka a vyberiete možnosť &amp;quot;Ulož ako...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Prvých cca 20 balíkov viditeľne oddelených hrubou čiarou sa stiahne a nainštaluje ako súčasť hry. Označujú sa ako &amp;quot;oficiálne balíky&amp;quot; a sú pre nás najdôležitejšie, lebo ich bude mať skoro každý hráč. Ďalšie balíky patria k doplnkom, ktoré si môže hráč doinštalovať kliknutím na tlačidlo &amp;quot;Doplnky&amp;quot; v hre.&lt;br /&gt;
&lt;br /&gt;
Na prekladanie potrebujete program, ktorý dokáže pracovať s formátom &amp;quot;po&amp;quot;, napríklad [http://www.poedit.net/ poEdit]. V tomto programe môžete klikať na jednotlivé anglické frázy a písať k nim slovenský preklad. Pri niektorých prekladoch je značka &amp;quot;fuzzy&amp;quot;; tá vyjadruje, že prekladateľ si prekladom tejto frázy nie je istý.&lt;br /&gt;
&lt;br /&gt;
Preložené (aj čiastočne preložené) súbory &amp;quot;po&amp;quot; posielajte správcovi slovenského prekladu. (Ak vám prekladací program automaticky vytvoril aj súbory &amp;quot;mo&amp;quot;, tie neposielajte.) Keďže všetky prekladové súbory sa volajú &amp;quot;sk.po&amp;quot;, dajte ich do podadresára s názvom balíka (tak ako je na stránke, napríklad &amp;quot;wesnoth-xyz&amp;quot;) a výsledok pošlite ako archív &amp;quot;zip&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Prekladá sa z anglického originálu. Je však možné si pomôcť už existujúcim prekladom do iného jazyka, ktorému prekladateľ rozumie lepšie, napr. nemčina, francúzština, dokonca čestina.&lt;br /&gt;
&lt;br /&gt;
=== Rady pre prekladateľov ===&lt;br /&gt;
&lt;br /&gt;
* Ak máte veľký balík, alebo prekladáte pomalšie, pošlite raz za 2-3 týždne aj nedokončenú verziu prekladu. Po prvé, aby bolo jasné, že na tom ešte pracujete. Po druhé, ak sa po čase rozhodnete ukončiť prácu na tomto projekte (keďže je to dobrovoľná práca zadarmo, nemožno takémuto rozhodnutiu nič vyčítať), aj čiastočný preklad je lepší ako žiaden; niekto iný v ňom môže neskôr pokračovať.&lt;br /&gt;
* Ak neviete preložiť celý reťazec, nepreložte ho vôbec. Alebo ho označte ako nepresný (fuzzy), čím dáte najavo ostatným prekladateľom, že reťazec ešte treba skontrolovať. ''Preložený reťazec bez značky &amp;quot;fuzzy&amp;quot; znamená, že preklad je dokončený a správny; možno ho po vás už nikto neskontroluje a dostane sa priamo do hry.''&lt;br /&gt;
* Premenné v textoch, začínajúce znakom &amp;quot;$&amp;quot; sa neprekladajú: &amp;quot;Unknown scenario: '$scenario|'&amp;quot; -&amp;gt; &amp;quot;Neznáma scéna: '$scenario|'&amp;quot;.&lt;br /&gt;
* Je nutné zachovávať medzery na začiatkoch a koncoch reťazcov, rovnako ako v origináli. V programe poEdit je vhodné si zapnúť funkciu &amp;quot;zobraziť úvodzovky&amp;quot;, ktorá zobrazí úvodzovky okolo reťazcov, čím sa medzery zviditeľnia. Taktiež bodky na konci reťazcov musia byť zachované, aby vety dávali zmysel, ak sa v hre reťazce pospájajú dokopy. Bodky a čiarky deliace vety v rámci reťazca je možné si prispôsobiť ľubovoľne.&lt;br /&gt;
* Je nutné zachovávať všetky špeciálne formátovacie znaky, napr. &amp;quot;\n&amp;quot; (zalomenie riadku), alebo značky podobné ako v HTML, napr. &amp;lt;italic&amp;gt;.&lt;br /&gt;
* Reťazce obsahujúce znak ^ je nutné prekladať tak, že text pred ^ je len pomôcka ku kontextu a neprekladá sa (odstráni sa), prekladá sa len text za znakom ^. Napr. &amp;quot;female^elf&amp;quot; -&amp;gt; &amp;quot;elfka&amp;quot;, bez tejto pomôcky by to bol len &amp;quot;elf&amp;quot;.&lt;br /&gt;
* Niektoré ťažké názvy alebo často používané slová sú už definované v našom [[SlovakDictionary|slovníku]]. V prípade potreby sa môže prekladateľ obrátiť na správcu prekladu, aby vyriešil jazykovú otázku.&lt;br /&gt;
&lt;br /&gt;
== Návod pre testera ==&lt;br /&gt;
&lt;br /&gt;
Nemáme žiadneho &amp;quot;testera na plný úväzok&amp;quot;, ale ak hráte Wesnoth a chcete nás upozorniť na nejakú chybu v preklade, prosím prečítajte si nasledujúci text:&lt;br /&gt;
&lt;br /&gt;
Zaujíma nás preklad stabilnej '''verzie 1.10''', presnejšie najnovšej dostupnej verzie 1.10.x. &lt;br /&gt;
'''Ale pozor, vývoj tejto verzie sa už končí, preto pred začatím práce sa najprv kontaktujte s koordinátorom. Aby ste nerobili niečo zbytočne, čo sa už do vydania nedostane.'''&lt;br /&gt;
Akceptujeme zatiaľ aj preklady neoficiálnych balíkov pre stabilné verzie 1.8, 1.6 a 1.4. Preklady oficiálnych balíkov verzie 1.8 už sú nepoužiteľné, nové oficiálne vydanie z verzie 1.8 už pravdepodobne nebude. Preto by sa nové preklady nedostali k záujemcom, nebolo by možné ich nikde na oficiálnej stránke stiahnuť. Verzie 1.6, 1.4 a 1.2 sú už veľmi zastaralé.&lt;br /&gt;
&lt;br /&gt;
Prekladatelia sa sústredia na ''oficiálne'' časti hry; to znamená texty v samotnom programe, a 16 príbehov, ktoré sa automaticky nainštalujú spolu s hrou. Túto časť by sme radi dotiahli na 100%. Niekedy niekto preloží aj neoficiálny príbeh (ktorý si môžete stiahnuť z internetu priamo v hre pomocou menu &amp;quot;Doplnky&amp;quot;), ale tie sú pre nás menej dôležité.&lt;br /&gt;
&lt;br /&gt;
Aby bolo možné chybu jednoduchšie vyriešiť, uveďte prosím nasledujúce informácie:&lt;br /&gt;
* ktorú verziu hry ''Bitka o Wesnoth'' používate (vypisuje sa vľavo dole na úvodnej obrazovke)&lt;br /&gt;
* v ktorom príbehu a v ktorej scéne sa chyba vyskytla; prípadne či sa vyskytla v menu alebo v návode&lt;br /&gt;
* aký text sa zobrazil (čo najpresnejšie)&lt;br /&gt;
* aký text sa mal zobraziť a prečo (ak to nie je jasné zo samotného textu)&lt;br /&gt;
&lt;br /&gt;
Pozor! Za chybu sa ''nepovažuje'', ak sa nejaký text namiesto slovenčiny zobrazí v angličtine.&lt;br /&gt;
To zvyčajne znamená, že daný text jednoducho nebol preložený, pretože nestíhame prekladať všetko; o tomto vieme aj bez upozorňovania ;-)&lt;br /&gt;
&lt;br /&gt;
Dôležité sú pre nás chyby v preložených textoch, napríklad gramatické chyby a preklepy.&lt;br /&gt;
Pri preklade dialógov z angličtiny veľmi ľahko vzniknú chyby v mužskom a ženskom rode.&lt;br /&gt;
Atď...&lt;br /&gt;
&lt;br /&gt;
[[Category:Translations]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SoC_Ideas_Whiteboard_Backend_Refactoring_2012&amp;diff=49180</id>
		<title>SoC Ideas Whiteboard Backend Refactoring 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SoC_Ideas_Whiteboard_Backend_Refactoring_2012&amp;diff=49180"/>
		<updated>2013-03-21T04:06:02Z</updated>

		<summary type="html">&lt;p&gt;Esr: Remove Subversion-specific terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:SoC2012Idea}}&lt;br /&gt;
= Description =&lt;br /&gt;
&amp;lt;h2&amp;gt;Whiteboard: Refactor the backend [1]&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Page for the idea: [[SoC Ideas Whiteboard Backend Refactoring 2012]]&lt;br /&gt;
&lt;br /&gt;
Improve the whiteboard's (the wesnoth action-planning system) backend code by refactoring the data structure which holds the planned actions. Also refactor the verification and mapbuilding processes by combining them, and use this single new process to cache as much data as possible to avoid redundant lookups. You can also propose other simplifications.&lt;br /&gt;
&lt;br /&gt;
Produce complete unit tests to cover all operations on the new planned action storage and the new combined mapbuilding/verification.&lt;br /&gt;
&lt;br /&gt;
Document this new backend, explaining your design approach and including all diagrams necessary for the reader's understanding.&lt;br /&gt;
&lt;br /&gt;
Finally, do exhaustive playtesting and bugfixing involving devs and community members to make sure the whiteboard is fully reliable.&lt;br /&gt;
&lt;br /&gt;
{{#dpl:&lt;br /&gt;
 |resultsheader=''There are %PAGES% submitted student proposals for this idea''&lt;br /&gt;
 |oneresultheader=''There is 1 student proposal for this idea''&lt;br /&gt;
 |suppresserrors=true&lt;br /&gt;
 |noresultsheader=''There are no student proposals for this idea''&lt;br /&gt;
 |category=Summer of Code 2012 Student Page&amp;amp;SoC Ideas Whiteboard Backend Refactoring 2012&lt;br /&gt;
 |notcategory=SoC 2012 Not Submitted To Google&lt;br /&gt;
 |include=#Description&lt;br /&gt;
 |nottitlematch=SoC2012_Template_of_Student_page&lt;br /&gt;
 |mode=userformat&lt;br /&gt;
 |format=,,&amp;lt;br/&amp;gt;See [[%PAGE%|%TITLE%]] for more information.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;,&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Additional Information=&lt;br /&gt;
&lt;br /&gt;
==Combining the mapbuilding and action verification==&lt;br /&gt;
The whiteboard planning system can show you things like possible enemy moves &amp;quot;in the future&amp;quot;, after you've moved your units to the planned positions. To achieve this, it builds an internal future state by taking the orders of the player and applying them to the game state in the correct order, a process we call &amp;quot;mapbuilding&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The issue here is that we also have a separate &amp;quot;verification&amp;quot; of said orders to make sure they are possible. This is used everytime the game state might have changed outside of the whiteboard's control, or whenever the player deletes one of his planned actions, and so on. For historical reasons this is separate from mapbuilding, which is a problem since we end up with a lot of duplicate code (for instance compare whiteboard/move.cpp line 369 and whiteboard/validate_visitor.cpp line 87 as of 2012-03-28 14:15:50 -0400, both do a unit map find to check for the unit's presence), and since they don't handle actions spread over multiple turns consistently.&lt;br /&gt;
&lt;br /&gt;
Another issue is that we often do a full search of the planned actions for various purposes, which is not optimal.&lt;br /&gt;
&lt;br /&gt;
The solution to both of those is to combine mapbuilding and verification in a single process, so that we basically validate actions every time we build the future state. We also want to take advantage that we're going over every planned action to cache some data, such as which hexes are planned moves destinations: this way we avoid going over the planned actions again when displaying the whiteboard's visual aids.&lt;br /&gt;
&lt;br /&gt;
Lastly we also have a &amp;quot;highlighting&amp;quot; process which identifies which planned actions should receive a visual highlight depending on the mouse position. A lot if not all of the information processed there should be instead cached inside the combined mapbuilding/validator.&lt;br /&gt;
&lt;br /&gt;
==Refactoring the actions container==&lt;br /&gt;
Right now the actions for each turn are held in a separate stl container, and we have an iterator front-end to make all of a player's actions accessible as one container. This makes for an overly complicated and wasteful backend. The objective here is to simplify it as much as possible and make it rock-solid.&lt;br /&gt;
&lt;br /&gt;
==Related refactoring concerns==&lt;br /&gt;
* ''Friend classes vs everything in the action classes'': We kind of have a mix of two approaches, one where the action object does the operations itself (mapbuilder calls the action's apply/remove_temp_modifier() ) and one where a friend class does all the work to keep the action classes smaller (validator is friend to all actions and I think it still accesses some of their fields directly). Consider whether moving completely to either approach makes sense.&lt;br /&gt;
&lt;br /&gt;
* ''Unit pointer recovery uniformization'': The whiteboard uses a mix of approaches to recover pointers to units that actions are related to. One that's very common in the rest of the game code is doing a unit map search on the hex the unit is supposed to be in (which we can't be certain of after any kind of game event took place, WML scenario code can erase and replace units at will). See for instance wb::move::apply_temp_modifier(). Another, more recent approach is to store and use the unit's underlying ID and use that to recover the unit pointer from the unit map. See wb::move::get_unit() for that approach. Leftovers of other approaches may exist. Evaluate which of the current approaches make the most sense, stress test it with unit tests, and uniformize unit access where possible.&lt;br /&gt;
&lt;br /&gt;
* ''boost::dynamic_pointer_cast vs simple numeric id'': we use dynamic_pointer_cast quite a bit, which is known to have quite an overhead. Our action class hierarchy is pretty small and is not gonna change a lot in the foreseeable future. Evaluate whether using some numeric type IDs such as wb::action::MOVE, wb::action::RECRUIT and so one combined with static pointer casts when appropriate would be better.&lt;br /&gt;
&lt;br /&gt;
==Playtesting==&lt;br /&gt;
&lt;br /&gt;
Past experience has shown that properly testing the whiteboard means testing:&lt;br /&gt;
* campaigns&lt;br /&gt;
* multiplayer scenarios vs the AI and vs players, with and without heavy WML scripting&lt;br /&gt;
* observers (can cause bugs and should be tested)&lt;br /&gt;
* 2v2 matches&lt;br /&gt;
&lt;br /&gt;
For proper playtesting you'll need to create several very simple scenarios that allow to quickly test all the possible planned actions, i.e. recruit, recall, move (including over several turns), attack, and eventually the &amp;quot;suppose dead&amp;quot; action if we re-enable it.&lt;br /&gt;
&lt;br /&gt;
You should at first do exhaustive tests by yourself up to simulating 2v2 matches with 4 local clients, and when you're confident the game is bug-free, organise matches with devs and community members to put the whiteboard's usability to the test, and to find the last, least obvious bugs.&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
&lt;br /&gt;
Good skills with the C++ stl, and boost shared pointers, are recommended. As is basic experience in writing unit tests. Prior Wesnoth multiplayer experience is a plus, but not essential.&lt;br /&gt;
&lt;br /&gt;
Since this project is very focused you're expected to have a pretty complete view of what you want to develop down to the most important class members, before GSoC starts. You're also expected to provide a realistic development calendar.&lt;br /&gt;
&lt;br /&gt;
Note that all development must be finished by the GSoC midterm evaluation, after which all the time will be reserved for documenting, playtesting and bugfixing.&lt;br /&gt;
&lt;br /&gt;
=Whom to ask about this=&lt;br /&gt;
&lt;br /&gt;
[[User:Gabba|Gabba]]&lt;br /&gt;
&lt;br /&gt;
gabba on irc. If I'm hard to reach you can also find my email in the game's source files (if you're gonna make the effort to find it, I can make the effort to read your mail ;) ).&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SoC2011_FishbaitHarry&amp;diff=49178</id>
		<title>SoC2011 FishbaitHarry</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SoC2011_FishbaitHarry&amp;diff=49178"/>
		<updated>2013-03-21T03:56:28Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical instance of &amp;quot;SVN&amp;quot; from mediawiki search to avoid false positives.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|FishbaitHarry |SoC_Ideas_LuaAI_2011}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;FishbaitHarry - Extending Lua AI support and implementing additional AI techniques&amp;lt;/h4&amp;gt;&lt;br /&gt;
As the first part of my work I would like to design and implement the extension to the Lua script interface, providing it with all of the AI support functions that might be needed. If that task is completed swiftly, I would like to move on to implementing some additional support functions, including interfaces to customizing and using some advanced AI algorithms, like Reinforcement Learning.&lt;br /&gt;
&lt;br /&gt;
The extent of work with additional support functions and the exact algorithms to be implemented would be based on research done during the first part of work, as I familliarise myself more with the whole ai used in Wesnoth. In the final product, I hope to make the Lua AI scripting both advanced and easy to use tool for both scenario developers and students who would like to use Wesnoth to test and compare AI techniques from scientific standpoint.&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
FishbaitHarry&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/fishbaitharry/1 SoC Application]&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==1) Basics==&lt;br /&gt;
'''1.1) Write a small introduction to yourself.'''&lt;br /&gt;
&lt;br /&gt;
I live in Poland, study in AGH University of Science and Technology in Cracow&lt;br /&gt;
&lt;br /&gt;
'''1.2) State your preferred email address.'''&lt;br /&gt;
&lt;br /&gt;
fishbaitharry@gmail.com&lt;br /&gt;
&lt;br /&gt;
'''1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
&lt;br /&gt;
FishbaitHarry&lt;br /&gt;
&lt;br /&gt;
'''1.4) Why do you want to participate in summer of code?'''&lt;br /&gt;
&lt;br /&gt;
To gain valuable coding experience and at the same time do something for the benefit of the humanity (as opposed to coding transactions for bank systems or similliar types of work).&lt;br /&gt;
&lt;br /&gt;
'''1.5) What are you studying, subject, level and school?'''&lt;br /&gt;
&lt;br /&gt;
I'm studying Computer Science at AGH University of Science and Technology in Cracow, Poland. I'm during my fourth year, I currently have an Engineer's Degree and next year I'll be working on my Master Engineer's Degree (equivalent to Master's Degree in most countries).&lt;br /&gt;
&lt;br /&gt;
'''1.6) What country are you from, at what time are you most likely to be able to join IRC?'''&lt;br /&gt;
&lt;br /&gt;
I live in Poland and that means I'm from UTC+01:00 area. Once the year at the university is finished I can be available at IRC at any time (for now it'll be mostly mornings and evenings).&lt;br /&gt;
&lt;br /&gt;
'''1.7) Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.'''&lt;br /&gt;
&lt;br /&gt;
The only vacation I plan for the summer periods is 16.07-31.07.&lt;br /&gt;
&lt;br /&gt;
==2) Experience==&lt;br /&gt;
'''2.1) What programs/software have you worked on before?'''&lt;br /&gt;
&lt;br /&gt;
At my university, I worked on more projects than I can count: starting with embedded systems, x86 assembler programs, flex/bison compilers, C applications, (...) ending with web services deployed on Google App Engine. For more notable achievements see below.&lt;br /&gt;
&lt;br /&gt;
'''2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
&lt;br /&gt;
Yes. Some of my bigger projects include semi-extreme programming an Environment for Benchamrking Machine Learning Algorithms (in Java) and coding a security management system for XtreemOS (a linux distribution designed for grids) during my Erasmus internship in Great Britain.&lt;br /&gt;
&lt;br /&gt;
'''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?'''&lt;br /&gt;
&lt;br /&gt;
It's my first time at GSoC.&lt;br /&gt;
&lt;br /&gt;
'''2.4) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
&lt;br /&gt;
As mentioned before, I worked with XtreemOS. I was doing plenty of research and coding regarding it's monitoring and security management systems, which I believe need much more work. :-)&lt;br /&gt;
&lt;br /&gt;
'''2.5) Gaming experience - Are you a gamer?'''&lt;br /&gt;
&lt;br /&gt;
I consider myself a gamer.&lt;br /&gt;
&lt;br /&gt;
'''2.5.1) What type of gamer are you?'''&lt;br /&gt;
&lt;br /&gt;
Competitive and ambitious.&lt;br /&gt;
&lt;br /&gt;
'''2.5.2) What type of games?'''&lt;br /&gt;
&lt;br /&gt;
Mostly strategy games, both computer ones and board games (including Warhammer). Then I play plenty of card games, both online card games and real collectible ones (like Magic: the Gathering). Also I love RPGs, both computer ones and pen&amp;amp;paper ones.&lt;br /&gt;
&lt;br /&gt;
'''2.5.3) What type of opponents do you prefer?'''&lt;br /&gt;
&lt;br /&gt;
Ones that can earn my respect and who have respect for me.&lt;br /&gt;
&lt;br /&gt;
'''2.5.4) Are you more interested in story or gameplay?'''&lt;br /&gt;
&lt;br /&gt;
Sometimes I want to challange my brain and choose one without a story, sometimes I just want to immerse myself in fantasy and then I choose games with a story.&lt;br /&gt;
&lt;br /&gt;
'''2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
&lt;br /&gt;
So far I spent like 10hours on &amp;quot;Battle for Wesnoth&amp;quot; campaign and I'm somewhere in the middle. I really like the singleplayer, but I hope I can get some of my friends to go multi with me.&lt;br /&gt;
&lt;br /&gt;
'''2.6) If you have contributed any patches to Wesnoth, please list them below.'''&lt;br /&gt;
&lt;br /&gt;
None, so far too busy at the university.&lt;br /&gt;
&lt;br /&gt;
==3) Communication skills==&lt;br /&gt;
'''3.1) Describe your fluency level in written English.'''&lt;br /&gt;
&lt;br /&gt;
I believe it's as fluent as it gets. By the way I got an &amp;quot;A&amp;quot; at CAE.&lt;br /&gt;
&lt;br /&gt;
'''3.2) What spoken languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
Polish and English. Plus I know plenty of German. &lt;br /&gt;
&lt;br /&gt;
'''3.3) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
&lt;br /&gt;
You mean &amp;quot;good for me&amp;quot; or &amp;quot;good for them&amp;quot;? :-D Jokes aside I believe I can get friendly with just about anyone.&lt;br /&gt;
&lt;br /&gt;
'''3.4) Do you give constructive advice?'''&lt;br /&gt;
&lt;br /&gt;
I follow the philosophy of always beeing there to give someone a fishing rod, but never a fish.&lt;br /&gt;
&lt;br /&gt;
'''3.5) Do you receive advice well?'''&lt;br /&gt;
&lt;br /&gt;
I greatly value constructive criticism and it's really really hard to make me angry.&lt;br /&gt;
&lt;br /&gt;
'''3.6) Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
&lt;br /&gt;
Yes, interacting with my mentors at the university gives plenty of opportunity to learn.&lt;br /&gt;
&lt;br /&gt;
'''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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want'''&lt;br /&gt;
&lt;br /&gt;
It depends on the task at hand, but I prefer the first way and occassionally I manage to write an &amp;quot;untouchable&amp;quot; piece of code (one that is immediately correct, optimized and compiles at the first go).&lt;br /&gt;
&lt;br /&gt;
==4) Project==&lt;br /&gt;
'''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?'''&lt;br /&gt;
&lt;br /&gt;
I chose the &amp;quot;Extend Wesnoth's Lua AI support and improve Wesnoth's AI&amp;quot; project and after doing the (more or less) simple task of completing Lua support, I wish to concentrate on improving the AI by using some of the techniques learnt at the university, making them customizable and easy to use.&lt;br /&gt;
&lt;br /&gt;
'''4.2) If you have invented your own project, please describe the project and the scope.'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''4.3) Why did you choose this project?'''&lt;br /&gt;
&lt;br /&gt;
At the university, we had several projects related to AI for games and learn a lot about AI in general, most of these use the scientific approach and many are more suited for scientific work than for real games, but I hope to use some handpicked techniques, get some great results and revolutionize the world (of games). :-)&lt;br /&gt;
&lt;br /&gt;
'''4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
 - from April 26 to May 23rd - Additional research on the existing AI implementation, including and concentrated on the Lua engine.&lt;br /&gt;
 - from May 23 to June 23 - implementing Lua support extensions&lt;br /&gt;
 - from June 24 to July 11 - research and prototyping of extra AI algorithms&lt;br /&gt;
 - from July 12 to July 15 - making sure everything is tidy and well documented&lt;br /&gt;
 - from July 16 to July 31 - vacation (summer camp with friends)&lt;br /&gt;
 - from August 1 to August 15 - implementing AI improvements&lt;br /&gt;
 - from August 16 to August 22 - buffer time in case of any setbacks&lt;br /&gt;
&lt;br /&gt;
'''4.5) Include as much technical detail about your implementation as you can'''&lt;br /&gt;
&lt;br /&gt;
During the first part of my work, I will add exisitng AI support functions to the lua engine (as in core.cpp) and register them with the other callbacks. In the second part of work, I hope to provide the interface with a set of functions for customizing and controlling (added seperately) learning mechanisms, so that a developer writing Lua code can ask the engine for things like moves suggested by several different engines/learning algorithms, compare them and choose one based on his own metrics. Instead of implementing the learning algorithms themselves, I would most likely make use of some of the open-source algorithms available and integrate them.&lt;br /&gt;
&lt;br /&gt;
'''4.6) What do you expect to gain from this project?'''&lt;br /&gt;
&lt;br /&gt;
I expect to gain plenty of experience, especially valuable considering I plan on working in the gaming industry. Moreover I hope to &amp;quot;make a difference&amp;quot; and I believe that doing some open-source work on a great game like this may contribute (if only a little) to the development of IT in general. :-)&lt;br /&gt;
&lt;br /&gt;
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
&lt;br /&gt;
I like the game and I value the idea of open software, so if only you'll like my work, I plan on improving my part of the Wesnoth project, or at least maintaining it if I'm very busy.&lt;br /&gt;
&lt;br /&gt;
==5) Practical considerations==&lt;br /&gt;
'''5.1) Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
&lt;br /&gt;
Sub&amp;amp;shy;&amp;amp;shy;version (used for all commits) - I worked at about 6 projects all using S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N.&lt;br /&gt;
C++ (language used for all the normal source code) - Yes, though most of my previous projects were wither C or Java.&lt;br /&gt;
STL, Boost, Sdl (C++ libraries used by Wesnoth) - Yes, although I only used them ocassionally.&lt;br /&gt;
Python (optional, mainly used for tools) - Only used it a couple of times, but after 4 years at my university I can code with pretty much anything (like: ruby, icon, lisp).&lt;br /&gt;
build environments (eg cmake/scons) - Yes, plenty of different ones. Written many makefiles in my life, but I compiled Wesnoth with scons.&lt;br /&gt;
WML (the wesnoth specific scenario language) - Not yet.&lt;br /&gt;
Lua (used in combination with WML to create scenarios) - Not yet, but I hope to.&lt;br /&gt;
&lt;br /&gt;
'''5.2) Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
&lt;br /&gt;
As for editor: gedit, netbeans, eclipse. (I like gedit because then programming feels so hardcore.) Other than that I used plenty of: s&amp;amp;shy;&amp;amp;shy;v&amp;amp;shy;&amp;amp;shy;n, make, latex, maven, hudson, trac, Dia. Ocasionally I use some MS Visual Studio 2008 and some Visual Paradigm.&lt;br /&gt;
&lt;br /&gt;
'''5.3) What programming languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
I wrote at least one application in: lisp, ruby, python, icon, matlab, C++, glsl and assembler. But I spent the most time in C and Java.&lt;br /&gt;
&lt;br /&gt;
'''5.4) Would you mind talking with your mentor on telephone / internet phone?'''&lt;br /&gt;
&lt;br /&gt;
No problem. (both on skype and on real phone, I'll give you my number later)&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SoC2011_Zippydaspinhead&amp;diff=49177</id>
		<title>SoC2011 Zippydaspinhead</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SoC2011_Zippydaspinhead&amp;diff=49177"/>
		<updated>2013-03-21T03:55:30Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical instance of &amp;quot;SVN&amp;quot; from mediawiki search to avoid false positives.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Zippydaspinhead|SoC Ideas Sprite Sheets2011}}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&amp;lt;h4&amp;gt;Jacob Regan - Consolidation of .PNG's into Sprite Sheets&amp;lt;/h4&amp;gt;&lt;br /&gt;
The goal is to create a logical system for ordering individual frames of animation into a single image file.  The implementation of this system has two major parts.  First, the code to implement those single image files needs to be developed and tested.  Secondly an easy way to manipulate, modify, and add new sprite sheets needs to be implemented.  To this end, I propose that each sprite sheet be arranged in a grid, with the rows each representing a different animation action (attack, idle, ect.) and each row representing a frame of the animation.&lt;br /&gt;
&lt;br /&gt;
==IRC==&lt;br /&gt;
Zippydaspinhead&lt;br /&gt;
&lt;br /&gt;
==SoC Application==&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/zippydaspinhead/1 Battle for Wesnoth - Google Summer of Code Application]&lt;br /&gt;
&lt;br /&gt;
=Part 1: Code implementation=&lt;br /&gt;
In order to use sprite sheets, there need to be several changes to the current code base.  The basic idea here to have each frame of the animation denoted by an ordered pair (x,y) that corresponds to the frame in the sprite sheet file.  x denotes the frame and y denotes what action the animation is showing.&lt;br /&gt;
&lt;br /&gt;
An example of the organization of a sprite sheet for an elven soldier is the following:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|Elven Soldier||1||2||3||4||5||6||7||8||ect.&lt;br /&gt;
|-&lt;br /&gt;
|Idle Frames||f||r||a||m||e||s|| ||g||o&lt;br /&gt;
|-&lt;br /&gt;
|Melee Attack||i||n|| ||h||e||r||e&lt;br /&gt;
|-&lt;br /&gt;
|Ranged Attack&lt;br /&gt;
|-&lt;br /&gt;
|Level Up&lt;br /&gt;
|-&lt;br /&gt;
|ect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Organization of the terrain files would be each row contains a terrain type and the sprites for the transitions like so.&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Grassland||Grassland2Grassland||Grassland2Castle||Grassland2Mountain||ect...&lt;br /&gt;
|-&lt;br /&gt;
|Castle||Castle2Castle||Castle2Mountain||ect....&lt;br /&gt;
|-&lt;br /&gt;
|Mountain||Mountain2Mountain||ect...&lt;br /&gt;
|-&lt;br /&gt;
|ect...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notice that this file will shrink in number of columns as it goes down each row.  This is explained simply since once the frame for a specific transition is in the file it needs not be repeated.  For example the Grassland to Mountain transition will be listed in the grassland row, so it has no need to be in the mountain row.&lt;br /&gt;
&lt;br /&gt;
In order to test the sprite sheets, the first step would be to develop a test bed for the sheets.  Using this test bed, animation will be played for each sprite sheets.  This allows testing of the animation code, as well as code that can later be used for the GUI as a tester.&lt;br /&gt;
&lt;br /&gt;
After the test bed has been completed the next step is to create a command line sprite sheet creater/converter.  This tool would accelerate and simplify the creation of the sheets themselves.&lt;br /&gt;
&lt;br /&gt;
Finally the code used to animate the sprite sheets needs to be integrated into the Wesnoth code base.  Testing and streamlining then to follow.&lt;br /&gt;
&lt;br /&gt;
=Part 2: GUI sprite sheet modification (Or as I want to call it &amp;quot;Sprite-er&amp;quot;)=&lt;br /&gt;
Seeing as not all programmers are artists, and not all artists are programmers, a command line interface for creating sprite sheets is not an ideal form for the general public.  The creation of a GUI interface to create and modify sprite sheets is necessary for the sanity of several people.  However, a good chunk of the code for such a tool will have already been written.  Using the test bed code and the command line sprite sheet code from above, I will create a small and simple tool for the creation of sprite sheets in a visual manner.  The user will be able to add rows for different animations, frames to those rows to extend animations.  Artists can create the frames in seperate .PNG's and load them into the GUI tool as frames.  I hope to also be able to allow artists to use the GUI tool to load in a whole sprite sheet and just separate frames for the game if the artist prefers to work on an animation in a single file. &lt;br /&gt;
&lt;br /&gt;
The goal of this GUI is to be very easy to use.  In my opinion, someone with the patience to make and prefect the art work needed for these animations shouldn't have to slog through a lot of code or learn to use a complicated tool in order to make a sprite sheet.&lt;br /&gt;
&lt;br /&gt;
=Timeline=&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Present-May 22||Familiarize myself with current code base, animation code, and current PNG data&lt;br /&gt;
|-&lt;br /&gt;
|May 23 - June 7||Create command line converter, convert PNG's into sprite sheets.&lt;br /&gt;
|-&lt;br /&gt;
|June 8 - July 11||Create test bed and test sprite sheets.  Implement code in Wesnoth code base. (June 9-13 productivity may be reduced for my brother's wedding)&lt;br /&gt;
|-&lt;br /&gt;
|July 12 - August 10||Using test bed and command line converter code, create GUI to create and modify sprite sheets.&lt;br /&gt;
|-&lt;br /&gt;
|August 11 - August 22||Clean and optimize code, write documentation. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
1) Basics&lt;br /&gt;
&lt;br /&gt;
1.1) Write a small introduction to yourself.&lt;br /&gt;
&lt;br /&gt;
My name is Jake Regan, I am a sophmore at Loras College in Dubuque, Iowa, majoring in Computer Information Technology - Science Track (Computer Science).  I live in Decorah IA, and plan on spending my time working on Wesnoth there.  I enjoy gaming (including Wesnoth) and plan to make it my career.  I hope to eventually open my own game studio, either by starting my own company or making a new branch to an existing one.&lt;br /&gt;
&lt;br /&gt;
1.2) State your preferred email address.&lt;br /&gt;
&lt;br /&gt;
zippydaspinhead@gmail.com - seeing as this is my homepage for my browser I check it almost everytime I open my browser.&lt;br /&gt;
&lt;br /&gt;
Alternate (checked almost if not as often as my gmail account) - jacob.regan@loras.edu&lt;br /&gt;
&lt;br /&gt;
1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&lt;br /&gt;
&lt;br /&gt;
zippydaspinhead&lt;br /&gt;
&lt;br /&gt;
1.4) Why do you want to participate in summer of code?&lt;br /&gt;
&lt;br /&gt;
I feel that it is a good opportunity to work on a real life project enjoyed by many around the world.  I have been playing Wesnoth for years, and have always enjoyed it.  The idea of contributing to the project, and the pride that goes with that is attractive to me.  Not to mention that being a part of the GSoC is both profitable and is a great networking opportunity.&lt;br /&gt;
&lt;br /&gt;
1.5) What are you studying, subject, level and school?&lt;br /&gt;
&lt;br /&gt;
I am majoring in Computer Information Technology - Science Track at Loras College in Dubuque IA.  I am finishing up my Sophmore year, on track to graduate a semester early (Dec 2012)&lt;br /&gt;
&lt;br /&gt;
1.6) What country are you from, at what time are you most likely to be able to join IRC?&lt;br /&gt;
&lt;br /&gt;
USA - probably be on from 8:00 AM to 5 or 6 PM Central time (-6:00)&lt;br /&gt;
&lt;br /&gt;
1.7) Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.&lt;br /&gt;
&lt;br /&gt;
The only thing I have planned currently is my brother's wedding on June 11th.  It is noted in the timeline above.&lt;br /&gt;
&lt;br /&gt;
2) Experience&lt;br /&gt;
&lt;br /&gt;
2.1) What programs/software have you worked on before?&lt;br /&gt;
&lt;br /&gt;
Mostly just in class programs.&lt;br /&gt;
&lt;br /&gt;
2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&lt;br /&gt;
&lt;br /&gt;
Yes, I have had several group projects in my classes.&lt;br /&gt;
&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
No this is my first attempt at the program.&lt;br /&gt;
&lt;br /&gt;
2.4) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&lt;br /&gt;
&lt;br /&gt;
No previous open source experience.&lt;br /&gt;
&lt;br /&gt;
2.5) Gaming experience - Are you a gamer?&lt;br /&gt;
&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
2.5.1) What type of gamer are you?&lt;br /&gt;
&lt;br /&gt;
I would consider myself a fairly hardcore gamer.  I generally play at least once a day, though lately I haven't had a lot of time to.&lt;br /&gt;
&lt;br /&gt;
2.5.2) What type of games?&lt;br /&gt;
&lt;br /&gt;
I primarily play FPS games (Halo, Call of Duty), but I play several genres.  Probably my second favorite genre after FPS's are strategy games such as Wesnoth or StarCraft and the like.&lt;br /&gt;
&lt;br /&gt;
2.5.3) What type of opponents do you prefer?&lt;br /&gt;
&lt;br /&gt;
When playing human opponents I prefer those who do unorthodox things.  I find that I generally am able to counter these opponents.  I may not get the best score in a game, but I often keep the best opponent from getting a high score in the process.  When playing a computer opponent I prefer them to be intelligent.  Too easy and the challenge is gone.  However if the opponent is challenging because they play smart, or switch strategies then the game becomes much more interesting.&lt;br /&gt;
&lt;br /&gt;
2.5.4) Are you more interested in story or gameplay?&lt;br /&gt;
&lt;br /&gt;
Both?  I feel that great games can bring both to the table in equal measure.  That being said I have been known to enjoy games that have very little in the story department that have great gameplay.  Such games to me are viewed in the same way as I view a special effects extravaganza of a movie.  I don't play them for the story I go to not pay attention and still have fun.&lt;br /&gt;
&lt;br /&gt;
2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
&lt;br /&gt;
I have played Wesnoth since my brother introduced me to it when I was in high school(I believe I started playing in 2008).  I generally lean towards singleplayer.&lt;br /&gt;
&lt;br /&gt;
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 S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N (during the evaluation period or earlier) please state so.&lt;br /&gt;
&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Communication skills&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Fluent in English (native speaker)&lt;br /&gt;
&lt;br /&gt;
3.2) What spoken languages are you fluent in?&lt;br /&gt;
&lt;br /&gt;
Just English&lt;br /&gt;
&lt;br /&gt;
3.3) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&lt;br /&gt;
&lt;br /&gt;
Yes, I generally am able to make friends.&lt;br /&gt;
&lt;br /&gt;
3.4) Do you give constructive advice?&lt;br /&gt;
&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
3.5) Do you receive advice well?&lt;br /&gt;
&lt;br /&gt;
Yes, I try to take it seriously as someone telling me how I can improve myself or my work.&lt;br /&gt;
&lt;br /&gt;
3.6) Are you good at sorting useful criticisms from useless ones?&lt;br /&gt;
&lt;br /&gt;
I believe so.&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project wants?&lt;br /&gt;
&lt;br /&gt;
I like to have a good idea of what I will be doing, but I also believe that that can only get you so far.  As such I am not afraid to take a risk when coding something.  If it isn't satisfactory, then I still gain experience and learn more about what is needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Project&lt;br /&gt;
&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
Yes, I want to allow Wesnoth to support sprite sheets.  I want to concentrate on the code necessary to allow this.  While the GUI sprite sheet tool is important, it is useless without the supporting code in the Wesnoth code base.&lt;br /&gt;
&lt;br /&gt;
4.2) If you have invented your own project, please describe the project and the scope.&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
4.3) Why did you choose this project?&lt;br /&gt;
&lt;br /&gt;
I choose this project because one of the most interesting classes I have taken so far in my schooling has been Computer Graphics.  While the focus was on OpenGL and 3D graphics, the whole field interests me.  I feel like being involved in this project would be a learning opportunity as well as a fun expansion on my current experience.&lt;br /&gt;
&lt;br /&gt;
4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See above timeline&lt;br /&gt;
&lt;br /&gt;
4.5) Include as much technical detail about your implementation as you can&lt;br /&gt;
&lt;br /&gt;
See above proposal&lt;br /&gt;
&lt;br /&gt;
4.6) What do you expect to gain from this project?&lt;br /&gt;
&lt;br /&gt;
I am hoping to gain quite a lot from this project.  I want to be able to contribute to one of my favorite games, be able to gain experience in game development, and gain experience for the future.&lt;br /&gt;
&lt;br /&gt;
4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&lt;br /&gt;
&lt;br /&gt;
Nothing, because I would probably stick around anyway. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Practical considerations&lt;br /&gt;
&lt;br /&gt;
5.1) Are you familiar with any of the following tools or languages?&lt;br /&gt;
&lt;br /&gt;
I am familiar with C++ &lt;br /&gt;
&lt;br /&gt;
5.2) Which tools do you normally use for development? Why do you use them?&lt;br /&gt;
&lt;br /&gt;
Generally I use Visual Studio 2008 and Eclipse.  Both are used currently since many of my classes are taught with Visual Studio.&lt;br /&gt;
&lt;br /&gt;
5.3) What programming languages are you fluent in?&lt;br /&gt;
&lt;br /&gt;
Fluent in C++ with some Java experience.  Also experience with PHP.&lt;br /&gt;
&lt;br /&gt;
5.4) Would you mind talking with your mentor on telephone / internet phone? &lt;br /&gt;
&lt;br /&gt;
That is not a problem with me.  Either my phone or Skype or another internet phone system works for me.&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WesnothBinariesLinux&amp;diff=49176</id>
		<title>WesnothBinariesLinux</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WesnothBinariesLinux&amp;diff=49176"/>
		<updated>2013-03-21T03:53:27Z</updated>

		<summary type="html">&lt;p&gt;Esr: The Gentoo development builds haven't been maintained since 2009.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Not all Distributions are always at the state of the current release. If you want to be sure to have the current version, please get the sources and compile it yourself.&lt;br /&gt;
&lt;br /&gt;
== Arch Linux ==&lt;br /&gt;
* For the official pkg from [extra]: &amp;lt;code&amp;gt;pacman -S wesnoth&amp;lt;/code&amp;gt; &lt;br /&gt;
* There's a wesnoth-devel package for development releases in [http://aur.archlinux.org/packages.php?ID=9600 AUR].&lt;br /&gt;
&lt;br /&gt;
== Debian ==&lt;br /&gt;
* &amp;lt;code&amp;gt;aptitude install wesnoth&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;(use &amp;lt;code&amp;gt;wesnoth-all&amp;lt;/code&amp;gt; if you want to pull in all the campaigns and the editor, too)&lt;br /&gt;
* [http://packages.debian.org/wesnoth Official packages] including the development releases. You need to explicitly request which branch version of wesnoth you want, e.g. [http://packages.debian.org/wesnoth-1.8 1.8] (stable) or [http://packages.debian.org/wesnoth-1.10 1.10] (development)&lt;br /&gt;
* [http://backports-master.debian.org/ backports.debian.org] offers the stable wesnoth releases for Debian stable, see http://wiki.debian.org/Backports for more informations.&lt;br /&gt;
&lt;br /&gt;
===International language support===&lt;br /&gt;
Debian does not come with all locales. If you can't choose your language, you need to add locale for your lang.&lt;br /&gt;
see man locale.gen for more info.&lt;br /&gt;
quick guide for lenny: uncomment locales you want in /etc/locale.gen, then as root run &amp;quot;locale-gen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
If you want to play with the repository version directly you may have to compile it yourself. See [http://www.wesnoth.org/wiki/CompilingWesnoth Compiling Wesnoth].&lt;br /&gt;
&lt;br /&gt;
'''To install the dependencies:'''&lt;br /&gt;
&lt;br /&gt;
You can use a neat trick: Use the Build-Dependencies of the Debian package.&lt;br /&gt;
&lt;br /&gt;
Just do an &amp;lt;code&amp;gt;aptitude build-dep wesnoth&amp;lt;/code&amp;gt;. That will pull in most you need.&lt;br /&gt;
&lt;br /&gt;
'''To compile it:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
If you have already installed an older version of wesnoth, uninstall it by:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;aptitude purge wesnoth&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this will not remove downloaded data or savegames which are stored in your home directory in the folder &amp;lt;code&amp;gt;.wesnoth&amp;lt;/code&amp;gt;. From this point on you can simply follow the advices from the [http://www.wesnoth.org/wiki/CompilingWesnoth Compiling Wesnoth] page, no need to duplicate that informations in here. :)&lt;br /&gt;
&lt;br /&gt;
== Ubuntu ==&lt;br /&gt;
&lt;br /&gt;
[http://apt.ubuntu.com/p/wesnoth Click here] to install the latest version of the &amp;lt;code&amp;gt;wesnoth&amp;lt;/code&amp;gt; packaged for your release. Alternatively, search for &amp;quot;wesnoth&amp;quot; in the ''Ubuntu Software Center'' or use following command:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install wesnoth&lt;br /&gt;
&lt;br /&gt;
===Available Versions===&lt;br /&gt;
&lt;br /&gt;
Different releases of Ubuntu provide different versions of Wesnoth in their repositories. Often, this version will be older than the most current Wesnoth.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Release&lt;br /&gt;
! Packaged Version&lt;br /&gt;
|-&lt;br /&gt;
| 12.04 (Precise)&lt;br /&gt;
| 1.10&lt;br /&gt;
|-&lt;br /&gt;
| 11.10 (Oneiric)&lt;br /&gt;
| 1.8, and 1.10 with backports enabled&lt;br /&gt;
|-&lt;br /&gt;
| 11.04 (Natty)&lt;br /&gt;
| 1.8, and 1.10 with backports enabled&lt;br /&gt;
|-&lt;br /&gt;
| 10.04 LTS (Lucid)&lt;br /&gt;
| 1.6, and 1.10 with backports enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Repos with newer vesions===&lt;br /&gt;
&lt;br /&gt;
You can get the very latest version from the Software Center by enabling backports, [https://help.ubuntu.com/community/UbuntuBackports see here].&lt;br /&gt;
&lt;br /&gt;
[http://www.playdeb.net/software/Battle%20for%20Wesnoth PlayDeb usually has the latest version very promptly, as well.]&lt;br /&gt;
&lt;br /&gt;
If you are interested in the development version of wesnoth, you can get it from this PPA: [http://launchpad.net/~rhonda/+archive/wesnoth-devel ppa:rhonda/wesnoth-devel]&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
If you choose to build Wesnoth from source you should add the datadir flag to ''configure'' to ensure your installation puts the data in the same place as the official installation path:&lt;br /&gt;
&lt;br /&gt;
 cd /usr/src&lt;br /&gt;
 tar -xvjf wesnoth-1.x.x.tar.bz2&lt;br /&gt;
 cd wesnoth-1.x.x&lt;br /&gt;
 ./configure --datadir=/usr/share/games ...&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
Battle for Wesnoth is included in [http://koji.fedoraproject.org/koji/packageinfo?packageID=4097 Fedora].  The current version of Battle for Wesnoth is available for ppc, i386, and x86_64 architectures.  If you have problems with these packages, or other questions, please contact the Fedora maintainer [mailto:limb_AT_jcomserv.net Jon Ciesla].&lt;br /&gt;
&lt;br /&gt;
To install simply run:&lt;br /&gt;
* &amp;lt;code&amp;gt;yum install wesnoth wesnoth-tools wesnoth-server&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gentoo ==&lt;br /&gt;
For the stable release just type:&lt;br /&gt;
* &amp;lt;code&amp;gt;emerge wesnoth&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We don't currently know an emerge recipe for building the current development release.  There was one in former times, but that method bit-rotted in 2009.&lt;br /&gt;
&lt;br /&gt;
== Mandriva / Rosa ==&lt;br /&gt;
stable version: &amp;lt;code&amp;gt;urpmi wesnoth&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
development version: &amp;lt;code&amp;gt;urpmi wesnoth-unstable&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or use the GUI installer (in the Control Centre)&lt;br /&gt;
&lt;br /&gt;
To install latest Battle for Wesnoth version in currently supported Mandriva releases you need to enable the contrib backports repo: you can do this in the Mandriva Control Centre.&lt;br /&gt;
&lt;br /&gt;
== Pardus ==&lt;br /&gt;
* Run Package Manager, click Games section, select Wesnoth and click install.&lt;br /&gt;
* If you prefer to install Wesnoth from command line type &amp;lt;code&amp;gt;pisi it wesnoth&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Slackware ==&lt;br /&gt;
&lt;br /&gt;
* Slackbuilds for Battle for Wesnoth on Slackware 13 are for 1.6.5.  Developmental branch requires you to edit  a new line between 65 &amp;amp; 66 with './autogen.sh' in addition to changing the version number in the wesnoth.SlackBuild script.&lt;br /&gt;
&lt;br /&gt;
* Packages of Battle for Wesnoth for Slackware 12.2 can be downloaded from [http://slacky.eu/aadm/pkgs/index.php?sear=wesnoth&amp;amp;ver=6 slacky.eu] Latest Wesnoth build: 1.6.3&lt;br /&gt;
&lt;br /&gt;
* Building from source using SlackBuild script for Slackware 12.2 [http://slackbuilds.org/repository/12.2/games/wesnoth/ SlackBuilds.org] Latest Wesnoth build: 1.6.1 Note: Probably could be used for building newer 1.6.x version.&lt;br /&gt;
&lt;br /&gt;
Note: Depends on boost package (+ icu package if you use binary from slacky.eu), so it should be installed before installing Battle for Wesnoth binary or compiling from source.&lt;br /&gt;
&lt;br /&gt;
Install boost and icu binary from slacky.eu [http://slacky.eu/aadm/pkgs/index.php?sear=boost&amp;amp;ver=6 boost] [http://slacky.eu/aadm/pkgs/index.php?ver=6&amp;amp;sear=icu icu]&lt;br /&gt;
&lt;br /&gt;
Compile boost from source using SlackBuild script [http://slackbuilds.org/repository/12.2/development/boost/ SlackBuilds.org]&lt;br /&gt;
&lt;br /&gt;
* Installation:&lt;br /&gt;
&lt;br /&gt;
Binary package: Downloaded Battle for Wesnoth binary, boost and icu dependency install with installpkg command.&lt;br /&gt;
&lt;br /&gt;
For example: #installpkg wesnoth-1.6.3-i486-1sl.tgz boost-1.39.0-i686-1as.tgz icu-3.6-i486-2sl.tgz&lt;br /&gt;
&lt;br /&gt;
SlackBuild script: Consult SlackBuilds [http://slackbuilds.org/howto/ HOWTO]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opensuse.org OpenSUSE] ==&lt;br /&gt;
&lt;br /&gt;
These are builds of The Battle For Wesnoth for several versions of OpenSUSE, made for both i386 and x86_64 architecture.&lt;br /&gt;
&lt;br /&gt;
For OpenSUSE 11.3 and higher, you can either use the following One-Click-Install links below, or run the following at the command line (replacing XX.X with your OpenSUSE version):&lt;br /&gt;
 $ sudo zypper ar --refresh http://download.opensuse.org/repositories/games/openSUSE_XX.X/ Games&lt;br /&gt;
 $ sudo zypper ref&lt;br /&gt;
 $ sudo zypper in wesnoth&lt;br /&gt;
&lt;br /&gt;
For OpenSUSE 11.1 and 11.2, wesnoth can be installed from the command line using zypper (see below). It is strongly recommended that you enable the Evergreen repositories to provide any bug fixes and updates unavailable in the main repositories.&lt;br /&gt;
&lt;br /&gt;
If you have problems with these packages, or other questions, please contact [http://en.opensuse.org/User:Hhetter123 Holger Hetterich].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* OpenSUSE Tumbleweed (rolling OpenSUSE release) [http://software.opensuse.org/ymp/games/openSUSE_Tumbleweed/wesnoth.ymp?base=openSUSE%3ATumbleweed&amp;amp;query=wesnoth One-Click-Install]&lt;br /&gt;
* OpenSUSE Factory (preview of the next OpenSUSE release) [http://software.opensuse.org/ymp/games/openSUSE_Factory/wesnoth.ymp?base=openSUSE%3AFactory&amp;amp;query=wesnoth One-Click-Install]&lt;br /&gt;
* OpenSUSE 12.1 [http://software.opensuse.org/ymp/games/openSUSE_12.1/wesnoth.ymp?base=openSUSE%3A12.1&amp;amp;query=wesnoth One-Click-Install] v1.8.6&lt;br /&gt;
* OpenSUSE 11.4 [http://software.opensuse.org/ymp/games/openSUSE_11.4/wesnoth.ymp?base=openSUSE%3A11.4&amp;amp;query=wesnoth One-Click-Install] v1.8.6&lt;br /&gt;
* OpenSUSE 11.3 [http://software.opensuse.org/ymp/games/openSUSE_11.3/wesnoth.ymp?base=openSUSE%3A11.3&amp;amp;query=wesnoth One-Click-Install] v1.8.6&lt;br /&gt;
* OpenSUSE Evergreen 11.2, run the following for v1.4: &lt;br /&gt;
 $ sudo zypper ar --refresh -r http://download.opensuse.org/evergreen/11.1/openSUSE:Evergreen:11.2.repo &lt;br /&gt;
 $ sudo zypper ref&lt;br /&gt;
 $ sudo zypper in wesnoth&lt;br /&gt;
* OpenSUSE Evergreen 11.1, run the following for v1.4: &lt;br /&gt;
 $ sudo zypper ar --refresh -r http://download.opensuse.org/evergreen/11.1/openSUSE:Evergreen:11.1.repo &lt;br /&gt;
 $ sudo zypper ref&lt;br /&gt;
 $ sudo zypper in wesnoth&lt;br /&gt;
&lt;br /&gt;
== Vine Linux ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;wesnoth&amp;quot; rpm package for &amp;quot;Vine Linux 5&amp;quot; is using VLGothic font.&lt;br /&gt;
&lt;br /&gt;
;Vine Linux 5.x&lt;br /&gt;
: VinePlus (plus category)&lt;br /&gt;
:* RPM package &amp;quot;wesnoth&amp;quot; is version 1.6.5.&lt;br /&gt;
:* RPM package &amp;quot;wesnoth147&amp;quot; is version 1.4.7.&lt;br /&gt;
;VineSeed (unstable)&lt;br /&gt;
:* RPM package &amp;quot;wesnoth&amp;quot; is version 1.8.x. always sync upstream!&lt;br /&gt;
:* RPM package &amp;quot;wesnoth16&amp;quot; is version 1.6.5.&lt;br /&gt;
&lt;br /&gt;
To install simply run:&lt;br /&gt;
* &amp;lt;code&amp;gt;apt-get install wesnoth&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Yoper Linux ==&lt;br /&gt;
All versions built for Yoper 2.2.0-6, although they should install on 2.1.&lt;br /&gt;
Please let kernowyon know via the Yoper forums if you get any problems&lt;br /&gt;
Latest 1.0.2 version&lt;br /&gt;
* http://yoperstuff.kernowyon.org.uk/rpms/wesnoth-1.0.2-1.i686.rpm&lt;br /&gt;
1.0.1 version&lt;br /&gt;
* http://yoperstuff.kernowyon.org.uk/rpms/wesnoth-1.0-1.i686.rpm&lt;br /&gt;
Earlier version&lt;br /&gt;
*http://yoperstuff.kernowyon.org.uk/rpms/wesnoth-0.9.7-1.i686.rpm&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [http://ftp.osuosl.org/pub/manulix/wesnoth-bin-powerpc/ GNU/Linux PowerPC binaries]&lt;br /&gt;
* [http://rpmfind.net/linux/rpm2html/search.php?query=wesnoth Search RPMs]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[CompilingWesnoth]]&lt;br /&gt;
* [[Download]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Building and Installing]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SoC_Ideas_Addon_Server_2012&amp;diff=49175</id>
		<title>SoC Ideas Addon Server 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SoC_Ideas_Addon_Server_2012&amp;diff=49175"/>
		<updated>2013-03-21T03:48:33Z</updated>

		<summary type="html">&lt;p&gt;Esr: Remove Subversion-specific terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:SoC2012Idea}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h2&amp;gt;Addon Server [1]&amp;lt;/h2&amp;gt;&lt;br /&gt;
Page for the idea: [[SoC Ideas Addon Server 2012]]&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to write a new addon server for Wesnoth from&lt;br /&gt;
scratch.&lt;br /&gt;
&lt;br /&gt;
{{#dpl:&lt;br /&gt;
 |resultsheader=''There are %PAGES% submitted student proposals for this idea''&lt;br /&gt;
 |oneresultheader=''There is 1 submitted student proposal for this idea''&lt;br /&gt;
 |suppresserrors=true&lt;br /&gt;
 |noresultsheader=''There are no submitted student proposals for this idea''&lt;br /&gt;
 |category=Summer of Code 2012 Student Page&amp;amp;SoC Ideas Addon Server 2012&lt;br /&gt;
 |notcategory=SoC 2012 Not Submitted To Google&lt;br /&gt;
 |include=#Description&lt;br /&gt;
 |nottitlematch=SoC2012_Template_of_Student_page&lt;br /&gt;
 |mode=userformat&lt;br /&gt;
 |format=,,&amp;lt;br/&amp;gt;See [[%PAGE%|%TITLE%]] for more information.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;,&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Additional Information=&lt;br /&gt;
&lt;br /&gt;
The goal is to first help to finish the specifications of the new addon&lt;br /&gt;
server (A preliminary version is available in our repository as a LaTeX&lt;br /&gt;
document, PDF available upon request).&lt;br /&gt;
&lt;br /&gt;
Once the specifications are done the server can be designed and implemented.&lt;br /&gt;
&lt;br /&gt;
=Whom to ask about this=&lt;br /&gt;
Mordante on irc&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SoC2012_SocialNetworkIntegration&amp;diff=49174</id>
		<title>SoC2012 SocialNetworkIntegration</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SoC2012_SocialNetworkIntegration&amp;diff=49174"/>
		<updated>2013-03-21T03:47:36Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical instance of &amp;quot;SVN&amp;quot; from mediawiki search to avoid false positives.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2012Student}}&lt;br /&gt;
[[Category:SoC_Ideas_Your_Own_Ideas2012]]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Angel Guevara - Social Network Integration with Battle for Wesnoth&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wesnoth users will be given the option to integrate their forums accounts with their social networks permitting the game to send information to their networks about their games, profile and replays to games they played. This integration will be customizable and optional.&lt;br /&gt;
&lt;br /&gt;
=Achievements or no achievements=&lt;br /&gt;
&lt;br /&gt;
The Wesnoth community doesn't like the idea of an achievement system so its optional to create it or not for this idea. Even if created it can be a very simple achievement system that doesn't encourage rivalry. Something like &amp;quot;Faryshta killed a Yeti on The Rise of Wesnoth campaign&amp;quot;, &amp;quot;Espreon finished Dead Waters campaign&amp;quot; or &amp;quot;Soliton started his 100th multiplayer game&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Without an achievement system another ideas can be shared among social networks like &amp;quot;Soliton and Espreon just started a multiplayer game&amp;quot;, &amp;quot;ShadowMaster have updated a new version of Invasion from the Unknown&amp;quot;, &amp;quot;User profile: The player faryshta is a defensive leader and prefers to attack at night&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Customization=&lt;br /&gt;
&lt;br /&gt;
Each player will be able to access a page where they can decide which information be passed to their social networks by symply clicking on checkboxes.&lt;br /&gt;
&lt;br /&gt;
They will also be able to edit some default strings, choosing an avatar, etc..&lt;br /&gt;
&lt;br /&gt;
=Socialization=&lt;br /&gt;
&lt;br /&gt;
This will allow users to get in touch with other players outside the multi player server, will also help people spreading the game to their friends and contacts. This can be specially useful when the game goes mobile.&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
Faryshta&lt;br /&gt;
=SoC Application=&lt;br /&gt;
Submitted to google (withdrawn)&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
&lt;br /&gt;
1) Basics&lt;br /&gt;
&lt;br /&gt;
1.1) Write a small introduction to yourself.&lt;br /&gt;
&lt;br /&gt;
My name is Angel Guevara I am a programmer and a fan of Wesnoth which is my favourite game.&lt;br /&gt;
&lt;br /&gt;
1.2) State your preferred email address.&lt;br /&gt;
&lt;br /&gt;
angeldelcaos@gmail.com&lt;br /&gt;
&lt;br /&gt;
1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&lt;br /&gt;
&lt;br /&gt;
Faryshta&lt;br /&gt;
&lt;br /&gt;
1.4) Why do you want to participate in summer of code?&lt;br /&gt;
&lt;br /&gt;
This is a very good opportunity to kill several birds with one shoot. I will be able to help one of my favourite games, I hope to gain some job recognition and a way to know more people on this field of development.&lt;br /&gt;
&lt;br /&gt;
1.5) What are you studying, subject, level and school?&lt;br /&gt;
&lt;br /&gt;
I study mathematics at UNAM México and have 5 years experience in programming.&lt;br /&gt;
&lt;br /&gt;
1.6) What country are you from, at what time are you most likely to be able to join IRC?&lt;br /&gt;
&lt;br /&gt;
México 21:00 to 3:00 GTM.&lt;br /&gt;
&lt;br /&gt;
1.7) Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.&lt;br /&gt;
&lt;br /&gt;
I have a part time job only.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Experience&lt;br /&gt;
&lt;br /&gt;
2.1) What programs/software have you worked on before?&lt;br /&gt;
&lt;br /&gt;
Several programming languages like php, c++, java, javascript, bash, html, css, sql and frameworks like drupal, raintpl, bootstraps, lesscss, mPDF, eclipse, jQuery, extJS.&lt;br /&gt;
&lt;br /&gt;
2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&lt;br /&gt;
&lt;br /&gt;
Yes I am used to work in teams mostly using S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N.&lt;br /&gt;
&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
nO.&lt;br /&gt;
&lt;br /&gt;
2.4) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&lt;br /&gt;
&lt;br /&gt;
MathCarousel is a project I made myself.&lt;br /&gt;
&lt;br /&gt;
2.5) Gaming experience - Are you a gamer?&lt;br /&gt;
&lt;br /&gt;
Yes a very enthusiastic gamer.&lt;br /&gt;
&lt;br /&gt;
2.5.1) What type of gamer are you?&lt;br /&gt;
&lt;br /&gt;
Mostly strategy and combat old school.&lt;br /&gt;
&lt;br /&gt;
2.5.2) What type of games?&lt;br /&gt;
&lt;br /&gt;
Titles like Age of Empires, FreeCivilizations, Wesnoth, King of Fighters, Fatal Fury, Warmux.&lt;br /&gt;
&lt;br /&gt;
2.5.3) What type of opponents do you prefer?&lt;br /&gt;
&lt;br /&gt;
Educated and calculators who work on strategy rather than impulse.&lt;br /&gt;
&lt;br /&gt;
2.5.4) Are you more interested in story or gameplay?&lt;br /&gt;
&lt;br /&gt;
Both but a good story will keep me hooked like it did with King of Fighters and Wesnoth.&lt;br /&gt;
&lt;br /&gt;
2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
&lt;br /&gt;
Yes during at least 4 years. I use both single player and multiplayer spending similar amounts of time on each.&lt;br /&gt;
&lt;br /&gt;
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 S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N (during the evaluation period or earlier) please state so.&lt;br /&gt;
&lt;br /&gt;
Mostly helping translation to spanish helping Espreon and ShadowMaster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Communication skills&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Very fluent with good grammar better than most natives.&lt;br /&gt;
&lt;br /&gt;
3.2) What spoken languages are you fluent in?&lt;br /&gt;
&lt;br /&gt;
English and spanish.&lt;br /&gt;
&lt;br /&gt;
3.3) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&lt;br /&gt;
&lt;br /&gt;
Yes I am. I have used the MP server for several years.&lt;br /&gt;
&lt;br /&gt;
3.4) Do you give constructive advice?&lt;br /&gt;
&lt;br /&gt;
Mostly I suppose I do.&lt;br /&gt;
&lt;br /&gt;
3.5) Do you receive advice well?&lt;br /&gt;
&lt;br /&gt;
Yes depending on the education of the adviser. &lt;br /&gt;
&lt;br /&gt;
3.6) Are you good at sorting useful criticisms from useless ones?&lt;br /&gt;
&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want&lt;br /&gt;
&lt;br /&gt;
I rather not start coding until I have a general idea of the final product and the best ways to achieve it.&lt;br /&gt;
&lt;br /&gt;
4) Project&lt;br /&gt;
&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
No&lt;br /&gt;
&lt;br /&gt;
4.2) If you have invented your own project, please describe the project and the scope.&lt;br /&gt;
&lt;br /&gt;
Social Network integration for the game.&lt;br /&gt;
&lt;br /&gt;
4.3) Why did you choose this project?&lt;br /&gt;
&lt;br /&gt;
Seems to be the latest tendency for multiplayers.&lt;br /&gt;
&lt;br /&gt;
4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
First week will have a list of all the features to implement. Second and third week creating a database and give the users the option to integrate their forums accounts with their social networks. Forth and fifth week implementing the features. Sixth week and ahead to debugging and testing.&lt;br /&gt;
&lt;br /&gt;
4.5) Include as much technical detail about your implementation as you can&lt;br /&gt;
&lt;br /&gt;
SQL database of user social networks and customizations. php to handle the integrations and creating game-listeners for events. c++ coding to send http/post requests to game-listeners. php/HTML customization pages.&lt;br /&gt;
&lt;br /&gt;
4.6) What do you expect to gain from this project?&lt;br /&gt;
&lt;br /&gt;
Laboral recognition, experience and helping this opensource project.&lt;br /&gt;
&lt;br /&gt;
4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&lt;br /&gt;
&lt;br /&gt;
I will stay and have been staying for a long while.&lt;br /&gt;
&lt;br /&gt;
5) Practical considerations&lt;br /&gt;
&lt;br /&gt;
5.1) Are you familiar with any of the following tools or languages?&lt;br /&gt;
Sub&amp;amp;shy;&amp;amp;shy;version (used for all commits)&lt;br /&gt;
&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
Regular&lt;br /&gt;
&lt;br /&gt;
build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
No&lt;br /&gt;
&lt;br /&gt;
WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
Yes, very much.&lt;br /&gt;
&lt;br /&gt;
Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
5.2) Which tools do you normally use for development? Why do you use them?&lt;br /&gt;
&lt;br /&gt;
Vim. Its simple, quick and allows me to modify anything I want.&lt;br /&gt;
&lt;br /&gt;
5.3) What programming languages are you fluent in?&lt;br /&gt;
&lt;br /&gt;
php, javascript, sql, html, css and c++.&lt;br /&gt;
&lt;br /&gt;
5.4) 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.&lt;br /&gt;
&lt;br /&gt;
Yes, will provide the number when necessary.&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Disruption_Simple_Content_Manager&amp;diff=49173</id>
		<title>Disruption Simple Content Manager</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Disruption_Simple_Content_Manager&amp;diff=49173"/>
		<updated>2013-03-21T03:45:59Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical references to &amp;quot;SVN&amp;quot; from the wiki search function&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Disruption|SoC_Ideas_Simple_Content_Manager}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Disruption - Simple Content Manager&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brief:&lt;br /&gt;
I want to write a Java Simple Content Manager. The most important thing about it would always be simplicity in terms of not requiring technical knowledge at all, so potential contributors in areas like graphics, music, or other artwork could join the community and help with ease.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea is developing the project in a Java environment, as java is supported in most OS(Apart from Mac, Unix and Windows, it can also be used in most mobile platforms and systems).&lt;br /&gt;
Another reason for choosing java is that is very easy to design a cute GUI that don't scares the user away, and also the GUI adapts its “look and feel” to the system it is running in, so the user sees it like another of his programs, rather than an external, strange tool.&lt;br /&gt;
In terms of programming, as described before, the idea is taking a MVC approach, implementing first the view, and preparing then a modular controller for all the functionality needed.&lt;br /&gt;
As Java has JUnit tests and a powerful debugger, it's easy to track down bugs and fix them, as well and check that every part works correctly and incrementally, so you can be sure that a new functionality doesn't break an older one(As you can add tests while you develop, so you always execute 100% of the tests).&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
Disruption&lt;br /&gt;
&lt;br /&gt;
=Submitted Patches=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Enemy leaders never appearing on status table&amp;lt;/h4&amp;gt;&lt;br /&gt;
Bug URL: https://gna.org/bugs/?17985&lt;br /&gt;
Patch URL: https://gna.org/patch/index.php?2623&lt;br /&gt;
&lt;br /&gt;
Brief about the bug: The check done when showing leaders on status table only checked if our side &amp;quot;knows&amp;quot; the leader's side. As the 'know' function always return false for enemies on fogged maps, it was impossible for enemy leaders to appear on status table on fog/shroud maps.&lt;br /&gt;
&lt;br /&gt;
Brief about the solution: The solution was to add a new boolean check, testing if the leader's position was currently fogged/shrouded. If enemy leader is not on fogged hex, leader is shown on table.&lt;br /&gt;
&lt;br /&gt;
=Application GUI Mockup=&lt;br /&gt;
&lt;br /&gt;
Here I show a mockup GUI for the Java Simple Content Manager application. It's not very &amp;quot;pretty&amp;quot; as it's intended to show the flow of actions throught the GUI rather than the final aspect, which will vary, maintaining the same functionality.&lt;br /&gt;
&lt;br /&gt;
==Main Window==&lt;br /&gt;
Window seen when the application is open.The main window offers 3 main options, checkout, update, and commit, that are the general options available for any versioning system. It also has a menu bar, with tabs for the configuration options.&lt;br /&gt;
&lt;br /&gt;
http://www.programarte.org/guimockup/main.png&lt;br /&gt;
&lt;br /&gt;
==Configuration Windows==&lt;br /&gt;
&lt;br /&gt;
There are two configuration windows, the account set up one, to insert the repository user/password data in order to be able to commit, and the folder set up, to specify the checkout folder.&lt;br /&gt;
&lt;br /&gt;
http://www.programarte.org/guimockup/accountSetUp.PNG&lt;br /&gt;
&lt;br /&gt;
http://www.programarte.org/guimockup/folderSetUp.PNG&lt;br /&gt;
&lt;br /&gt;
==Checkout Option==&lt;br /&gt;
&lt;br /&gt;
The checkout option checks if checkout if possible, and if possible it shows the progress window. If checkout is not possible, an informative dialog is showed.&lt;br /&gt;
&lt;br /&gt;
http://www.programarte.org/guimockup/checkoutProgress.png&lt;br /&gt;
&lt;br /&gt;
==Update Option==&lt;br /&gt;
&lt;br /&gt;
Like the checkout option, it checks if update is possible, and if possible it shows the progress window. If update is not possible, an informative dialog is showed.&lt;br /&gt;
&lt;br /&gt;
http://www.programarte.org/guimockup/updateProgress.png&lt;br /&gt;
&lt;br /&gt;
==Upload Contributions Option==&lt;br /&gt;
&lt;br /&gt;
The upload contributions option checks if checkout folder is up to date prior to going to the file selection view. The file selection view shows a file explorer with trunk on the left, and a file list on the left with the changed files preselected. The list can be modified by adding or taking files out&lt;br /&gt;
&lt;br /&gt;
http://www.programarte.org/guimockup/commitFirstPhase.png&lt;br /&gt;
&lt;br /&gt;
After the list is complete, the user can go on to the second phase, where the commit description is written.&lt;br /&gt;
&lt;br /&gt;
http://www.programarte.org/guimockup/commitSecondPhase.png&lt;br /&gt;
&lt;br /&gt;
When details are finally introduced, commit takes place, with details about it showed in a view.&lt;br /&gt;
&lt;br /&gt;
http://www.programarte.org/guimockup/commitLastPhase.png&lt;br /&gt;
&lt;br /&gt;
==GUI Mockup Jar==&lt;br /&gt;
&lt;br /&gt;
The gui mockup .jar can be downloaded from: http://www.programarte.org/guimockup/StandardJar.jar&lt;br /&gt;
&lt;br /&gt;
The gui mockup source code project(For JDeveloper) can be downloaded from: http://programarte.org/guimockup/SCM.rar&lt;br /&gt;
Even though the project is for JDeveloper, it contains normal .java files, so you should be able to explore the code from any interface, or directly using text editors like gedit, wordpad, text wrangler...&lt;br /&gt;
&lt;br /&gt;
The file explorer used for the mockup is a very inefficient version, so the .jar should be executed inside a directory with little content(That is, only a few folders or subfolders), as the file explorer goes recursively from the folder the .jar is placed getting as deep as possible and obtaining the full directory structure below the .jar(That is, if you place the .jar inside your main checkout directory, the file explorer will show Wesnoth's trunk content, although it will take a few seconds to load(I just tested it)).&lt;br /&gt;
&lt;br /&gt;
Rememeber that it is only intended to be a GUI Mockup to see the program's flow, so values entered in configuration windows, or in intermediate views such as the first or second views in the commit options are not stored. Checkout and Update options always work(that is, there are never checkout conflicts), and, of course, it doesn't really download anything at all.&lt;br /&gt;
&lt;br /&gt;
=Application Brief and Workflow=&lt;br /&gt;
Brief: The SMC will give users an easy-to-use program for checkout,update and commit operations, without requiring any S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N knowledge at all.&lt;br /&gt;
&lt;br /&gt;
Workflow:&lt;br /&gt;
&lt;br /&gt;
A)Checkout&lt;br /&gt;
: The checkout operation will be a standard trunk checkout operation, downloading the whole wesnoth source with a sole click into a specified folder.&lt;br /&gt;
: Workflow:&lt;br /&gt;
: * Check if directory for checkout is empty&lt;br /&gt;
: * If directory is not empty -&amp;gt; Check if directory is already a checkout.&lt;br /&gt;
: * If directory is a checkout -&amp;gt; Ask user if he wants to update, and if so, perform update.&lt;br /&gt;
: * If directory is not a checkout -&amp;gt; Tell the user that the selected checkout directory is not empty and not a wesnoth checkout, so he must choose another directory.&lt;br /&gt;
: * In case directory is empty -&amp;gt; Checkout trunk in selected folder.&lt;br /&gt;
&lt;br /&gt;
B)Update&lt;br /&gt;
&lt;br /&gt;
: The update operation will be a standard trunk update operation, downloading the new revisions into the checkout folder with a sole click.&lt;br /&gt;
: Workflow:&lt;br /&gt;
: * Check if checkout directory is empty&lt;br /&gt;
: * If directory is empty -&amp;gt; Tell user he has to checkout instead of update&lt;br /&gt;
: * If directory is not empty -&amp;gt; Check if directory is a checkout directory&lt;br /&gt;
: * If directory is not checkout directory -&amp;gt; Tell user that selected directory is not checkout directory, and ask user to change to an empty or checkout directory&lt;br /&gt;
: * If directory is checkout -&amp;gt; Check if current revision is last revision&lt;br /&gt;
: * If current revision is last revision -&amp;gt; Tell user no update is needed&lt;br /&gt;
: * If current revision is not last revision -&amp;gt; Check for conflicts&lt;br /&gt;
: * If conflicts appear -&amp;gt; Tell user about conflicts and check if merge is possible&lt;br /&gt;
: * If no conflicts appear -&amp;gt; Update to last revision.&lt;br /&gt;
&lt;br /&gt;
C)Upload&lt;br /&gt;
: The upload operation will work as a commit operation per se, showing the user a split view with a file browser to the left, and the detected files needing commiting to the right. From this view, user will be able to modify the commited files, in case he wants to commit only a few of them and not all.&lt;br /&gt;
: Workflow:&lt;br /&gt;
: * Check if checkout directory is empty&lt;br /&gt;
: * If directory is empty -&amp;gt; Tell user to configure his checkout directory to the checkout directory he has worked in.&lt;br /&gt;
: * If directory is not empty -&amp;gt; Check if directory is a checkout directory&lt;br /&gt;
: * If directory is not checkout directory -&amp;gt; Tell user that selected directory is not checkout directory, and ask user to change to an empty or checkout directory.&lt;br /&gt;
: * If directory is checkout directory -&amp;gt; Check if current revision is last revision&lt;br /&gt;
: * If current revision is not last revision -&amp;gt; Tell user that before commiting it's compulsory to update to the last revision.&lt;br /&gt;
: * If current revision is last revision -&amp;gt; Check if user credentials are set&lt;br /&gt;
: * If user credentials are not set -&amp;gt; Tell user to configure his account before commit.&lt;br /&gt;
: * If user credentials are set -&amp;gt; Show user a split view containing, in the left side, a file explorer for the checkout folder, and in the right side a list showing all the candidate files for commiting. In this view, user will be able to add to or erase files from the commit list. After the user is happy with the commit list, he can continue to the final commit phase&lt;br /&gt;
: * Check files in commitment list, erasing unchanged files from commitment list&lt;br /&gt;
: * Show user the final commit window, allowing him to write a description for the commit, and showing him the final list of files to be commited, with the options of commiting or going back.&lt;br /&gt;
: * If commit is selected -&amp;gt; Check again if revision has changed while selecting files.&lt;br /&gt;
: * If revision has changed during the file selection -&amp;gt; Tell user that revision changed and ask him to update before commiting.(Update can be done without closing commit window)&lt;br /&gt;
: * If current revision is last revision -&amp;gt; Perform commit&lt;br /&gt;
: * If back is selected -&amp;gt; Go back to the file selection screen so user can perform changes&lt;br /&gt;
&lt;br /&gt;
=IRC Discussions=&lt;br /&gt;
&lt;br /&gt;
This section is intended to hold useful IRC discussions in order to be able to have all the feedback obtained together for later use, or for other users to get ideas for new feedback.&lt;br /&gt;
&lt;br /&gt;
==thespaceinvader Feedback==&lt;br /&gt;
thespaceinvader: hrm...&lt;br /&gt;
&lt;br /&gt;
thespaceinvader: the major operations would be checkout and update, for me.  I rarely use any other S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N operations&lt;br /&gt;
&lt;br /&gt;
thespaceinvader: solving conflicting merges would be useful, too&lt;br /&gt;
&lt;br /&gt;
thespaceinvader: I suspect, also, that there are operations I ought to be doing that I don't - setting file types, for instance, is something I've never quite worked out how to do, and which I think I ought to do&lt;br /&gt;
&lt;br /&gt;
Disruption: setting file types?&lt;br /&gt;
&lt;br /&gt;
thespaceinvader: if it could also incorporate things like optipng and the various WML sanity checkers that would be useful&lt;br /&gt;
&lt;br /&gt;
thespaceinvader: yes&lt;br /&gt;
&lt;br /&gt;
thespaceinvader: I'm not really sure, it's something that i recall being told i ought to do a couple of years ago&lt;br /&gt;
&lt;br /&gt;
thespaceinvader: it's entirely possible I'm completely making it up&lt;br /&gt;
&lt;br /&gt;
Disruption: Oh, it's ok, I just don't seem to understand right now what you are refering to :)&lt;br /&gt;
&lt;br /&gt;
Disruption: thanks for your feedback :)&lt;br /&gt;
&lt;br /&gt;
= Timeline =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
| From || To || Description || Type&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 23 May || 22 August|| Full Project Duration || Compulsory&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 23 May || 30 May || Design SCM GUI and prepare Java framework || Compulsory&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 31 May || 13 June|| Implementation of S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N support for the SCM || Compulsory&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 14 June || 16 June || Time Buffer || Optional&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 17 June || 17 June || GUI callback configuration and set up || Compulsory&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 18 June || 18 June || Set up windows implementation || Compulsory&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 19 June || 30 June || Checkout operation implementation with conflict resolution || Compulsory&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 1 July || 11 July || Update operation implementation with conflict resolution || Compulsory&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 12 July || 22 July || Commit Operation implementation || Compulsory&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 23 July || 25 July || Time Buffer || Optional&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 26 July || 11 August || Implementation of GIT support for the SCM || Optional&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 12 August || 14 August || Time Buffer || Optional&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 15 August || 22 August || Final testing and polishing || Compulsory&amp;lt;br/&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Timeline is made thinking of the worst case. Main application should be finished by the 22 of July(From then, only GIT support and testing and polishing is left). &lt;br /&gt;
&lt;br /&gt;
GIT support is marked as optional because in case some other main functionality requires more time, it would take it from the GIT support time range. As there is a whole month from the end of the last main functionality(22 July) and the end of the GSoC(22 August), it should be more than enough to cope with any unexpected problems that could arise.&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
1) Basics&lt;br /&gt;
:1.1) Write a small introduction to yourself.&lt;br /&gt;
I'm both a gamer and a programmer. Finishing my University studies being only 23 years old I want to dedicate my life to the world of game programming.&lt;br /&gt;
:1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&lt;br /&gt;
Disruption&lt;br /&gt;
:1.4) Why do you want to participate in summer of code?&lt;br /&gt;
I think it's an interesting way of getting to know how big projects work, by directly participating in them.&lt;br /&gt;
:1.5) What are you studying, subject, level and school? &lt;br /&gt;
I'm finishing my studies on Computer Engineering, which is a 5-year career here in Spain.&lt;br /&gt;
:1.6) What country are you from, at what time are you most likely to be able to join IRC?&lt;br /&gt;
I'm from Spain, and in Summer I'm able to join IRC all day around from 9:00h to 23:00h GMT+1&lt;br /&gt;
:1.7) Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.&lt;br /&gt;
I don't have any other commitments nor will go on vacations.&lt;br /&gt;
&lt;br /&gt;
2) Experience&lt;br /&gt;
:2.1) What programs/software have you worked on before?&lt;br /&gt;
I have worked developing php/mysql webpages, as well as programs in C,C++, Java, Objective C(for Mac, and iOS), and many others.&lt;br /&gt;
I have used many IDEs, like Eclipse, Netbeans, JDeveloper, XCode, Bloodshed's DevCpp, and also Kate Editor for Linux environments(Which adds a console to the text editor so you can quickly compile and test) for it's simplicity and lightness.&lt;br /&gt;
:2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&lt;br /&gt;
As part of my University training I have had to develop software forming teams several times, following the standard procedure: elaborating diagrams, iterating using something like SCRUM, preparing all the design documents, documenting the code, etc.&lt;br /&gt;
One of the main projects developed in team was a frame for online flash game uploading, playing, and rating, such as what you can find in www.kongregate.com, using java implemented web services called through nuSoap and a php bridge to call them from flash, and also a test flash game which implemented all that with some level of playability.&lt;br /&gt;
: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?&lt;br /&gt;
No, I have never participated in GSoC.&lt;br /&gt;
:2.4) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&lt;br /&gt;
I have helped in some open source projects, such as kradview(A medical image visor) providing a few patches or gestas(A free web-based association management frame) as main developer. &lt;br /&gt;
:2.5) Gaming experience - Are you a gamer?&lt;br /&gt;
:2.5.1) What type of gamer are you?&lt;br /&gt;
I play a lot, but a game must have that little “something” that makes you play for a long time to hook me up. If not, I usually play a few minutes, and leave the game forever.&lt;br /&gt;
:2.5.2) What type of games? &lt;br /&gt;
I play any kind of games, wheter it's RPG, RTS, Turn-Based Strategy, Arcade, FPS, Graphic Adventure... I think all of them have pros and cons.&lt;br /&gt;
:2.5.3) What type of opponents do you prefer? &lt;br /&gt;
It's always better to play against other humans, but AI is useful to be able to play without network connection, or when nobody is available.&lt;br /&gt;
:2.5.4) Are you more interested in story or gameplay?&lt;br /&gt;
I think that the best is a good balance between them. A game with nice gameplay but awful story will make you feel like you are always doing the same, as the story doesn't really keep you playing. On the other hand, a game with a good story, but awful gameplay will lead to a bad playing experience due to it's frustrating play mode. Both ways the game end up unplayed after a while, which is just wrong.&lt;br /&gt;
:2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
I played Battle for Wesnoth when it was around version 1.24. I really enjoyed playing it, but due to my university studies being a bit overwhelming I had to stop playing. I loved both single and multiplayer modes, but at the moment I played multiplayer was very buggy(Connection was lost regularly, and multiplayer failed suddenly) so it was difficult to finish a game, and it ended up being somehow frustrating.&lt;br /&gt;
: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 S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N (during the evaluation period or earlier) please state so.&lt;br /&gt;
Info about submitted patches can be found in a specific section in this wiki page.&lt;br /&gt;
3) Communication skills&lt;br /&gt;
: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.&lt;br /&gt;
I can write English fluently.&lt;br /&gt;
:3.2) What spoken languages are you fluent in?&lt;br /&gt;
Spanish and English&lt;br /&gt;
:3.3) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&lt;br /&gt;
Yes. Some players are difficult to treat, mainly because they are actually children, or just have bad behaviour, but it's important to be able to separate manners from messages, so even if the player is being ill-manered you can understand the reasons behing it's complaints.&lt;br /&gt;
:3.4) Do you give constructive advice? &lt;br /&gt;
I think constructive advice is the ONLY advice possible. It's good to say what's wrong, but it's better if you say how'd you fix it. Saying that something's wrong or could be better is very easy, but doesn't usually help anyone.&lt;br /&gt;
:3.5) Do you receive advice well? &lt;br /&gt;
Receiving advice is the only way for improving or actually reaching a positive end, so, all advice is welcome.&lt;br /&gt;
:3.6) Are you good at sorting useful criticisms from useless ones?&lt;br /&gt;
All criticisms are “useful” in some way(Except the ones saying “This sucks” or similar). If the critic actually talks about a failure, thing that could improve, or something similar, it can always be refined so you get at least some ideas for future fixes/features.&lt;br /&gt;
: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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want&lt;br /&gt;
I'm very autonomous when developing, taking some decisions “on the fly” to shorten develop times, but only if the decision is not critical, or it can be easily reimplemented. For high-level or important decisions is always better to ask first, code after.&lt;br /&gt;
&lt;br /&gt;
4) Project&lt;br /&gt;
: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?&lt;br /&gt;
I chose the idea “Create a simple content manager frontend for non-technical users”.&lt;br /&gt;
I think it's a great idea to have a way for less-technical contributors to be able to collaborate.&lt;br /&gt;
:4.2) If you have invented your own project, please describe the project and the scope.&lt;br /&gt;
----&lt;br /&gt;
:4.3) Why did you choose this project?&lt;br /&gt;
It seems very interesting. I think that for an open source project, the fact of broadening the number of persons able to collaborate, in this case by simplifying the needed tool, is one of the most important things.&lt;br /&gt;
:4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&lt;br /&gt;
The development should be in a MVC way, so View and Controller are clearly separated. First the View design and development will come, in order to polish it and find what the final controls available will be.&lt;br /&gt;
Next, callback functions in GUI items will be set, and all functionality will be implemented in a way as modular as possible to help maintainability.&lt;br /&gt;
Apart from two or three exams in June, I'm free most of the day, most of the week, so I'll be able to work at a steady, regular rate, in order to finish everything in time.&lt;br /&gt;
:4.5) Include as much technical detail about your implementation as you can&lt;br /&gt;
The idea is developing the project in a Java environment, as java is supported in most OS(Apart from Mac, Unix and Windows, it can also be used in most mobile platforms and systems).&lt;br /&gt;
Another reason for choosing java is that is very easy to design a cute GUI that don't scares the user away, and also the GUI adapts its “look and feel” to the system it is running in, so the user sees it like another of his programs, rather than an external, strange tool.&lt;br /&gt;
In terms of programming, as described before, the idea is taking a MVC approach, implementing first the view, and preparing then a modular controller for all the functionality needed.&lt;br /&gt;
As Java has JUnit tests and a powerful debugger, it's easy to track down bugs and fix them, as well and check that every part works correctly and incrementally, so you can be sure that a new functionality doesn't break an older one(As you can add tests while you develop, so you always execute 100% of the tests).&lt;br /&gt;
:4.6) What do you expect to gain from this project?&lt;br /&gt;
I want to gain experience working in a big community for a project that has been working successfully for a long time and is well stablished. I think I will learn a lot from it.&lt;br /&gt;
:4.7) What would make you stay in the Wesnoth community after the conclusion of SOC? &lt;br /&gt;
If I actually get to know the people developing Wesnoth(via IRC) and I feel comfortable with the community I will probably keep coding at one level or another.(Developing at big scale, or just making little bug fixes).&lt;br /&gt;
&lt;br /&gt;
5) Practical considerations&lt;br /&gt;
:5.1) Are you familiar with any of the following tools or languages?&lt;br /&gt;
* Sub&amp;amp;shy;&amp;amp;shy;version (used for all commits)&lt;br /&gt;
I have used S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N in a lot of projects&lt;br /&gt;
* C++ (language used for all the normal source code)&lt;br /&gt;
I have a lot of experience developing in C/C++&lt;br /&gt;
* STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
I have used SDL a bit, never used STL of Boost.&lt;br /&gt;
* Python (optional, mainly used for tools)&lt;br /&gt;
Very low knowledge of script language Python&lt;br /&gt;
* build environments (eg cmake/scons)&lt;br /&gt;
A bit of knowledge in the cross platform make CMAKE&lt;br /&gt;
* WML (the wesnoth specific scenario language)&lt;br /&gt;
No experience at all&lt;br /&gt;
* Lua (used in combination with WML to create scenarios)&lt;br /&gt;
Some experience programming scripts in LUA&lt;br /&gt;
:5.2) Which tools do you normally use for development? Why do you use them?&lt;br /&gt;
I usually use the lightest IDE I can find when it comes to C/C++ development, as I don't need tons of contextual advice or memory/processor consuming plug-ins. (i.e. Kate editor for Unix).&lt;br /&gt;
When it comes to Java, due to it's high amount of classes and methods, IDE's like Eclipse or JDeveloper, with plug-ins and contextual method help are a must for quick development.&lt;br /&gt;
For other languages, like Objective C, the only choice is XCode, so there's not much reasoning involved in the election.&lt;br /&gt;
:5.3) What programming languages are you fluent in?&lt;br /&gt;
C,C++,Objective C, Java, PHP&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/disruption/1 Disruption SoC Application]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SoC_Ideas_Sprite_Sheets2011_hadleyt&amp;diff=49172</id>
		<title>SoC Ideas Sprite Sheets2011 hadleyt</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SoC_Ideas_Sprite_Sheets2011_hadleyt&amp;diff=49172"/>
		<updated>2013-03-21T03:44:39Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical instance of &amp;quot;SVN&amp;quot; from mediawiki search to avoid false positives.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|hadleyt|SoC_Ideas_Sprite_Sheets2011}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt; Tom Hadley - Sprite Sheet Creation/Implementation &amp;lt;/h4&amp;gt;&lt;br /&gt;
The first step is to create the sprite sheets by taking the many small sprites that we already have and piecing them together to form a sheet. This sheet must be organized in such a way that the each individual sprite is still easily accessible.&lt;br /&gt;
&lt;br /&gt;
I think the best way to go about accessing the sprites is to have them in a certain location in the sheet. This sheet could then be divided into different image-esque objects using a bi-dimensional pixel struct array, while certain sprites are given certain x-y locations.&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
hadleyt, hadleyt_&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
&lt;br /&gt;
1) Basics&lt;br /&gt;
&lt;br /&gt;
1.1) Write a small introduction to yourself.&lt;br /&gt;
&lt;br /&gt;
My name is Tom Hadley. I'm from Rochester, Minnesota, I'm involved in music, and I'm a gamer.&lt;br /&gt;
&lt;br /&gt;
1.2) State your preferred email address.&lt;br /&gt;
&lt;br /&gt;
hadleyt@stolaf.edu&lt;br /&gt;
&lt;br /&gt;
1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&lt;br /&gt;
&lt;br /&gt;
hadleyt, hadleyt_&lt;br /&gt;
&lt;br /&gt;
1.4) Why do you want to participate in summer of code?&lt;br /&gt;
&lt;br /&gt;
I after graduating, I wish to pursue a career in game design. GSoC will allow me to gain professional experience in game development by involving me in open source development of Wesnoth.&lt;br /&gt;
&lt;br /&gt;
1.5) What are you studying, subject, level and school? &lt;br /&gt;
&lt;br /&gt;
I am currently a sophomore Computer Science and Physics double major pursuing a B.A. degree at St. Olaf College in Northfield, Minnesota.&lt;br /&gt;
&lt;br /&gt;
1.6) What country are you from, at what time are you most likely to be able to join IRC?&lt;br /&gt;
&lt;br /&gt;
I am from the US. My schedule is extremely flexible, but my peak availability for IRC would be from 8am to 5pm M-F.&lt;br /&gt;
&lt;br /&gt;
1.7) Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.&lt;br /&gt;
&lt;br /&gt;
I am playing trumpet for a musical in late June-early July, however this is a small commitment of maybe 12 hours per week in the evenings.&lt;br /&gt;
&lt;br /&gt;
2) Experience&lt;br /&gt;
&lt;br /&gt;
2.1) What programs/software have you worked on before?&lt;br /&gt;
&lt;br /&gt;
I have coded in VPython for physics simulations and C++ for a wide variety of uses.&lt;br /&gt;
&lt;br /&gt;
2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&lt;br /&gt;
&lt;br /&gt;
Not at this time. The course I am currently taking has a team project portion that I we be starting next week.&lt;br /&gt;
&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
2.4) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&lt;br /&gt;
&lt;br /&gt;
No&lt;br /&gt;
&lt;br /&gt;
2.5) Gaming experience - Are you a gamer?&lt;br /&gt;
&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
2.5.1) What type of gamer are you?&lt;br /&gt;
&lt;br /&gt;
Hardcore.&lt;br /&gt;
&lt;br /&gt;
2.5.2) What type of games? &lt;br /&gt;
&lt;br /&gt;
I play/ have played WoW, Starcraft II, Warcraft III, DotA, LoL, HoN, Half life 2, TF2, and others. Lately I've been playing more RTS games, and have played Heroes of Might and Magic, which seems somewhat similar to Wesnoth.&lt;br /&gt;
&lt;br /&gt;
2.5.3) What type of opponents do you prefer? &lt;br /&gt;
&lt;br /&gt;
Challenging but not overly so.&lt;br /&gt;
&lt;br /&gt;
2.5.4) Are you more interested in story or gameplay?&lt;br /&gt;
&lt;br /&gt;
Gameplay and story go hand in hand in creating a good game. The story must be exciting, but there must be exceptional core gameplay to hold it together. Otherwise, the game becomes boring.&lt;br /&gt;
&lt;br /&gt;
2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
&lt;br /&gt;
I have only played for a few minutes, but I would be willing to play it more not just to learn more about it, but because it seems fun too.&lt;br /&gt;
&lt;br /&gt;
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 S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N (during the evaluation period or earlier) please state so.&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
3) Communication skills&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
fluent, native speaker&lt;br /&gt;
&lt;br /&gt;
3.2) What spoken languages are you fluent in?&lt;br /&gt;
&lt;br /&gt;
English&lt;br /&gt;
&lt;br /&gt;
3.3) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&lt;br /&gt;
&lt;br /&gt;
No communities are rougher than the SC2 and WoW communities. I am used to difficult player interactions and am willing&lt;br /&gt;
&lt;br /&gt;
3.4) Do you give constructive advice? &lt;br /&gt;
&lt;br /&gt;
I give constructive advice whenever I am able but not in a condescending way&lt;br /&gt;
&lt;br /&gt;
3.5) Do you receive advice well? &lt;br /&gt;
&lt;br /&gt;
I try to, if the advice is well given.&lt;br /&gt;
&lt;br /&gt;
3.6) Are you good at sorting useful criticisms from useless ones?&lt;br /&gt;
&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want&lt;br /&gt;
&lt;br /&gt;
I am more on the side of coding a proof of concept since that is the way I've been taught, however I am willing to try either method if it's an issue.&lt;br /&gt;
&lt;br /&gt;
4) Project&lt;br /&gt;
&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
Yes - I am interested in the project involving sprite sheets. I would like to focus on the implementation of the sprite sheets.&lt;br /&gt;
&lt;br /&gt;
4.2) If you have invented your own project, please describe the project and the scope.&lt;br /&gt;
&lt;br /&gt;
4.3) Why did you choose this project?&lt;br /&gt;
&lt;br /&gt;
This project makes a lot of sense to me when I think about it. I think it would be really cool to organize these images sprite sheets and then find a way to implement them in order to conserve system resources&lt;br /&gt;
&lt;br /&gt;
4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
I am still in school until May 30, so I would work on figuring out the basics of how sprite sheets work and how to implement them up until that point.&lt;br /&gt;
&lt;br /&gt;
4.5) Include as much technical detail about your implementation as you can&lt;br /&gt;
&lt;br /&gt;
Getting the sprites into sprite sheets will be the first task. After that, we could read in each spritesheet and separate it into different image objects based on the location of pixels.&lt;br /&gt;
&lt;br /&gt;
4.6) What do you expect to gain from this project?&lt;br /&gt;
&lt;br /&gt;
I hope to gain a better understanding of C++ as it applies to game development and more preparation for such a career.&lt;br /&gt;
&lt;br /&gt;
4.7) What would make you stay in the Wesnoth community after the conclusion of SOC? &lt;br /&gt;
&lt;br /&gt;
A pleasant experience over the summer.&lt;br /&gt;
&lt;br /&gt;
5) Practical considerations&lt;br /&gt;
&lt;br /&gt;
5.1) Are you familiar with any of the following tools or languages?&lt;br /&gt;
&lt;br /&gt;
* C++ (language used for all the normal source code)&lt;br /&gt;
* Python (optional, mainly used for tools)&lt;br /&gt;
**I would be willing to learn any other necessary tools/languages, I seem to be able to pick them up fairly quickly.&lt;br /&gt;
&lt;br /&gt;
5.2) Which tools do you normally use for development? Why do you use them?&lt;br /&gt;
I use emacs and vidle because they are what my school uses. I would be willing to try others.&lt;br /&gt;
&lt;br /&gt;
5.3) What programming languages are you fluent in?&lt;br /&gt;
C++ and Python.&lt;br /&gt;
&lt;br /&gt;
5.4) 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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
In general please try to be as verbose as possible in your answers and feel free to elaborate.&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/hadley12656/1 SoC Application]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GCI/Playtesting/Northern_Rebirth/Normal&amp;diff=49171</id>
		<title>GCI/Playtesting/Northern Rebirth/Normal</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GCI/Playtesting/Northern_Rebirth/Normal&amp;diff=49171"/>
		<updated>2013-03-21T03:43:39Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical instance of &amp;quot;SVN&amp;quot; from mediawiki search to avoid false positives.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tester:Aurora/Narnian/David Neil&lt;br /&gt;
&lt;br /&gt;
'''What difficulty levels and what version of Wesnoth have you played the scenario on?''' Normal difficulty (easiest option for campaign) with 1.9.2+s&amp;amp;shy;&amp;amp;shy;v&amp;amp;shy;&amp;amp;shy;n.&lt;br /&gt;
==01-Breaking the Chains==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;only chance we got to&amp;quot; should be &amp;quot;only chance we have got to&amp;quot; (we have can become we've)&lt;br /&gt;
&lt;br /&gt;
Hoping I would get some special things I went on the troll cave, very unfortunate.&lt;br /&gt;
&lt;br /&gt;
Sent my king out too soon, had to go back to recruit more (I had already killed green king).  thought about sending him to greens old castle, too far.&lt;br /&gt;
&lt;br /&gt;
massing woodsmen now, peasants are a waste of money. And then I lost.  Let's try again without trolls.&lt;br /&gt;
&lt;br /&gt;
I finished it 41 turns early, so I am '''starting next campaign with 1830 gold.'''&lt;br /&gt;
&lt;br /&gt;
'''How difficult did you find the scenario? (1-10)''' 5&lt;br /&gt;
&lt;br /&gt;
'''How clear did you find the scenario objectives?''' Clear&lt;br /&gt;
&lt;br /&gt;
'''How clear and interesting did you find the dialog and storyline of the scenario?''' typical, but good.&lt;br /&gt;
&lt;br /&gt;
'''What were your major challenges in meeting the objectives of the scenario?''' none.&lt;br /&gt;
&lt;br /&gt;
'''How fun do you think the scenario is? (1-10)''' 6&lt;br /&gt;
&lt;br /&gt;
'''What, if any, are changes you would have made to the scenario to make it more fun?'''  place starting base a few hexes closer to the battle arena.&lt;br /&gt;
&lt;br /&gt;
'''Was there any event that caused you to lose the game and forced you to reload or restart the scenario?'''  Troll Cave.&lt;br /&gt;
&lt;br /&gt;
'''If you know a bit of the Wesnoth Markup Language - do you think that the WML of this scenario is clear and well commented? If not which part would you like to be documented better?''' Very well written, inline comments even.&lt;br /&gt;
&lt;br /&gt;
==02-Infested Caves==&lt;br /&gt;
&lt;br /&gt;
Okay, scenario objectives just showed that I lose if someone who I have never seen dies.&lt;br /&gt;
&lt;br /&gt;
Turns take too long and I can't see what is happening.  So many bad guys.  Maybe this is why it gives so much extra money. I am already down to 1350.&lt;br /&gt;
&lt;br /&gt;
It said something about like staying small, but I am so spread I am just going to keep pressing on them.&lt;br /&gt;
&lt;br /&gt;
overwhelming, pulling back and letting them fight.&lt;br /&gt;
&lt;br /&gt;
hidden passage, trixy.&lt;br /&gt;
&lt;br /&gt;
It appears when white skeletons stand on a village it becomes un-claimed.&lt;br /&gt;
&lt;br /&gt;
I got my king to the spot on the 60th turn, wow, scary, next mission with 702 gold or something.&lt;br /&gt;
&lt;br /&gt;
'''How difficult did you find the scenario? (1-10)''' 3 (so much money never had to worry about anything, but it was hard)&lt;br /&gt;
&lt;br /&gt;
'''How clear did you find the scenario objectives?''' I almost lost because what I thought was the keep to win was really 4 or 5 moves/turns away.&lt;br /&gt;
&lt;br /&gt;
'''How clear and interesting did you find the dialog and storyline of the scenario?''' neep neep!  very interesting.&lt;br /&gt;
&lt;br /&gt;
'''What were your major challenges in meeting the objectives of the scenario?'''  the tunnels made huge backups with only 2 or 3 people actually fighting.&lt;br /&gt;
&lt;br /&gt;
'''How fun do you think the scenario is? (1-10)''' 2&lt;br /&gt;
&lt;br /&gt;
'''What, if any, are changes you would have made to the scenario to make it more fun?'''  bigger tunnels.&lt;br /&gt;
&lt;br /&gt;
'''Was there any event that caused you to lose the game and forced you to reload or restart the scenario?''' none.&lt;br /&gt;
&lt;br /&gt;
'''If you know a bit of the Wesnoth Markup Language - do you think that the WML of this scenario is clear and well commented? If not which part would you like to be documented better?'''  I checked it at the end to make sure the spot I was moving on my 60th(out of 60) turn would allow me to win.  And I found it without a problem so it must be good.&lt;br /&gt;
&lt;br /&gt;
==03-To The Mines==&lt;br /&gt;
&lt;br /&gt;
I owned those puppies.&lt;br /&gt;
&lt;br /&gt;
'''How difficult did you find the scenario? (1-10)''' 2 &lt;br /&gt;
&lt;br /&gt;
'''How clear did you find the scenario objectives?''' Wasn't sure who I would have to bring to the caves to qualify as winning, didn't apply.&lt;br /&gt;
&lt;br /&gt;
'''How clear and interesting did you find the dialog and storyline of the scenario?''' funny, clear.&lt;br /&gt;
&lt;br /&gt;
'''What were your major challenges in meeting the objectives of the scenario?''' none.&lt;br /&gt;
&lt;br /&gt;
'''How fun do you think the scenario is? (1-10)'''  9&lt;br /&gt;
&lt;br /&gt;
'''What, if any, are changes you would have made to the scenario to make it more fun?'''  none.&lt;br /&gt;
&lt;br /&gt;
'''Was there any event that caused you to lose the game and forced you to reload or restart the scenario?'''  nope.&lt;br /&gt;
&lt;br /&gt;
'''If you know a bit of the Wesnoth Markup Language - do you think that the WML of this scenario is clear and well commented? If not which part would you like to be documented better?'''  bueno.&lt;br /&gt;
&lt;br /&gt;
==04-Clearing The Mines==&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;lt; so around 35 baddies all spawned in one turn, I AM SCREWED. used debug mode for advancing units and move, killing enemy leaders.&lt;br /&gt;
&lt;br /&gt;
'''How difficult did you find the scenario? (1-10)''' 10/IMPOSSIBLE&lt;br /&gt;
&lt;br /&gt;
'''How clear did you find the scenario objectives?''' Clear&lt;br /&gt;
&lt;br /&gt;
'''How clear and interesting did you find the dialog and storyline of the scenario?''' Interesting, but retarded.&lt;br /&gt;
&lt;br /&gt;
'''What were your major challenges in meeting the objectives of the scenario?''' the fact that 41 enemies spawn AT THE SAME TIME!&lt;br /&gt;
&lt;br /&gt;
'''How fun do you think the scenario is? (1-10)''' 0&lt;br /&gt;
&lt;br /&gt;
'''What, if any, are changes you would have made to the scenario to make it more fun?''' maybe just make 10 people spawn, it was so many I thought they were all going to disappear the next turn, or they would be unable to move from the swamp.&lt;br /&gt;
&lt;br /&gt;
'''Was there any event that caused you to lose the game and forced you to reload or restart the scenario?''' (debug mode saved me) the swamp ogre people.&lt;br /&gt;
&lt;br /&gt;
'''If you know a bit of the Wesnoth Markup Language - do you think that the WML of this scenario is clear and well commented? If not which part would you like to be documented better?''' it has a large portion commented out, which is okay, but it all seems like there should be a shorter way to do it.&lt;br /&gt;
&lt;br /&gt;
==05a-The Pursuit==&lt;br /&gt;
&lt;br /&gt;
Revenants are hard, should have run past and fought from back.&lt;br /&gt;
&lt;br /&gt;
Because there are so many places to go I am using debug to move my people.&lt;br /&gt;
&lt;br /&gt;
Rod of justice with my invincible white mage, Morvin (when one dies it revives next to the other one)&lt;br /&gt;
&lt;br /&gt;
If I get to keep Morvin hehehe, hehe....&lt;br /&gt;
&lt;br /&gt;
'''How difficult did you find the scenario? (1-10)''' 8&lt;br /&gt;
&lt;br /&gt;
'''How clear did you find the scenario objectives?''' Clear.&lt;br /&gt;
&lt;br /&gt;
'''How clear and interesting did you find the dialog and storyline of the scenario?''' Clear, so many things can happen&lt;br /&gt;
&lt;br /&gt;
'''What were your major challenges in meeting the objectives of the scenario?'''  the tunnels made huge backups with only 2 or 3 people actually fighting.&lt;br /&gt;
&lt;br /&gt;
'''How fun do you think the scenario is? (1-10)''' 7&lt;br /&gt;
&lt;br /&gt;
'''What, if any, are changes you would have made to the scenario to make it more fun?'''  maybe default to no shroud.&lt;br /&gt;
&lt;br /&gt;
'''Was there any event that caused you to lose the game and forced you to reload or restart the scenario?''' none.&lt;br /&gt;
&lt;br /&gt;
'''If you know a bit of the Wesnoth Markup Language - do you think that the WML of this scenario is clear and well commented? If not which part would you like to be documented better?'''  It is fine.&lt;br /&gt;
&lt;br /&gt;
==06a-Old Friend==&lt;br /&gt;
&lt;br /&gt;
This is impossible to kill them, it is easier to just defend for 18 turns.&lt;br /&gt;
&lt;br /&gt;
my super powered roster might be able to.&lt;br /&gt;
&lt;br /&gt;
just sent the two white mages together, un-freaking stoppable.&lt;br /&gt;
&lt;br /&gt;
'''How difficult did you find the scenario? (1-10)''' 3/9 hold out for 18 turns/kill people.&lt;br /&gt;
&lt;br /&gt;
'''How clear did you find the scenario objectives?''' Clear.&lt;br /&gt;
&lt;br /&gt;
'''How clear and interesting did you find the dialog and storyline of the scenario?'''  It never ceases to amaze me.&lt;br /&gt;
&lt;br /&gt;
'''What were your major challenges in meeting the objectives of the scenario?'''  ARMIES OF WOLVES!&lt;br /&gt;
&lt;br /&gt;
'''How fun do you think the scenario is? (1-10)''' 1, AI turns take way too long (5+ minutes)&lt;br /&gt;
&lt;br /&gt;
'''What, if any, are changes you would have made to the scenario to make it more fun?'''  less wolves, more pow-wow.&lt;br /&gt;
&lt;br /&gt;
'''Was there any event that caused you to lose the game and forced you to reload or restart the scenario?''' no.&lt;br /&gt;
&lt;br /&gt;
'''If you know a bit of the Wesnoth Markup Language - do you think that the WML of this scenario is clear and well commented? If not which part would you like to be documented better?''' good.&lt;br /&gt;
&lt;br /&gt;
==07a-Settling Disputes==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''How difficult did you find the scenario? (1-10)''' 3&lt;br /&gt;
&lt;br /&gt;
'''How clear did you find the scenario objectives?''' Got confused because their names are so similar.&lt;br /&gt;
&lt;br /&gt;
'''How clear and interesting did you find the dialog and storyline of the scenario?'''  again, awesome.&lt;br /&gt;
&lt;br /&gt;
'''What were your major challenges in meeting the objectives of the scenario?'''  none.&lt;br /&gt;
&lt;br /&gt;
'''How fun do you think the scenario is? (1-10)''' 5&lt;br /&gt;
&lt;br /&gt;
'''What, if any, are changes you would have made to the scenario to make it more fun?'''  none.&lt;br /&gt;
&lt;br /&gt;
'''Was there any event that caused you to lose the game and forced you to reload or restart the scenario?''' no.&lt;br /&gt;
&lt;br /&gt;
'''If you know a bit of the Wesnoth Markup Language - do you think that the WML of this scenario is clear and well commented? If not which part would you like to be documented better?''' good.&lt;br /&gt;
&lt;br /&gt;
==08a-Elvish Princess==&lt;br /&gt;
&lt;br /&gt;
'''How difficult did you find the scenario? (1-10)''' 4&lt;br /&gt;
&lt;br /&gt;
'''How clear did you find the scenario objectives?''' &amp;quot;to the south&amp;quot; everything is to the south!&lt;br /&gt;
&lt;br /&gt;
'''How clear and interesting did you find the dialog and storyline of the scenario?'''  not as good as the rest but still good.&lt;br /&gt;
&lt;br /&gt;
'''What were your major challenges in meeting the objectives of the scenario?'''  none.&lt;br /&gt;
&lt;br /&gt;
'''How fun do you think the scenario is? (1-10)''' 4&lt;br /&gt;
&lt;br /&gt;
'''What, if any, are changes you would have made to the scenario to make it more fun?'''  none.&lt;br /&gt;
&lt;br /&gt;
'''Was there any event that caused you to lose the game and forced you to reload or restart the scenario?''' no.&lt;br /&gt;
&lt;br /&gt;
'''If you know a bit of the Wesnoth Markup Language - do you think that the WML of this scenario is clear and well commented? If not which part would you like to be documented better?''' good.&lt;br /&gt;
&lt;br /&gt;
==09a-Introductions==&lt;br /&gt;
&lt;br /&gt;
WHAT IS UP WITH MASS ARMIES!!! (not as big as I thought, and good thing.)&lt;br /&gt;
&lt;br /&gt;
Why is Eryssa dying not a loss objective?&lt;br /&gt;
&lt;br /&gt;
'''How difficult did you find the scenario? (1-10)''' 3&lt;br /&gt;
&lt;br /&gt;
'''How clear did you find the scenario objectives?''' clear&lt;br /&gt;
&lt;br /&gt;
'''How clear and interesting did you find the dialog and storyline of the scenario?''' I looked in the code and it had stuff about and evil Eryssa, made me interested. Clear.&lt;br /&gt;
&lt;br /&gt;
'''What were your major challenges in meeting the objectives of the scenario?''' none.&lt;br /&gt;
&lt;br /&gt;
'''How fun do you think the scenario is? (1-10)''' 5&lt;br /&gt;
&lt;br /&gt;
'''What, if any, are changes you would have made to the scenario to make it more fun?''' none.&lt;br /&gt;
&lt;br /&gt;
'''Was there any event that caused you to lose the game and forced you to reload or restart the scenario?''' no.&lt;br /&gt;
&lt;br /&gt;
'''If you know a bit of the Wesnoth Markup Language - do you think that the WML of this scenario is clear and well commented? If not which part would you like to be documented better?'''  Very good.&lt;br /&gt;
&lt;br /&gt;
==10a-Stolen Gold==&lt;br /&gt;
&lt;br /&gt;
and I lost...debug, gold.&lt;br /&gt;
&lt;br /&gt;
'''How difficult did you find the scenario? (1-10)''' 7&lt;br /&gt;
&lt;br /&gt;
'''How clear did you find the scenario objectives?''' Clear&lt;br /&gt;
&lt;br /&gt;
'''How clear and interesting did you find the dialog and storyline of the scenario?''' meh.&lt;br /&gt;
&lt;br /&gt;
'''What were your major challenges in meeting the objectives of the scenario?''' Money, just fighting against a mob.&lt;br /&gt;
&lt;br /&gt;
'''How fun do you think the scenario is? (1-10)''' 3&lt;br /&gt;
&lt;br /&gt;
'''What, if any, are changes you would have made to the scenario to make it more fun?''' maybe make all 3 enemies on one side, and a fourth coming from the cave.&lt;br /&gt;
&lt;br /&gt;
'''Was there any event that caused you to lose the game and forced you to reload or restart the scenario?''' well Eryssa died so I went back a turn cause I had a feeling that would be bad.&lt;br /&gt;
&lt;br /&gt;
'''If you know a bit of the Wesnoth Markup Language - do you think that the WML of this scenario is clear and well commented? If not which part would you like to be documented better?''' Good.&lt;br /&gt;
&lt;br /&gt;
==11a-The Eastern Flank==&lt;br /&gt;
&lt;br /&gt;
AGAIN WITH THE DANG HORDES!&lt;br /&gt;
&lt;br /&gt;
'''How difficult did you find the scenario? (1-10)''' 6&lt;br /&gt;
&lt;br /&gt;
'''How clear did you find the scenario objectives?''' Clear&lt;br /&gt;
&lt;br /&gt;
'''How clear and interesting did you find the dialog and storyline of the scenario?''' good.&lt;br /&gt;
&lt;br /&gt;
'''What were your major challenges in meeting the objectives of the scenario?''' none.&lt;br /&gt;
&lt;br /&gt;
'''How fun do you think the scenario is? (1-10)''' 5&lt;br /&gt;
&lt;br /&gt;
'''What, if any, are changes you would have made to the scenario to make it more fun?''' make starting base closer to combat area.&lt;br /&gt;
&lt;br /&gt;
'''Was there any event that caused you to lose the game and forced you to reload or restart the scenario?''' nope.&lt;br /&gt;
&lt;br /&gt;
'''If you know a bit of the Wesnoth Markup Language - do you think that the WML of this scenario is clear and well commented? If not which part would you like to be documented better?''' very good.&lt;br /&gt;
&lt;br /&gt;
==12a-Get The Cold==&lt;br /&gt;
&lt;br /&gt;
'''How difficult did you find the scenario? (1-10)''' 3&lt;br /&gt;
&lt;br /&gt;
'''How clear did you find the scenario objectives?''' Clear&lt;br /&gt;
&lt;br /&gt;
'''How clear and interesting did you find the dialog and storyline of the scenario?''' good.&lt;br /&gt;
&lt;br /&gt;
'''What were your major challenges in meeting the objectives of the scenario?''' none.&lt;br /&gt;
&lt;br /&gt;
'''How fun do you think the scenario is? (1-10)''' 7&lt;br /&gt;
&lt;br /&gt;
'''What, if any, are changes you would have made to the scenario to make it more fun?''' none.&lt;br /&gt;
&lt;br /&gt;
'''Was there any event that caused you to lose the game and forced you to reload or restart the scenario?''' nope.&lt;br /&gt;
&lt;br /&gt;
'''If you know a bit of the Wesnoth Markup Language - do you think that the WML of this scenario is clear and well commented? If not which part would you like to be documented better?''' very good.&lt;br /&gt;
&lt;br /&gt;
==13a-Showdown==&lt;br /&gt;
&lt;br /&gt;
'''How difficult did you find the scenario? (1-10)''' 8&lt;br /&gt;
&lt;br /&gt;
'''How clear did you find the scenario objectives?''' Clear&lt;br /&gt;
&lt;br /&gt;
'''How clear and interesting did you find the dialog and storyline of the scenario?''' boring.&lt;br /&gt;
&lt;br /&gt;
'''What were your major challenges in meeting the objectives of the scenario?''' The giant fortress was problematic.&lt;br /&gt;
&lt;br /&gt;
'''How fun do you think the scenario is? (1-10)''' 7&lt;br /&gt;
&lt;br /&gt;
'''What, if any, are changes you would have made to the scenario to make it more fun?''' make only one side human controlled, it was just too time consuming to control it all.&lt;br /&gt;
&lt;br /&gt;
'''Was there any event that caused you to lose the game and forced you to reload or restart the scenario?''' no.&lt;br /&gt;
&lt;br /&gt;
'''If you know a bit of the Wesnoth Markup Language - do you think that the WML of this scenario is clear and well commented? If not which part would you like to be documented better?''' good.&lt;br /&gt;
&lt;br /&gt;
==14a-Epilogue==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It was fun, time for my life.&lt;br /&gt;
&lt;br /&gt;
[[Category: GCI]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GCI/Playtesting/Tale_of_Two_Brothers/Beginner&amp;diff=49170</id>
		<title>GCI/Playtesting/Tale of Two Brothers/Beginner</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GCI/Playtesting/Tale_of_Two_Brothers/Beginner&amp;diff=49170"/>
		<updated>2013-03-21T03:42:56Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical instance of &amp;quot;SVN&amp;quot; from mediawiki search to avoid false positives.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;No bugs, just typos. &amp;lt;br&amp;gt;&lt;br /&gt;
Bug report submitted here: https://gna.org/bugs/?17196&lt;br /&gt;
==Questions:==&lt;br /&gt;
# What difficulty levels and what version of Wesnoth have you played the scenario on?&lt;br /&gt;
# How difficult did you find the scenario? (1-10)&lt;br /&gt;
# How clear did you find the scenario objectives?&lt;br /&gt;
# How clear and interesting did you find the dialog and storyline of the scenario?&lt;br /&gt;
# What were your major challenges in meeting the objectives of the scenario?&lt;br /&gt;
# How fun do you think the scenario is? (1-10)&lt;br /&gt;
# What, if any, are changes you would have made to the scenario to make it more fun?&lt;br /&gt;
# Was there any event that caused you to lose the game and forced you to reload or restart the scenario?&lt;br /&gt;
# If you know a bit of the Wesnoth Markup Language - do you think that the WML of this scenario is clear and well commented? If not which part would you like to be documented better?&lt;br /&gt;
&lt;br /&gt;
==Answers:==&lt;br /&gt;
(1) Beginner difficulty for all scenarios. Version 1.9.2+s&amp;amp;shy;&amp;amp;shy;v&amp;amp;shy;&amp;amp;shy;n&amp;lt;br&amp;gt;&lt;br /&gt;
====01_Rooting Out a Mage:====&lt;br /&gt;
(2) 3&amp;lt;br&amp;gt;&lt;br /&gt;
(3) Very clear&amp;lt;br&amp;gt;&lt;br /&gt;
(4) Somewhat clear, but very interesting&amp;lt;br&amp;gt;&lt;br /&gt;
(5) None&amp;lt;br&amp;gt;&lt;br /&gt;
(6) 7&amp;lt;br&amp;gt;&lt;br /&gt;
(7) Maybe a little more challenging (i.e. more enemies)&amp;lt;br&amp;gt;&lt;br /&gt;
(8) Nope&amp;lt;br&amp;gt;&lt;br /&gt;
(9) Clear&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====02_The Chase:====&lt;br /&gt;
(2) 5&amp;lt;br&amp;gt;&lt;br /&gt;
(3) Very clear&amp;lt;br&amp;gt;&lt;br /&gt;
(4) Clear and interesting&amp;lt;br&amp;gt;&lt;br /&gt;
(5) None&amp;lt;br&amp;gt;&lt;br /&gt;
(6) 6&amp;lt;br&amp;gt;&lt;br /&gt;
(7) None&amp;lt;br&amp;gt;&lt;br /&gt;
(8) Nope&amp;lt;br&amp;gt;&lt;br /&gt;
(9) Clear&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====03_Guarded Castle:====&lt;br /&gt;
(2) 4&amp;lt;br&amp;gt;&lt;br /&gt;
(3) Very clear&amp;lt;br&amp;gt;&lt;br /&gt;
(4) Clear and Interesting&amp;lt;br&amp;gt;&lt;br /&gt;
(5) None&amp;lt;br&amp;gt;&lt;br /&gt;
(6) 5&amp;lt;br&amp;gt;&lt;br /&gt;
(7) More options maybe?  I felt like there was nothing to do but push straight into the castle and just keep pushing.&amp;lt;br&amp;gt;&lt;br /&gt;
(8) Nope&amp;lt;br&amp;gt;&lt;br /&gt;
(9) Clear&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====04_Return to the Village:====&lt;br /&gt;
(2) 6&amp;lt;br&amp;gt;&lt;br /&gt;
(3) Very clear&amp;lt;br&amp;gt;&lt;br /&gt;
(4) Mostly clear and very interesting&amp;lt;br&amp;gt;&lt;br /&gt;
(5) Fighting my way over the mountains.&amp;lt;br&amp;gt;&lt;br /&gt;
(6) 9&amp;lt;br&amp;gt;&lt;br /&gt;
(7) None&amp;lt;br&amp;gt;&lt;br /&gt;
(8) Bjarn died.  I forgot that he needed to heal.&amp;lt;br&amp;gt;&lt;br /&gt;
(9) Clear&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====05_Epilogue:====&lt;br /&gt;
(2) N/A&amp;lt;br&amp;gt;&lt;br /&gt;
(3) N/A&amp;lt;br&amp;gt;&lt;br /&gt;
(4) Clear (except for one typo) and Interesting&amp;lt;br&amp;gt;&lt;br /&gt;
(5) N/A&amp;lt;br&amp;gt;&lt;br /&gt;
(6) N/A&amp;lt;br&amp;gt;&lt;br /&gt;
(7) N/A&amp;lt;br&amp;gt;&lt;br /&gt;
(8) N/A&amp;lt;br&amp;gt;&lt;br /&gt;
(9) Clear&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: GCI]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SoC_Ideas_Eclipse_Plugin2011&amp;diff=49169</id>
		<title>SoC Ideas Eclipse Plugin2011</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SoC_Ideas_Eclipse_Plugin2011&amp;diff=49169"/>
		<updated>2013-03-21T03:38:33Z</updated>

		<summary type="html">&lt;p&gt;Esr: Remove Subversion-specific terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Idea}}&lt;br /&gt;
&lt;br /&gt;
= Description =&lt;br /&gt;
&amp;lt;h2&amp;gt;Enhance &amp;amp; polish the Wesnoth Eclipse Plugin&amp;lt;/h2&amp;gt;&lt;br /&gt;
More info at [[SoC_Ideas_Eclipse_Plugin2011]]&lt;br /&gt;
&lt;br /&gt;
A java-based Eclipse plugin was created in 2010 to allow easier creation and modification of User-Made Content for Wesnoth. You should extend this work and polish existing features in terms of usability and performance, and add new features.&lt;br /&gt;
&lt;br /&gt;
{{#dpl:&lt;br /&gt;
 |resultsheader=''There are %PAGES% submitted student proposals for this idea''&lt;br /&gt;
 |oneresultheader=''There is 1 submitted student proposal for this idea''&lt;br /&gt;
 |suppresserrors=true&lt;br /&gt;
 |noresultsheader=''There are no submitted student proposals for this idea''&lt;br /&gt;
 |category=Summer of Code 2011 Student Page&amp;amp;SoC Ideas Eclipse Plugin2011&lt;br /&gt;
 |notcategory=SoC 2011 Not Submitted To Google&lt;br /&gt;
 |include=#Description&lt;br /&gt;
 |mode=userformat&lt;br /&gt;
 |format=,,&amp;lt;br/&amp;gt;See [[%PAGE%|%TITLE%]] for more information.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;,&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Additional Information =&lt;br /&gt;
&lt;br /&gt;
== General plugin information ==&lt;br /&gt;
Current plugin's webpage: http://eclipse.wesnoth.org/&lt;br /&gt;
&lt;br /&gt;
Older (but may be still actual for some points) page: http://wiki.wesnoth.org/SoC_Ideas_Eclipse_Plugin&lt;br /&gt;
&lt;br /&gt;
The plugin is available in the ''utils/java'' directory of the repository.&lt;br /&gt;
&lt;br /&gt;
The plugin uses Xtext [http://www.eclipse.org/Xtext/] for the editor component which provides a very good DSL framework to be used with the WML language.&lt;br /&gt;
&lt;br /&gt;
== Support for multiple Wesnoth installations ==&lt;br /&gt;
- There should be support for handling multiple Wesnoth installations, each one of them with different binaries/wml tools and so on.&lt;br /&gt;
&lt;br /&gt;
- The user should be able to use the feature in an easy way that should restart the eclipse workspace as few as possible.&lt;br /&gt;
&lt;br /&gt;
== Enhance the autocomplete feature ==&lt;br /&gt;
The current autocomplete feature works just for a small amount of keys/tags. There should be an easy way (possibly even allow non-eclipse-plugin developers to modify it) specifying the tags we want to autocomplete on or implement autocomplete for:&lt;br /&gt;
 - events&lt;br /&gt;
 - variables&lt;br /&gt;
 - attributes&lt;br /&gt;
 - attributes values - e.g.: true/false, yes/no&lt;br /&gt;
 - macros&lt;br /&gt;
&lt;br /&gt;
== Plugin documentation ==&lt;br /&gt;
The plugin is lacking proper documentation. There is only a readme [http://eclipse.wesnoth.org/doc_howto.html] that specifies just a quick overview of the plugin. To gain more popularity it should be much more documented:&lt;br /&gt;
&lt;br /&gt;
 - Create some usage videos, showing off the cool features: wizards, auto-complete, macro navigation&lt;br /&gt;
 - Create multiple step-by-step readme documents for different wizards&lt;br /&gt;
&lt;br /&gt;
== Automatic/headless building ==&lt;br /&gt;
Currently the plugin and it's update site is built &amp;quot;in-house&amp;quot;. That means you have to pop eclipse, clear current version, and run the build again. There should be a way of automatic - without the need for eclipse - building the plugin's update site &amp;amp; creating the standalone build also. &lt;br /&gt;
&lt;br /&gt;
== Other ideas ==&lt;br /&gt;
You can also give other ideas you think are worthy to be implemented.&lt;br /&gt;
&lt;br /&gt;
== Possible pre-gsoc tasks ==&lt;br /&gt;
 - Make yourself familiar with basic WML syntax.&lt;br /&gt;
 - Try the emacs plugin (data/tools/emacs_mode) to see an example of a wml ide.&lt;br /&gt;
 - Install the eclipse UMC plugin and use it to write a simple campaign or multiplayer scenario.&lt;br /&gt;
 - The eclipse framework allow great customization. Thus, a project can have it's own properties. Add a new tab for wesnoth nature projects, which has wesnoth specific properties. The tab can have a dummy label/checkbox at first.&lt;br /&gt;
 - Create a menu item which clears all current configured files by the wesnoth plugin. This will allow users to reset their configuration on the plugin.&lt;br /&gt;
&lt;br /&gt;
= Whom to ask about this =&lt;br /&gt;
If you want more information regarding the plugin please contact timotei/timotei21 on IRC.&lt;br /&gt;
The mentor of the last gsoc eclipse plugin project was fendrin on IRC.&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=DevelopersHome&amp;diff=49167</id>
		<title>DevelopersHome</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=DevelopersHome&amp;diff=49167"/>
		<updated>2013-03-21T03:36:07Z</updated>

		<summary type="html">&lt;p&gt;Esr: Remove Subversion-specific terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General Information =&lt;br /&gt;
* Links&lt;br /&gt;
** [http://changelog.wesnoth.org Changelog] - the most recent changes made to the game&lt;br /&gt;
** [http://cia.vc/stats/project/wesnoth Latest commits] - Up-to-date commit messages&lt;br /&gt;
&lt;br /&gt;
* Coding Guidelines&lt;br /&gt;
** [[HackingWesnoth]] - guide for programmers&lt;br /&gt;
** [[CodingStandards]] - for programmers&lt;br /&gt;
** [[DeveloperGuide]] - for those who received repository commit rights&lt;br /&gt;
&lt;br /&gt;
* Library documentation&lt;br /&gt;
** http://www.sgi.com/tech/stl/ - Standard Template Library&lt;br /&gt;
** [http://www.boost.org/doc/libs/1_36_0/ Boost 1.36 documentation]&lt;br /&gt;
&lt;br /&gt;
= Tools and Packaging =&lt;br /&gt;
* Supporting Websites&lt;br /&gt;
** [[WesnothRepository]] - accessing the source code&lt;br /&gt;
** http://websvn.wesnoth.org/ Web-Access to svn - Gna! - websvn - &lt;br /&gt;
** http://gettext.wesnoth.org/ - gettext status&lt;br /&gt;
* Compiling and Building&lt;br /&gt;
** [[CompilingWesnoth]] - how to compile Battle for Wesnoth (it's not hard)&lt;br /&gt;
** [[SCons]]&lt;br /&gt;
* Packaging and Releasing&lt;br /&gt;
** [[ReleasingWesnoth]] - steps to follow to release a new version&lt;br /&gt;
** [[WesnothPackagersGuide]] - guidelines for packaging Wesnoth for different platforms&lt;br /&gt;
* Documentation&lt;br /&gt;
** [[Doxygen]] - Documentation generator&lt;br /&gt;
* More stuff&lt;br /&gt;
** [[ExternalUtilities]] (Wercator, CampGen, wmllint, etc.)&lt;br /&gt;
** [[MaintenanceTools]] WMLLint, WMLIndent and WMLScope&lt;br /&gt;
** [[UsingGooglePerformanceTools]] to profile Wesnoth CPU and memory usage.&lt;br /&gt;
&lt;br /&gt;
= I want to start coding, what can I do? =&lt;br /&gt;
* [[EasyCoding]] - Bugs and features that are easy to implement for new coders&lt;br /&gt;
* [[NotSoEasyCoding]] - Bugs and features which are doable but lacking someone working on them&lt;br /&gt;
* [[GettingStarted]]&lt;br /&gt;
* [[FrequentlyProposedIdeas]] - summary of past often-repeated forum discussions&lt;br /&gt;
* [[Glossary]]&lt;br /&gt;
&lt;br /&gt;
= Game - Create content =&lt;br /&gt;
* [[BuildingScenarios]] and related useful forum discussions: &lt;br /&gt;
** [http://www.wesnoth.org/forum/viewtopic.php?t=4188 Beginning Campaign Development]&lt;br /&gt;
** [http://www.wesnoth.org/forum/viewtopic.php?t=4301 A Balancing Act]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
= Code documentation =&lt;br /&gt;
* http://devdocs.wesnoth.org - generated code documentation&lt;br /&gt;
* AI&lt;br /&gt;
** [[AI_Module]] - guide to AI module (src/ai)&lt;br /&gt;
** [[FormulaAI]] - Guide to the experimental formula AI branch&lt;br /&gt;
* Themes&lt;br /&gt;
** [[ThemeSystem]] - customizing the screen layout for the game and the editor&lt;br /&gt;
* Multiplayer&lt;br /&gt;
** [[WesnothdDesign]] - Guide to the design of wesnothd, the multiplayer server.&lt;br /&gt;
* Gui2 - The new Gui-Framework&lt;br /&gt;
** [[GUIToolkit]]&lt;br /&gt;
** [[GUILayout]]&lt;br /&gt;
** [[GUIVariable]]&lt;br /&gt;
** Gui2 WML&lt;br /&gt;
*** [[GUICanvasWML]]&lt;br /&gt;
*** [[GUIToolkitWML]]&lt;br /&gt;
*** [[GUIWidgetDefinitionWML]]&lt;br /&gt;
*** [[GUIWidgetInstanceWML]]&lt;br /&gt;
*** [[GUIWindowDefinitionWML]]&lt;br /&gt;
* Savegames&lt;br /&gt;
** [[SavegameClassHierarchy]]&lt;br /&gt;
&lt;br /&gt;
= Communication, Feedback, Events =&lt;br /&gt;
* Gna! links&lt;br /&gt;
** http://bugs.wesnoth.org/ - Gna! - bugs and feature requests&lt;br /&gt;
** http://patches.wesnoth.org/ - Gna! - patches&lt;br /&gt;
&lt;br /&gt;
* Mailing lists&lt;br /&gt;
** https://mail.gna.org/listinfo/wesnoth-dev/ - wesnoth-dev&lt;br /&gt;
** https://mail.gna.org/listinfo/wesnoth-commits/ - wesnoth-commits&lt;br /&gt;
&lt;br /&gt;
* IRC&lt;br /&gt;
** [irc://irc.wesnoth.org/#wesnoth-dev freenode/#wesnoth-dev] - IRC (alias to irc.freenode.net)&lt;br /&gt;
** http://irclog.wesnoth.org/ - IRC logs&lt;br /&gt;
&lt;br /&gt;
* Forum - http://forum.wesnoth.org&lt;br /&gt;
&lt;br /&gt;
* This wiki - http://www.wesnoth.org/wiki/Main_Page &lt;br /&gt;
&lt;br /&gt;
* FOSDEM&lt;br /&gt;
** [[Fosdem2008]]&lt;br /&gt;
** [[Fosdem2009]]&lt;br /&gt;
** [[Fosdem2010]]&lt;br /&gt;
** [[Fosdem2011]]&lt;br /&gt;
** [[Fosdem2012]]&lt;br /&gt;
&lt;br /&gt;
* Google Summer of Code&lt;br /&gt;
** [[SummerOfCodeIdeas]] - Ideas for GSoC&lt;br /&gt;
** [[SoC_Information_for_Google]] - Our organization profile for Google&lt;br /&gt;
** [[SoC_People_to_bug_on_IRC]] - Who GSoC students can ask for help&lt;br /&gt;
&lt;br /&gt;
= Miscellaneous =&lt;br /&gt;
* [[DebugMode]] and [[CommandMode]] - in game debugging commands&lt;br /&gt;
* [http://www.wesnoth.org/units/trunk/animations.html Missing unit animations] - what's available and what's missing&lt;br /&gt;
* http://units.wesnoth.org/ - Unit reference&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC-WesnothWhiteboard_Gabba&amp;diff=49166</id>
		<title>GSoC-WesnothWhiteboard Gabba</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC-WesnothWhiteboard_Gabba&amp;diff=49166"/>
		<updated>2013-03-21T03:34:44Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical instance of &amp;quot;SVN&amp;quot; from mediawiki search to avoid false positives.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2010Student_2|gabba|SoC Ideas Your Own Ideas}}&lt;br /&gt;
[[Category:SoC Ideas Your Own Ideas]]&lt;br /&gt;
&lt;br /&gt;
'''''Important note for GSoC students: this document is only here for archival purposes! It is definitely not the best way to understand the whiteboard project in its current state. You should rather play around with it in the game, and study the source code, as well as ask gabba questions.'''''&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Gabba - Interface Streamlining and Planning System&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I intend to rework the current Wesnoth interface by introducing a planning system that will allow you to give orders and modify them before executing them as a &amp;quot;real action&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Side benefits include:&lt;br /&gt;
*allowing you and your allies to visually plan moves on the map together&lt;br /&gt;
*replacing &amp;quot;delay shroud updates&amp;quot; by a more elegant system&lt;br /&gt;
*finally making wml &amp;quot;sighted&amp;quot; events work properly&lt;br /&gt;
&lt;br /&gt;
''Updated 04/12/2010''&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
gabba&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://socghop.appspot.com/gsoc/student_proposal/review/google/gsoc2010/gabba/t127042278960 Wesnoth Whiteboard]&lt;br /&gt;
&lt;br /&gt;
=About Me=&lt;br /&gt;
See [[User:Gabba]]&lt;br /&gt;
&lt;br /&gt;
=History=&lt;br /&gt;
&lt;br /&gt;
To put things in context, this idea was already discussed in embryonic form&lt;br /&gt;
*here: http://www.wesnoth.org/forum/viewtopic.php?f=15&amp;amp;t=26324 &lt;br /&gt;
*and then here: http://www.wesnoth.org/forum/viewtopic.php?f=12&amp;amp;t=29102&amp;amp;start=0&lt;br /&gt;
*and again here: https://mail.gna.org/public/wesnoth-dev/2010-03/msg00001.html&lt;br /&gt;
*and finally here: [[GSoC-ShareUndoableMovesWithAllies_Gabba]]&lt;br /&gt;
before it ended up as this formal GSoC proposal.&lt;br /&gt;
&lt;br /&gt;
=Credits=&lt;br /&gt;
*''Boucman'' for introducing the idea of setting gotos when it's not your turn, and his thorough review of the proposal.&lt;br /&gt;
*''Crab_'' for the overall concept and the backend mechanisms, as well as many details I would not have thought of.&lt;br /&gt;
*''Mordante'' for his review and comments.&lt;br /&gt;
*''Noy'' for analysing in depth the gameplay implications.&lt;br /&gt;
*''Happygrue'' for his review and comments, and for being a patient multiplayer teacher.&lt;br /&gt;
*''Zookeeper'' for providing valuable input on some key points.&lt;br /&gt;
&lt;br /&gt;
=The Problem=&lt;br /&gt;
===Waiting tedium and difficult allied planning===&lt;br /&gt;
Currently when playing a coop game (either RPG or more standard multiplayer campaign), there are several things that really irk me when it's not my turn:&lt;br /&gt;
&lt;br /&gt;
* You wait a long time before seeing anything happening (unless your opponents are playing without delay shroud updates).&lt;br /&gt;
* When your ally who's taking his turn finally attacks an enemy or makes another non-undoable move, you have to sit through a delayed replay of his moves. If he already finished his turn, your ally has to wait while you watch this.&lt;br /&gt;
* After a few undoable moves by either allied player, communication is completely out of sync. If you tell your ally, &amp;quot;look, I'm encircling his leader&amp;quot;, he has no clue what you're talking about: he doesn't see what you're doing. If your ally asks you &amp;quot;should I move my white mage here to heal you units next turn&amp;quot;, you 1) have no clue about which hex &amp;quot;here&amp;quot; is supposed to mean 2) even if you did, you can't adequately counsel him, since you don't see how he positioned his other units.&lt;br /&gt;
&lt;br /&gt;
For this last point, you can of course place labels all over the place, but this project intends to provide a much more natural way to communicate.&lt;br /&gt;
&lt;br /&gt;
===Conflicts between undo and various events===&lt;br /&gt;
Undo and delay shroud updates are very useful, but several game features conflict with them. You could have 10 temporary moves planned, just to see what your ZOC would look like, but the first of any of these events will makes you lose any undo possibility:&lt;br /&gt;
* Triggering an ambush&lt;br /&gt;
* Triggering an WML event (&amp;quot;sighted&amp;quot; in particular poses problems)&lt;br /&gt;
* Attacking a unit&lt;br /&gt;
One of the goals of this project is to remove conflicts between planning moves, and this kind of event.&lt;br /&gt;
&lt;br /&gt;
===Annoying gotos===&lt;br /&gt;
Gotos (i.e. multi-turn moves) can be useful, but are also annoying since they are executed automatically at the beginning of your turn, and there's no visual display to show you at a glance which units have gotos set. You have no way to modify them outside of your turn either, to react to an unexpected turn of events.&lt;br /&gt;
&lt;br /&gt;
=The Project=&lt;br /&gt;
==Overview==&lt;br /&gt;
My project directly addresses the problems described above:&lt;br /&gt;
===Waiting tedium and difficult allied planning (solution)===&lt;br /&gt;
*Instead of waiting, you'll be able to plan moves (and recruits, attacks, etc) while the others are playing.&lt;br /&gt;
*If you have allies, a whole new dimension opens:&lt;br /&gt;
**You'll see the moves of your currently playing ally as he plans them, and therefore will be able to comment on them before he commits them&lt;br /&gt;
**Even better, he'll be able to see any moves you have planned for your turn, so you can finally coordinate that white mage placement or that attack correctly.&lt;br /&gt;
&lt;br /&gt;
===Conflicts between undo and various events (solution)===&lt;br /&gt;
You'll be able to plan as many moves as you want, but unlike the current &amp;quot;undoable moves&amp;quot;, they won't become &amp;quot;real&amp;quot; until ''you'' decide to:&lt;br /&gt;
*Simply planning a moves triggers nothing. Shroud updates, WML events, ambushes and the like won't have the possibility of happening until you decide to execute a move.&lt;br /&gt;
*When you commit a move and it does trigger an ambush, shroud update or WML event, your other planned moves will stay modifiable. The game will simply show you which of your remaining planned moves have become invalid because of the changing situation, so you can modify or replace them at your leisure.&lt;br /&gt;
*Unlike undoable moves which must be undone in order, planned moves can be undone in any order, and commited individually in any order.&lt;br /&gt;
&lt;br /&gt;
===Annoying gotos (solution)===&lt;br /&gt;
&lt;br /&gt;
If you don't want to rely on self-executing gotos, you won't have to. You'll be able to plan multi-turn moves, they'll always be visible on the map (and to your allies), and the part that corresponds to the current turn will execute only when you decide to.&lt;br /&gt;
&lt;br /&gt;
==Interface==&lt;br /&gt;
===A little use case===&lt;br /&gt;
Let's say it's the beginning of your turn, and you have planning mode turned on. You select one of your elven archers, move your mouse around, and click a destination to move it to. Instead of your unit moving immediately, you'll see an arrow-terminated line showing the path your unit will take to get there, and a &amp;quot;ghost&amp;quot; (i.e. semi-transparent) form of the archer at the destination position. You repeat this with an elven fighter and a scout, and all three paths now show on the map.&lt;br /&gt;
&lt;br /&gt;
Now, since you're playing as a team of two, you're not sure that the moves you picked will really benefit the team. You chat with your ally, and ask him &amp;quot;should I send my scout this way?&amp;quot;. Fortunately, he sees on his screen the same arrows as you, and therefore the move you plan for the scout. &amp;quot;Sure&amp;quot;, he answers. With renewed confidence, you hover the mouse over your elven scout and press 'E' to execute the move. The unit now really moves, and the arrow disappears.&lt;br /&gt;
&lt;br /&gt;
Before committing the two other moves, you want some assurance that you'll have backup, since the orcs are charging at you across the plain. You ask your ally: &amp;quot;Can you move your white mage behind my archer and fighter?&amp;quot;, and he agrees to do it. Even though it's not his turn, he selects his white mage and picks a destination for him, right next to your two units. You both see on your screens the path and the destination of the mage (on your screen his arrow shows in his team color); you now feel safer and decide to commit all moves. You select &amp;quot;Execute All&amp;quot; from the context menu, and the game starts executing your remaining planned actions in the order you defined them.&lt;br /&gt;
&lt;br /&gt;
The archer starts its move, but unfortunately it gets ambushed mid-way by a sneaky orcish assassin (you are playing the &amp;quot;Ambushing Assassin Era&amp;quot; :P). Since a special event happened, the game stops executing your moves. You decide to change the planned move of the fighter and attack the orcish assassin; since it's your last unit and you don't really need to plan the move before executing it, you shift-click to attack the orc, and the attack happens immediately. When his turn comes (or even before), your ally will probably also change the destination of his white mage.&lt;br /&gt;
&lt;br /&gt;
Without depicting the scene frame by frame, the mockup below shows a tentative look for the interface elements necessary to realize this use case:&lt;br /&gt;
http://forums.wesnoth.org/download/file.php?mode=view&amp;amp;id=39500#.png&lt;br /&gt;
&lt;br /&gt;
(Yes, I know that orcish assassins usually don't have ambush, but this one took courses from a renegade Elvish Ranger. Understood?)&lt;br /&gt;
*Red arrows are planned moves for the current player, the blue arrow is a move planned by his ally.&lt;br /&gt;
*Also notice the numbering, that corresponds to the order of programmed moves. The white mage should actually bear the number 1, if moving it is the first planned move that his owner set up. (See [[GSoC-WesnothWhiteboard_Gabba#Variants_and_experiments_on_the_numbering_system| Variants and experiments on the numbering system]]: various ways of displaying those numbers are being considered.)&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
These are the features planned for the Wesnoth Planning System interface.&lt;br /&gt;
&lt;br /&gt;
Disclaimer: all artistic details in this proposal, such as the display of arrows, numbers and the like, are subject to change.&lt;br /&gt;
&lt;br /&gt;
====Planning various actions====&lt;br /&gt;
The player will be able to plan visually on the map all his actions (moves, attacks, recruits/recalls) before &amp;quot;making them real&amp;quot;, i.e. commiting them.&lt;br /&gt;
He will also see on his map all planned actions from his allies who have shared them. Filtering those actions per-ally will be possible, to minimize map clutter. The display for those actions will be identical to his own, except they'll be clearly identified by the originating player's team color.&lt;br /&gt;
=====Moves and attacks=====&lt;br /&gt;
When the player selects a unit with movement points remaining, he'll see the usual thing as he moves his mouse, i.e. footsteps and the attack indicator to show attack possibilities. When he clicks to order an attack or a move, it won't be executed right away, but rather an arrow will be draw from the units current to its future position, and a &amp;quot;ghost&amp;quot; form of the unit will be drawn at the destination. If the action is an attack, the action indicator will remain to show the future attack.&lt;br /&gt;
With several attacks planned, the display would look like this:&lt;br /&gt;
&amp;lt;!-- the #png at the end of the URL makes mediawiki recongnize the image link --&amp;gt;&lt;br /&gt;
http://forums.wesnoth.org/download/file.php?mode=view&amp;amp;id=39499#.png&lt;br /&gt;
&lt;br /&gt;
If a move will take several turns to execute, this will be displayed on the arrow in a similar manner than the current footsteps.&lt;br /&gt;
&lt;br /&gt;
This image also shows a solution to display multiple moves/attacks planned for the same hex. Here: the two scouts that want to attack the orcish grunt from the same spot. We can't prevent the player from doing that, since he might have perfectly valid reasons to do so, such as repeatedly attacking a paladin with a horde of walking corpses from the only available hex.&lt;br /&gt;
&lt;br /&gt;
*A situation that requires special attention is when you'd like to plan a move that ends on a hex that currently contains a friendly or enemy unit. This should be supported, since the friendly unit can move out of the way and the enemy can die by the time you execute the planned move. However with the current interface, clicking on an occupied hex will select the unit in that hex, not give an order to move there.&lt;br /&gt;
**The most reasonable solution seems to be that if you're in planning mode and you have a unit selected, clicking on an occupied hex will set a planned move there, ''not'' select the unit there.&lt;br /&gt;
**Barring that, we'd need a shortcut key (such as Ctrl or Alt) to make sure a move gets planned instead of selecting a unit. I'll try to avoid this as it complicates the interface further.&lt;br /&gt;
&lt;br /&gt;
=====Recruit/Recall=====&lt;br /&gt;
A &amp;quot;ghost&amp;quot; of the soon-to-be-recruited/recalled unit will appear in the hex; various visual clues are being considered to indicate the planned move status and avoid confusion with an ambushing unit.&lt;br /&gt;
*Do we visually decrement the player's gold (without touching the backend value) when a planned recruit is added? It looks like a good idea, so he can count up how many units he can afford before confirming the recruits/recalls.&lt;br /&gt;
&lt;br /&gt;
====Validation and Conflicts====&lt;br /&gt;
The game will check all actions for validity whenever they are planned. They will also be re-checked for this after any modification to the planned moves, or after committing a move (which might trigger an ambush or a game-altering WML event).&lt;br /&gt;
Two kind of conflicts can be detected by this validity check:&lt;br /&gt;
*''Action Conflict'' (&amp;quot;soft conflict&amp;quot;): Conflict between two planned actions: any planned action which targets the same location as another. All actions displayed on screen will be checked for this, including those coming from other players. The game will let you plan voluntarily this kind of conflicting action, but will add a visual warning.&lt;br /&gt;
**example: the two Elvish Scouts planning to attack the Grunt from the same hex, in the image from the &amp;quot;little use case&amp;quot; section above, should both receive a conflict marker.&lt;br /&gt;
**if a move's destination is on top of a friendly unit's current position, we should probably not mark it as a conflict if we know from the move ordering that said unit is gonna evacuate the hex before the move that interests us is executed, thus freeing the way.&lt;br /&gt;
*''Gamestate conflict'' (&amp;quot;hard conflict&amp;quot;): Conflict between a planned action and the game state: this would be a planned action that tries to do an impossible move, such as moving into a cave wall. You won't be able to define those voluntarily, but some actions might end up in that state because of a WML event. These conflicts will have a stronger visual warning.&lt;br /&gt;
&lt;br /&gt;
With both kinds of conflicts, the player will keep the ability to delete the planned action or define another in its place.&lt;br /&gt;
&lt;br /&gt;
====Order of actions and Committing====&lt;br /&gt;
=====Ordering of actions=====&lt;br /&gt;
Planned actions will receive a sequence number as they are added. First action get number 1, second action gets number 2, and so on. You can see some mockups of various ways of displaying those numbers [[GSoC-WesnothWhiteboard_Gabba#Mockups_for_various_interface_elements|in the mockups section]]. Each player's units will be numbered separately.&lt;br /&gt;
&lt;br /&gt;
The sequence number is important for when the player would like to commit his planned actions without having to hover over individual units.&lt;br /&gt;
&lt;br /&gt;
=====Commiting moves=====&lt;br /&gt;
Whenever the player is satisfied with one of his planned action, and this action does not have a gamestate conflict, he can individually '''commit''' it by either accessing the unit's context menu and selecting &amp;quot;commit&amp;quot;, or simply hovering his mouse over it/selecting it and pressing 'e' (for &amp;quot;Execute&amp;quot;, which will probably be how the user knows the command, rather than &amp;quot;Commit&amp;quot; that sounds good for s&amp;amp;shy;&amp;amp;shy;v&amp;amp;shy;&amp;amp;shy;n/git users).&lt;br /&gt;
&lt;br /&gt;
If no unit is selected or hovered over, then the first action in the planned move queue (the one numbered '1' on screen) will be commited.&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;fast-commit&amp;quot;, &amp;quot;fast-forward&amp;quot; or '''Execute All''' command will be added, so that a bunch of trivial actions can be commited quickly. This command has only one goal: transform your planned moves into real moves nearly instantly. Therefore, with this command:&lt;br /&gt;
*The moves and recruits won't be animated, only combat will be.&lt;br /&gt;
*If there is shroud and you have the &amp;quot;stop when enemy sighted&amp;quot; option activated, any enemy sightings will be ignored nevertheless: this behavior is similar to what happens when you disable &amp;quot;delay shroud updates&amp;quot; after having done a bunch of undoable moves.&lt;br /&gt;
*The following behavior is also being considered (but won't easily be intuitive for the player, and might need to be moved to a separate command): if a unit is selected when Execute All is called, only moves numbered equal or higher as the number of the current unit will be executed. This allows you to quickly execute your last few planned moves while keeping the rest for later.&lt;br /&gt;
&lt;br /&gt;
Committing a move means the &amp;quot;real&amp;quot; action is executed as usual in Wesnoth, and remaining planned actions get validated. Note that you do not lose your other planned actions.&lt;br /&gt;
*The planned action is usually deleted at this point, except if it was a ''multi-turn'' move/move-attack; in this case only the part of the path that was executed on this turn gets removed.&lt;br /&gt;
&lt;br /&gt;
=====Re-ordering=====&lt;br /&gt;
The player will be able to change the ordering of his planned actions.&lt;br /&gt;
*The simplest way will be to cancel the action and to issue a new one, in which case the new order will be added at the end of the queue.&lt;br /&gt;
*I will also provide two commands, &amp;quot;bump up&amp;quot; and &amp;quot;bump down&amp;quot;, that move the selected or hovered unit one step up or down in the action queue. Those will need shortcut keys (tentatively 'z' and 'x'), as well as menu elements.&lt;br /&gt;
&lt;br /&gt;
====Canceling planned actions====&lt;br /&gt;
Canceling planned actions will be per-unit (unlike the old undo stack that forces you to undo things in order). By selecting &amp;quot;cancel&amp;quot; from the context menu of a unit or hitting 'C' while it's selected, you'll clear the planned action from that unit.&lt;br /&gt;
* move/attack: the ghost form, arrow and attack indicator just disappear&lt;br /&gt;
* recruit: the &amp;quot;planned recruit&amp;quot; ghost unit will disappear.&lt;br /&gt;
&lt;br /&gt;
You will also be able to cancel the planned action that was last defined if you issue the &amp;quot;cancel&amp;quot; command, without any unit selected.&lt;br /&gt;
&lt;br /&gt;
====ZOC display====&lt;br /&gt;
&amp;quot;Show enemy moves&amp;quot; will now be calculated taking into account planned unit positions, instead of real unit positions.&lt;br /&gt;
&lt;br /&gt;
====Toggle &amp;quot;now&amp;quot; and &amp;quot;after execute&amp;quot; positions====&lt;br /&gt;
To help visualizing the situation in tights spots where planned moves are likely to point to unit current positions, I'm considering implementing a view that removes all arrows (or at least those of valid moves) and shows only the positions of units after all moves are executed. It would be linked to a shortcut key so you can quickly switch back and forth between current &amp;lt;-&amp;gt; future situation.&lt;br /&gt;
&lt;br /&gt;
====Planning actions when it's not your turn====&lt;br /&gt;
The planning system will be available to plan moves, recruits and attacks when it's not your turn. If you have allies, they will see your plans if you have shared them.&lt;br /&gt;
Design choices will need to be made in the following areas:&lt;br /&gt;
*Do we enable planning mode by default when it's not your turn, and then non-planning mode when your turn starts? If so, a proeminent visual reminder of which mode we're in will be needed to avoid confusing players.&lt;br /&gt;
*How do we deal with the &amp;quot;track moves&amp;quot; option? It should at least be impossible to set or modify a planned move when the camera has been stolen by the &amp;quot;track moves&amp;quot; feature, otherwise you'll end up very frustrated.&lt;br /&gt;
*A solution to both points above could be to always disable planning mode by default (but unfortunately it might prevent people from even knowing the system exists), and disable move tracking whenever planning mode is on, even temporarily such as when you're holding shift to define planned actions.&lt;br /&gt;
*If move tracking is disabled, adding some visual warning that something is going on outside of your sight while you're planning moves would be useful.&lt;br /&gt;
&lt;br /&gt;
===Options===&lt;br /&gt;
*I will provide a dialog or menu to control who you share your planned moves to, and whose planned moves you display on your map.&lt;br /&gt;
&lt;br /&gt;
*A &amp;quot;Toggle Planning Mode&amp;quot; option will be provided to invert the behavior of shift-clicking; in planning mode shift-clicking does the real action directly; in normal mode shift-clicking will rather do the planning.&lt;br /&gt;
&lt;br /&gt;
===Summary of commands===&lt;br /&gt;
(Subject to change)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ''Command''&lt;br /&gt;
!  ''Shortcut key''&lt;br /&gt;
|-&lt;br /&gt;
|  Commit/Execute&lt;br /&gt;
|  E&lt;br /&gt;
|-&lt;br /&gt;
|  Fast Commit/Execute All&lt;br /&gt;
|  Shift+E&lt;br /&gt;
|-&lt;br /&gt;
|  Cancel&lt;br /&gt;
|  C&lt;br /&gt;
|-&lt;br /&gt;
|  Cancel All&lt;br /&gt;
|  Shift+C&lt;br /&gt;
|-&lt;br /&gt;
|  Direct action (planning mode) / Planned action (normal mode)&lt;br /&gt;
|  Shift+Click&lt;br /&gt;
|-&lt;br /&gt;
|  Toggle planning mode (invert shift-click behavior)&lt;br /&gt;
|  P&lt;br /&gt;
|-&lt;br /&gt;
|  Bump action up and down in queue&lt;br /&gt;
|  X, Z&lt;br /&gt;
|-&lt;br /&gt;
|  Toggle Now/After Execute display&lt;br /&gt;
|  Tab&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Mockups for various interface elements===&lt;br /&gt;
====Highlight planned path on select or mouseover====&lt;br /&gt;
A lot of planned paths overlaying each other would quickly get confusing, if you don't have a mean of telling which belongs to which unit. Paths will be highlighted whenever you hover over them or their unit; if a unit is selected its path will always be highlighted.&lt;br /&gt;
http://forums.wesnoth.org/download/file.php?mode=view&amp;amp;id=39504&amp;amp;sid=351c6863d85dce6d56e131736224b471#.png&lt;br /&gt;
&lt;br /&gt;
====Variants and experiments on the numbering system====&lt;br /&gt;
The &amp;quot;status-ball&amp;quot; display (cute but would pose problems for double and triple digits, and may conflict with the crown symbol):&lt;br /&gt;
&lt;br /&gt;
http://forums.wesnoth.org/download/file.php?mode=view&amp;amp;id=39500#.png&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;overlay&amp;quot; display:&lt;br /&gt;
http://forums.wesnoth.org/download/file.php?mode=view&amp;amp;id=39503&amp;amp;sid=351c6863d85dce6d56e131736224b471#.png&lt;br /&gt;
&lt;br /&gt;
The double/triple digits &amp;quot;overlay&amp;quot; display of number seems to work ok (three-digit might need to be placed in upper-half of hex to avoid completely hiding middle digit),&lt;br /&gt;
http://forums.wesnoth.org/download/file.php?id=39520&amp;amp;mode=view#.png&lt;br /&gt;
&lt;br /&gt;
especially with brief flashing of the number on top of a unit when this unit is hovered over or selected.&lt;br /&gt;
http://forums.wesnoth.org/download/file.php?mode=view&amp;amp;id=39521&amp;amp;sid=bb7ee496abdc777856a391f020f2d084#.png&lt;br /&gt;
&lt;br /&gt;
Alternative &amp;quot;side&amp;quot; display: simply show the number next to units. Less disruptive visually maybe?&lt;br /&gt;
http://forums.wesnoth.org/download/file.php?mode=view&amp;amp;id=39524&amp;amp;sid=bb7ee496abdc777856a391f020f2d084#.png&lt;br /&gt;
&lt;br /&gt;
====Manoeuvering in cramped areas====&lt;br /&gt;
Let's take the following &amp;quot;real-world&amp;quot; starting situation, from a campaign some of you will recognize:&lt;br /&gt;
http://www.wesnoth.org/forum/download/file.php?id=39774&amp;amp;mode=view#.png&lt;br /&gt;
&lt;br /&gt;
With a lot of units close together, the arrow display will get rather cramped. I tried to depict a lot of overlapping moves, to try and figure out how to best help the player in these circumstances. Of course this is an ugly hack job and could look better; also, not all of the elements depicted have to get in.&lt;br /&gt;
&lt;br /&gt;
http://www.wesnoth.org/forum/download/file.php?id=39793&amp;amp;mode=view#.png&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* The hovered over unit and it's highlighted arrow: this is a static picture, but in reality hovering the mouse over the various units would quickly clear up which arrows belongs to which units.&lt;br /&gt;
* Tentative display for a &amp;quot;destination&amp;quot; number (yellow ball with blue number). It may help matching starting and ending positions of units, especially when the ending is where another unit is standing.&lt;br /&gt;
* Tentative display for an invalid move (#4, the archer trying to move on the location of the druid, who is not programmed to move out of the way beforehand): the striped arrow, and triangle instead of a circle behind the blue '4'.&lt;br /&gt;
&lt;br /&gt;
With such a busy screen, even with paths that highlight on unit hover and such niceties, the player might get a bit confused: what's it gonna look like after all moves are executed? One solution would be to let the player hold a key such as Space or Tab, to end up with the following view:&lt;br /&gt;
&lt;br /&gt;
http://www.wesnoth.org/forum/download/file.php?id=39773&amp;amp;mode=view#.png&lt;br /&gt;
&lt;br /&gt;
This one doesn't convey as much info, but it's much clearer and offends the eye less. There's nothing that prevents the player from planning actions in this mode, either, switching to the &amp;quot;full info&amp;quot; view only occasionally.&lt;br /&gt;
*This is also a good view to see the result of Execute All:&lt;br /&gt;
**The moves are trivial and will probably not trigger an ambush or wml event&lt;br /&gt;
**Therefore after an Execute All from either view, the result will look like this view, except that all the numbers will be gone. (Well technically, the invalid move will still be visible in the &amp;quot;busy&amp;quot; view, since it was impossible to execute.)&lt;br /&gt;
*Practically, Execute All wouldn't be such a good idea; the player would probably commit one or two moves and then attack, or plan two moves and an attack and ''then'' Ex. All, which would commit the two moves, do the attack, and then stop.&lt;br /&gt;
&lt;br /&gt;
==Engine==&lt;br /&gt;
===Current state of the game engine===&lt;br /&gt;
The game state is currently synced between clients through the use of replays. As actions (recruits, moves, attacks, etc.) are executed on the current client (i.e., the client of the player who's playing his turn now), the local replay gets augmented with corresponding commands. Those commands are are stored as WML config objects, and have an ''undo'' attribute that indicates if they can still be undone, and a ''sent'' attribute that indicates if they have been synced over the network.&lt;br /&gt;
&lt;br /&gt;
Periodically, the current client calls turn_info::send_data(). Through a chain of calls, this function locates non-undoable, non-sent commands (with replay::get_data_range()), and transmits them over the network (network::send_data()) after having placed them in a config object under a [turn] tag.&lt;br /&gt;
&lt;br /&gt;
On the receiving end (i.e. all other clients), replay info is detected in turn_info::process_network_data(), and is eventually processed in do_replay_handle(), which actually replays the actions on the remote clients.&lt;br /&gt;
&lt;br /&gt;
===Changes to the game engine===&lt;br /&gt;
For this project, a vector of a new kind of object called ''planned_action'' will be maintained on each client. Vectors will all get exchanged between allied clients, so that each ally will end up with a vector of planned_actions per ally in play. A planned_action will either be a WML config, or have methods to serialize/deserialize easily to it, to allow sending over the network.&lt;br /&gt;
&lt;br /&gt;
* Here I'm using the term ''vector'', but I'll try to stay data-structure-agnostic as much as possible by hiding it under my own interface, so I can for example easily change it to a linked list or a dequeue if it seems desirable.&lt;br /&gt;
&lt;br /&gt;
====Current client to allies====&lt;br /&gt;
&lt;br /&gt;
On the current client, the player will have an appropriate interface to plan actions, and will be able to ''commit'' them as real actions, either one by one in the order of his choice, or all at once, in the order in which they exist in the planned_action vector. A commit means that the planned_action is deleted, and the corresponding real action performed, and then added to the replay as in the current system.&lt;br /&gt;
&lt;br /&gt;
After each commit, whether it's a single one or part of a sequence, it's very possible that other planned moves will not be realizable. Anything could have happened, from the position of a move now being blocked because the last unit that tried to move got ambushed, to a WML event that could change anything it wants. Therefore, each commit is followed by a validity evaluation of all remaining planned_moves (in this vector and others). Detected conflicts will stop the execution of a commit sequence, and they will be displayed to the player in the interface.&lt;br /&gt;
&lt;br /&gt;
The mechanism of calling send_data() periodically will not change, except that the current client will send together (in the same network::send_data()) any updates to the replay, and any updates to the planned_action vector.&lt;br /&gt;
Here an important distinction will be made between allies and enemies:&lt;br /&gt;
* enemies get sent only updates to the replay&lt;br /&gt;
* allies get sent both updates to the replay and planned_moves&lt;br /&gt;
&lt;br /&gt;
On the receiving end of these updates, clients will use turn_info::process_network_data() to process the incoming info as usual. Updates to the gamestate i.e. replay commands will be applied first, followed by updates (if any) to the vector of planned_actions that corresponds to the sender. Then clients will check all planned_moves in all vectors for conflicts with the updated game state.&lt;br /&gt;
&lt;br /&gt;
The simplest approach for updating remotely the vector of planned_moves would be to re-send it completely whenever there's any change to it. However this wastes network bandwith and processing time, and since planned_moves are designed to be displayed on-screen, it might affect their display speed. The preferred approach will therefore be to implement a simple merge algorithm -- the merge will be very simple and without possibility of conflicts, since each vector will only have one update source. Only changes will be transmitted, such as additions and deletions at specific positions in the vector, as well as planned_actions switching places, and all operations that will become necessary.&lt;br /&gt;
&lt;br /&gt;
====Allies to current client====&lt;br /&gt;
Even if it's not their turn, players will still have access to the interface to plan actions. In addition of being available at the beginning of the next turn, the planned_action vector hence created will periodically get transmitted (network::send_data()) to all allies, including the ally who's currently having his turn.&lt;br /&gt;
&lt;br /&gt;
The processing of those planned_actions will happen in the same way that those originating from the current client: they get merged in the vector of planned_actions corresponding to the sender, checked for validity and displayed accordingly.&lt;br /&gt;
&lt;br /&gt;
====Sequence diagram showing the exchange of data====&lt;br /&gt;
http://forums.wesnoth.org/download/file.php?mode=view&amp;amp;id=39611&amp;amp;sid=1a3b8ffb7bbc1206d1257a5878a78584#.png&lt;br /&gt;
&lt;br /&gt;
====ZOC calculations for planned moves====&lt;br /&gt;
The &amp;quot;show enemy moves&amp;quot; feature will now be calculated from planned unit positions by default, instead of current unit positions. For this I'll need to build my own unit map and calculate ZOCs from there.&lt;br /&gt;
When several moves are planned for the same spot, only the last one to be programmed will be taken into account; this will have an influence when ZOC-less and normal units are heading for the same hex.&lt;br /&gt;
*Alternatively, we can take into account only the unit with the most powerful ZOC headed for this hex, it might be more intuitive for the player.&lt;br /&gt;
&lt;br /&gt;
==Clean up==&lt;br /&gt;
This is a tentative list of issues resolved, options removed (more KISS) and of areas of the code that will get cleaned up or completely removed as a result of this project.&lt;br /&gt;
* &amp;quot;Delay shroud updates&amp;quot; won't be necessary anymore; this will get rid of the &amp;quot;delay shroud update on start&amp;quot; preference, and of the in-game &amp;quot;delay shroud updates&amp;quot; menu element.&lt;br /&gt;
* The &amp;quot;sighted&amp;quot; WML event will work properly, now that the conflict with delay shroud updates will be gone.&lt;br /&gt;
* The undo stack and related code will be removed, if after gathering feedback on the new interface it is deemed obsolete.&lt;br /&gt;
&lt;br /&gt;
==Gameplay considerations==&lt;br /&gt;
Moved these somewhat lenghty considerations to [[GSoC-WW_Gameplay_Considerations_Gabba]].&lt;br /&gt;
&lt;br /&gt;
==Optional/Future developments==&lt;br /&gt;
Many interesting further developments will be made possible by this project, such as showing the chance-to-kill for a combined attack.&lt;br /&gt;
See [[GSoC-WW_Optional_Future_Gabba]].&lt;br /&gt;
&lt;br /&gt;
=Calendar=&lt;br /&gt;
*''Note: tasks colored &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; are done''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Start of GSoC: May 24'''&lt;br /&gt;
===Before mid-term eval===&lt;br /&gt;
''(8 weeks of work)''&lt;br /&gt;
'''Implement planned moves as a local (non-networked) feature.'''&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Initial backend work (~1 week)&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Backend: Design and implement framework for managing planned moves (planned_move class, stl container)&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Backend: Implement operations in planned_move to add, remove, switch place of planned moves&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Interface for adding and removing planned moves (~1.5 week)&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Backend: Arrow and unit ghosts display framework&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Backend: Checking of moves for gamestate conflicts&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Interface: defining planned moves (volutarily creating gamestate conflicts is forbidden)&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Interface: reordering moves&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Interface: Add preliminary numbering display&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Interface: Highlight arrows on hover/selection of their unit&amp;lt;/span&amp;gt;&lt;br /&gt;
#Introduce committing of moves and basic move validation (~1.5 week)&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Interface: &amp;quot;commit on select&amp;quot; + ''[optional] commit on hover''&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Interface: &amp;quot;cancel on select&amp;quot; + ''[optional] cancel on hover''&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Backend: check moves for gamestate conflicts after every commit&amp;lt;/span&amp;gt;&lt;br /&gt;
#* Interface: Visual warning for gamestate conflicts&lt;br /&gt;
#'''Intermediate milestone: (4 weeks in) June 21: all the above tasks must be finished.'''&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Implement &amp;quot;soft conflicts&amp;quot; detection and ZOC display (~1 week)&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Backend: Add ZOC (ctrl+v) calculations according to planned moves&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Backend: Detect &amp;quot;soft blocks&amp;quot; i.e. blocking of planned moves by own units/own planned moves&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Interface: for now, forbid defining moves with &amp;quot;soft blocks&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;#Add attack and recruit to the planned actions (~1 week)&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Interface: display of planned attacks&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Backend: committing of planned attacks&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Backend: planning/committing of recruits ''[optional]''&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Interface: display of planned recruits ''[optional]'' &amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Backend: work out interactions with WML events; validate actions after they happen.&amp;lt;/span&amp;gt;&lt;br /&gt;
#Add other useful interface features (~1 week)&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Backend: toggling of state between planning mode and normal mode&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Interface: menu/shortcut for &amp;quot;toggle planning mode&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Interface: tab-click inversion of behaviour ''[optional]''&amp;lt;/span&amp;gt;&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Interface: &amp;quot;commit next&amp;quot; ''[optional]''&amp;lt;/span&amp;gt;&lt;br /&gt;
#* Interface: &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;quot;cancel last&amp;quot;&amp;lt;/span&amp;gt;/&amp;quot;cancel all&amp;quot; ''[optional]''&lt;br /&gt;
#Bugfixing in preparation for mid-term (~1 week)&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;General bugfixing&amp;lt;/span&amp;gt;&lt;br /&gt;
#* Backend: If appropriate, &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;temporarily disable delay shroud updates code&amp;lt;/span&amp;gt;, and test if &amp;quot;sighted&amp;quot; wml events now work properly ''[optional]''&lt;br /&gt;
&lt;br /&gt;
'''Milestone: (8 weeks in) July 16, Mid-term eval''': All the above tasks must be finished. We have a functional reworked interface and planning system for single-player.&lt;br /&gt;
&lt;br /&gt;
===After mid-term eval===&lt;br /&gt;
''(3 weeks of work)''&lt;br /&gt;
#Additional interface work (~1 week)&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Interface: Resolve issues with planning actions when it's not your turn&amp;lt;/span&amp;gt; (some issues remain)&lt;br /&gt;
#* &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Interface: allow defining moves on hexes occupied by current units or planned moves ''[optional]''&amp;lt;/span&amp;gt;&lt;br /&gt;
#** Interface: alternate display to ghosts for multiple moves planned for the same hex ''[optional]''&lt;br /&gt;
#** &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Interface: visual hints for a move heading for an existing unit's location. ''[optional]''&amp;lt;/span&amp;gt; (more needs to be done)&lt;br /&gt;
#* Interface: Implement alternate arrow-less view on [some key] ''[optional]''&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Bugfix and improve the interface (~2 weeks)&amp;lt;/span&amp;gt;&lt;br /&gt;
#*&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Make sure all commands are accessible through both menus and shortcut keys&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Milestone (no set date), Complete Interface:''' The planning interface must undergo review by the dev team and be considered solid and complete before any work on the networked part starts.&lt;br /&gt;
&lt;br /&gt;
====Add the networked part====&lt;br /&gt;
''This whole section is [optional]''.&lt;br /&gt;
#Backend: Implement the merge algorithm for planned_action vectors from other clients&lt;br /&gt;
#Set up and test transmission and merging of planned_action vector diffs between clients&lt;br /&gt;
#*Backend: each client keeps a copy of the planned action vector of every other ally in play&lt;br /&gt;
#*Backend: Implement and test continuous syncing mechanism of planned_moves between X number of allies&lt;br /&gt;
#Interface: Implement team-colored display according to planned move origin&lt;br /&gt;
#Interactions with undo (if we don't decide to get rid of it)&lt;br /&gt;
#*Backend: Keep planned actions around as &amp;quot;undoable&amp;quot; until their corresponding real action is permanent&lt;br /&gt;
#*Backend: On undo, revert the appropriate planned action to normal status&lt;br /&gt;
#*Interface: make undoable planned actions invisible to their owner but visible to his allies.&lt;br /&gt;
#Backend: Expand soft conflict detection to include planned_actions received from allies&lt;br /&gt;
#Add filter to choose who you share your planned_moves to and who you receive them form&lt;br /&gt;
#*Backend: filter reception/sending of planned moves&lt;br /&gt;
#*Interface: dialogue for filtering planned moves&lt;br /&gt;
#If the networked part gets done in time, organise a dev tournament with team games to see the system in action on a larger scale.&lt;br /&gt;
&lt;br /&gt;
'''Milestone: (11 weeks in) August 9, suggested pencils down date:''' All the above tasks must be finished. We have a polished reworked interface and planning system.&lt;br /&gt;
If things went exceptionally well, we also have a multiplayer allied planning system.&lt;br /&gt;
&lt;br /&gt;
===Final touches===&lt;br /&gt;
''(1 week of work)''&lt;br /&gt;
#Add a section to the Wesnoth manual introducing and explaining the planning system.&lt;br /&gt;
#Write a short after-action report&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Discuss future plans for improving/expanding on the planning system&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Milestone: (12 weeks in) August 16, End of GSoC 2010:''' Documentation tasks must be completed.&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_GuilhermeSouza&amp;diff=49165</id>
		<title>SummerOfCodeProposal GuilhermeSouza</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_GuilhermeSouza&amp;diff=49165"/>
		<updated>2013-03-21T03:33:52Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical instance of &amp;quot;SVN&amp;quot; from mediawiki search to avoid false positives.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2010Student_2|schumi|SoC Ideas Persistent Gameworld}}&lt;br /&gt;
[[Category:SoC Ideas Persistent Gameworld]]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Guilherme Souza - Implement persistent storage of gameworld data between semi-related scenarios&amp;lt;/h4&amp;gt;&lt;br /&gt;
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. &lt;br /&gt;
=IRC=&lt;br /&gt;
schumi&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://socghop.appspot.com/gsoc/student_proposal/review/google/gsoc2010/schumi/t127067286456 Persistent storage of gameworld data - irc: schumi]&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Write a small introduction to yourself.&amp;lt;/h4&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;State your preferred email address.&amp;lt;/h4&amp;gt;&lt;br /&gt;
guirns@gmail.com&lt;br /&gt;
&amp;lt;h4&amp;gt;If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/h4&amp;gt;&lt;br /&gt;
*Wesnoth forums: schumi&lt;br /&gt;
*gna.org: schumi&lt;br /&gt;
*irc: schumi&lt;br /&gt;
&amp;lt;h4&amp;gt;Why do you want to participate in summer of code?&amp;lt;/h4&amp;gt;&lt;br /&gt;
Because it is an great opportunity of getting programming experience and helping open-source projects. At the same time!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;What are you studying, subject, level and school?&amp;lt;/h4&amp;gt;&lt;br /&gt;
I'm an undergrad in Computer Engineering at Instituto Tecnológico de Aeronáutica.I have just started my fourth year.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;What country are you from, at what time are you most likely to be able to join IRC?&amp;lt;/h4&amp;gt;&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.&amp;lt;/h4&amp;gt;&lt;br /&gt;
At the end of July, I'm going to IMC (http://www.imc-math.org/), so I can't work much on these days.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;What programs/software have you worked on before?&amp;lt;/h4&amp;gt;&lt;br /&gt;
I've worked in some programs for university projects.The most important are: &lt;br /&gt;
* A system for library administration&lt;br /&gt;
* Some programs that use LED's and cameras for better interaction with the computer (http://www.youtube.com/watch?v=XlE3Rg9EQ3Q).&lt;br /&gt;
Also I like to participate in programming competitions, like TopCoder, Google CodeJam and ACM-ICPC(going to the last world finals)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/h4&amp;gt;&lt;br /&gt;
Except for the library program, where the whole class was a team(approx. 30 students), only in small teams (3-6 persons)  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;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?&amp;lt;/h4&amp;gt;&lt;br /&gt;
No, I haven't.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/h4&amp;gt;&lt;br /&gt;
No, but I plan to.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Gaming experience - Are you a gamer?&amp;lt;/h4&amp;gt;&lt;br /&gt;
Yes, I really like to play games :).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;What type of gamer are you?&amp;lt;/h4&amp;gt;&lt;br /&gt;
I like to play the games until I finish them. But I don't care much to achieve things like 100% completion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;What type of games?&amp;lt;/h4&amp;gt;&lt;br /&gt;
I like more strategy games (Warcraft, Starcraft, Wesnoth :) ), RPG (Final Fantasy,Chrono Trriger) and the classics (Sonic, Mario, Zelda,etc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;What type of opponents do you prefer?&amp;lt;/h4&amp;gt;&lt;br /&gt;
The good ones. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Are you more interested in story or gameplay?&amp;lt;/h4&amp;gt;&lt;br /&gt;
I prefer gameplay over history. But the best games normally have both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&amp;lt;/h4&amp;gt;&lt;br /&gt;
Yes, I have played Wesnoth before, since the 1.4 version. I have finished all the mainline campaigns, and only played multiplayer with friends. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;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&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N (during the evaluation period or earlier) please state so.&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;3) Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/h4&amp;gt;&lt;br /&gt;
I can read fluently, but my writing isn't very good. Probably I'm doing some grammar errors in this wiki. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;What spoken languages are you fluent in?&amp;lt;/h4&amp;gt;&lt;br /&gt;
Portuguese and English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/h4&amp;gt;&lt;br /&gt;
Yes, I think so.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Do you give constructive advice?&amp;lt;/h4&amp;gt;&lt;br /&gt;
I try to make only constructive advices.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Do you receive advice well?&amp;lt;/h4&amp;gt;&lt;br /&gt;
Yes, I think so.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Are you good at sorting useful criticisms from useless ones?&amp;lt;/h4&amp;gt;&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want&amp;lt;/h4&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;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?&amp;lt;/h4&amp;gt;&lt;br /&gt;
I selected the persistent gameworld project form the ideas list. I would concentrate first in modifications for single player, and then in multiplayer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;If you have invented your own project, please describe the project and the scope.&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Why did you choose this project?&amp;lt;/h4&amp;gt;&lt;br /&gt;
Because it looks like a great addition to Wesnoth, and something I think I can do.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/h4&amp;gt;&lt;br /&gt;
My expected timeline is:&lt;br /&gt;
&lt;br /&gt;
*9 April - 24 May&lt;br /&gt;
Study the code and WML, implement some ideas and interact with the community for ideas and suggestions.&lt;br /&gt;
*24 May - 10 June&lt;br /&gt;
Implement the single player part.&lt;br /&gt;
*10 June - 14 June&lt;br /&gt;
Test the solution with the map developers, doing the necessary changes. Get more ideas for the multiplayer.&lt;br /&gt;
*14 June - 19 July&lt;br /&gt;
Implement the multiplayer part.&lt;br /&gt;
*20 July - 27 July&lt;br /&gt;
Test the solution with the map developers, doing the necessary changes. Get more ideas for the game master mode.&lt;br /&gt;
*27 July - 16 April.&lt;br /&gt;
Implement the game master mode and test it.&lt;br /&gt;
&lt;br /&gt;
As I said before, at the end of July I'm traveling IMC (http://www.imc-math.org/), so I can't work much on these days.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Include as much technical detail about your implementation as you can&amp;lt;/h4&amp;gt;&lt;br /&gt;
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_:&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=WML Syntax=&lt;br /&gt;
 [get_global_variable]&lt;br /&gt;
  side=1&lt;br /&gt;
  namespace=my_addon&lt;br /&gt;
  from_global=my_variable_name&lt;br /&gt;
  to_local=foo&lt;br /&gt;
 [/get_global_variable]&lt;br /&gt;
&lt;br /&gt;
 [set_global_variable]&lt;br /&gt;
  side=1&lt;br /&gt;
  namespace=my_addon&lt;br /&gt;
  from_local=my_variable_name&lt;br /&gt;
  to_global=foo&lt;br /&gt;
 [/set_global_variable]&lt;br /&gt;
&lt;br /&gt;
 [clear_global_variable]&lt;br /&gt;
  side=1&lt;br /&gt;
  namespace=my_addon&lt;br /&gt;
  global=foo&lt;br /&gt;
 [/clear_global_variable]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;What do you expect to gain from this project?&amp;lt;/h4&amp;gt;&lt;br /&gt;
Experience with a big team and big projects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/h4&amp;gt;&lt;br /&gt;
The community and the project. If I like then (and probably will) I would continue helping Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Are you familiar with any of the following tools or languages?&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    * Sub&amp;amp;shy;&amp;amp;shy;version (used for all commits)&lt;br /&gt;
I've used it for some projects in the University&lt;br /&gt;
    * C++ (language used for all the normal source code)&lt;br /&gt;
Yes, it s the language I know most about.&lt;br /&gt;
    * STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
STL and Sdl.&lt;br /&gt;
    * Python (optional, mainly used for tools)&lt;br /&gt;
I've some basic knowledge.&lt;br /&gt;
    * build environments (eg cmake/autotools/scons)&lt;br /&gt;
The only experience I have with those is compiling wesnoth :)&lt;br /&gt;
    * WML (the wesnoth specific scenario language)&lt;br /&gt;
I have only take a look in some WML files.&lt;br /&gt;
    * Lua (used in combination with WML to create scenarios)&lt;br /&gt;
No experience in LUA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Which tools do you normally use for development? Why do you use them?&amp;lt;/h4&amp;gt;&lt;br /&gt;
*C/C++: On windows I use Code::Blocks, in linux I use Emacs for small programs and Code::Blocks for bigger ones.&lt;br /&gt;
*Python: Emacs&lt;br /&gt;
*Java: Eclipse/NetBeans&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;h4&amp;gt;What programming languages are you fluent in?&amp;lt;/h4&amp;gt;&lt;br /&gt;
C,C++,Java(not much) .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;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 &amp;quot;there is no way to contact you&amp;quot; does arise! &amp;lt;/h4&amp;gt;&lt;br /&gt;
I will provide my phone number in my SOC application.&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_gabba&amp;diff=49164</id>
		<title>SummerOfCodeProposal gabba</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_gabba&amp;diff=49164"/>
		<updated>2013-03-21T03:32:46Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical references to Subversion from the wiki search function&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
'''''IRC:''''' gabm&lt;br /&gt;
&lt;br /&gt;
'''''Wesnoth forums and GNA!:''''' gabba&lt;br /&gt;
&lt;br /&gt;
'''''Languages spoken:''''' French, English, Spanish&lt;br /&gt;
&lt;br /&gt;
I've been itching for a long time to contribute something to one of my favorite open-source games, and this program seems like the perfect opportunity. Furthermore, I intend to validate this summer's work as an internship with my university.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
I've dabbled with code since the age of 15 (more or less), where I copied my first Basic program line by line from Science&amp;amp;Vie magazine. It contained a bug, so that was also my first bug fix! I self-learned Java when I was 18 by going through most of the Java Tutorial.&lt;br /&gt;
&lt;br /&gt;
However my first serious programming projects were at my university, where we have a large (5-person, minimum 10 hours a week) team project every year. These projects were:&lt;br /&gt;
&lt;br /&gt;
*1st year: assemble a robot complete with motor, wheels, microcontroller and sensors, and program it to follow lines traced on the ground and detect and avoid obstacles. This was developed in C/C++ under linux, and cross-compiled for the microcontroller. We used Eclipse as our IDE.&lt;br /&gt;
&lt;br /&gt;
*2nd year: starting from the given specifications, program a 3D Pinball game and an editor to create different pinball tables. This time they threw everything they could at us, so we could learn to use different technologies and interoperate them efficiently. Therefore, we programmed both in C++ (for the backend) and Java (for the editor's interface), with JNI and JAWT to glue them together. We used XML to save the pinball tables (using the Xerces library), the Box2D engine for the physics simulation, OpenGL for graphics, FMOD for sound, and a couple smaller libraries for things like calculating the convex shell of a 3D model. We modeled our objects in 3d Studio MAX.&lt;br /&gt;
&lt;br /&gt;
I was team leader on this project, as well as the third year one.&lt;br /&gt;
&lt;br /&gt;
I could provide the source of that project to my mentor(s) if they ask for it, so they can see how I work. I would write a lot of that code differently (and hopefully better) today, but it still shows I can code something that works.&lt;br /&gt;
&lt;br /&gt;
*3rd year: the idea this time (We're in the last stages of this project as I write) was to take the specifications from last year and adapt them to answer an imaginary client's (represented by a teacher) needs. The main change was adding multiplayer gameplay. We chose to implement a client-server architecture where the physics would be calculated on the server; all players share a dome-shaped table and compete for points. This time again we had to use a mix of technologies: the server runs under linux, and we have a Windows XP client and a Windows Mobile 5 (Pocket PC) client. We coded in C++ and C# this time, and we used the RakNet (network), Bullet (physics) and Irrlicht (graphics) libraries.&lt;br /&gt;
&lt;br /&gt;
As you can see, I did most of my software development in teams of two to five people. Which doesn't mean I can't work alone, I'm very autonomous.&lt;br /&gt;
&lt;br /&gt;
==Open Source Involvement==&lt;br /&gt;
&lt;br /&gt;
I got involved mostly in two open source projects: TA Spring and Battle for Wesnoth.&lt;br /&gt;
&lt;br /&gt;
TA Spring (http://spring.clan-sy.com): I became an active participant on the forums since the early days of the project. I contributed a lot of ideas, many of which were implemented; for instance the terrain map that determines regions of the map that hinder or accelerate unit movements. I also did one or two hacks to the source code and posted them on the forum, but I was not much involved with the coding.&lt;br /&gt;
&lt;br /&gt;
Battle for Wesnoth: I was active for a while on the forums, and again I mainly contributed ideas, especially in the domain of AMLA (units improving beyond their maximum XP level).&lt;br /&gt;
&lt;br /&gt;
'''''PATCH''''': I recently commited a small patch to add a new WML attribute (a tasked picked from the [[EasyCoding]] page). It's smallish and I'm not sure it shows anything about my abilities, but at least I managed to add a small feature in a clean way :). Please see https://gna.org/patch/index.php?1162&lt;br /&gt;
&lt;br /&gt;
Irrlicht, Bullet: This is very light involvement, but I try to contribute back whatever I may need to fix in those open-source engines.&lt;br /&gt;
&lt;br /&gt;
==Gaming experience==&lt;br /&gt;
&lt;br /&gt;
I'm very passionate about games, and I like collecting and playing all the classic games in every genre, be they recent or old. I also love playing and following open-source games. I love strategy games and roguelikes. As far as opponents go, I prefer playing against an AI, however I regularly have LAN parties with my friends (and yes, we play Wesnoth!). I also play online from time to time.&lt;br /&gt;
&lt;br /&gt;
In games, I like a good mix of story and gameplay, but I'm certainly better at creating the gameplay part than the story part of a game.&lt;br /&gt;
&lt;br /&gt;
===Wesnoth playing experience===&lt;br /&gt;
&lt;br /&gt;
I've played the main campaign (Heir to the Throne) several times, as well as a few others. As said above I regularly have a game of multiplayer Wesnoth with some close friends.&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
===Language===&lt;br /&gt;
&lt;br /&gt;
French is my mother tongue, but I'm perfectly fluent in English, both written and spoken (even though there's room for improvement). And I can hold a conversation in Spanish.&lt;br /&gt;
&lt;br /&gt;
===Social skills===&lt;br /&gt;
&lt;br /&gt;
I'm familiar with forums and the flame wars that can erupt; I generally keep my cool and try to be diplomatic, until people calm down and start reasoning instead of shouting.&lt;br /&gt;
I give and take constructive advice, but I don't follow every random suggestion that's thrown at me either.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
I selected the &amp;quot;Reorganizing the savegame format&amp;quot; idea. It has a pretty clear task definition, and I intend to do the work as described.&lt;br /&gt;
&lt;br /&gt;
I love the idea of multiplayer campaigns, and working on the backend to make it happen seems like a perfect way to contribute. Besides, it covers an area of programmming I'm comfortable with: I like designing an architecture, working with files, defining protocols, and so on.&lt;br /&gt;
&lt;br /&gt;
==Timeline==&lt;br /&gt;
''revised april 14th, 2009''&lt;br /&gt;
&lt;br /&gt;
I'll be working on this project from May 1st (or even possibly April 26th) to August 17st, for a total of 15 weeks. I may take one week off for vacations, but the exact date is to be determined.&lt;br /&gt;
I'll spend 35 hours a week on the project, most of the time working during &amp;quot;business hours&amp;quot;. To validate my internship, my university requires me to work at least 35 hours a week, so I won't be cheating on this.&lt;br /&gt;
&lt;br /&gt;
Here's the breakdown by week of how I plan the 15 weeks of this project:&lt;br /&gt;
&lt;br /&gt;
'''''Week 1-3:''''' Analysis and documentation of current save code. Getting in touch with all involved.&lt;br /&gt;
*Deliverable: documented list of all save attributes&lt;br /&gt;
&lt;br /&gt;
'''''Weeks 4-6:''''' Design and prototypes; mid-term evaluation&lt;br /&gt;
*Deliverable: detailed savegame format, and prototype of C++ refactoring&lt;br /&gt;
&lt;br /&gt;
'''''Weeks 7-10:''''' Implement Single-player using the new save code&lt;br /&gt;
*Deliverable: saving/loading/replaying campaign scenarios works using the new save code&lt;br /&gt;
&lt;br /&gt;
'''''Weeks 11-14:''''' Implement Multi-player using the new save code, and address side issues.&lt;br /&gt;
*Deliverable: multiplayer campaigns and scenarios work using the new save code&lt;br /&gt;
&lt;br /&gt;
'''''Week 15:''''' Wrap up, write any missing documentation (but I'll document as I go).&lt;br /&gt;
*Deliverable: final code and documentation&lt;br /&gt;
&lt;br /&gt;
==Technical Details==&lt;br /&gt;
&lt;br /&gt;
«&amp;amp;nbsp;Do not be hasty&amp;amp;nbsp;» - Treebeard &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I must begin with a disclaimer: I really dislike hasty design decisions, and have seen cause them many problems. Therefore although I may be proposing some changes below, I'll spend the first few weeks of the summer of code re-evaluating them, and talking to whoever might be affected by the changes.&lt;br /&gt;
&lt;br /&gt;
To start with, here's my answers to the questions asked on the SoC_Ideas_Savegame page: &lt;br /&gt;
&lt;br /&gt;
=== Question 1 – Adapter vs Using raw persistence data ===&lt;br /&gt;
The approach taken in config_adapter.cpp is similar to the one of the Adapter design pattern: shield other objects from a class (config) that doesn't present the wished-for interface, by providing a «&amp;amp;nbsp;middleman&amp;amp;nbsp;» that talks to both. This has maintenance benefits, as the config class or the savegame format can change without directly affecting other classes, and other classes can change without putting pressure on config or the save format; only config_adapter.cpp needs to change. However the pattern Adapter is mainly used when one doesn't have control over the interface of the target class, which is not the case here, as the config class is part of wesnoth. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the encapsulation point of view, this design obviously forces participating objects (gamemap, unit_map, gamestatus) to provide getter/setter methods so they can receive or give information. Good encapsulation principles say that you should rather tell the object to do the work, providing information as needed - preferably in the shape of an object. This is the approach taken by game_state, which populates itself using information from a config object. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We must notice that in both cases the config class is not much encapsulated; however this is very hard to avoid as config is essentially a &amp;quot;data bag&amp;quot; with the contents of a WML tag. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I'd personally favor the approach taken by game_state, especially it already seems to be used in most places. However... &amp;quot;do not be hasty&amp;quot;. YogiHH states that the code is currently very hard to maintain, and some more insight into the problem would be needed. In particular, I'd like to analyse further which code is subject to changing often and might warrant the use of the Adapter or another pattern that helps reducing the impact of change. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Question 2 – Removing config_adapter.cpp  ===&lt;br /&gt;
So, let's say we want to remove config_adapter.cpp/hpp and move it's code elsewhere. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;config_adapter.cpp [which is not object-oriented at all] offers 4 methods, 3 being rather minor utility functions to extract some info from a config object, and the major one being get_player_info, which has... a lot of parameters. The major IN parameters are a config object and the gamestate object (which is not const for some reason), and there are various OUT parameters, like a vector of team objects. &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall, config_adapter.cpp doesn't seem to play a major role: &lt;br /&gt;
&lt;br /&gt;
* play_controller::init uses get_player_info(), get_first_human_team() and get_unique_saveid() &lt;br /&gt;
* some classes use get_theme() &lt;br /&gt;
&lt;br /&gt;
get_theme is small and would be easy to move (probably into game_state). For the three other methods I see two alternatives: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Move them into play_controller and let that class handle the raw config info. It's the same approach as with game_state, however this will create more maintenance problems, by adding one more class that must change if the savegame format or even the config class changes. Overall, exposing more of the code to the persistence framework seems a bad idea. &lt;br /&gt;
* Have either game_state or gamestatus become the definite boundary with the save code: we could set the general principle that any class interested to get info from a savegame config object must do so through game_state or gamestatus. Since a question below deals with a merger, these may actually be the same class. With this approach, get_player_info(), get_first_human_team() and get_unique_saveid() would find a new home (hopefully in a nicely refactored way) in this new boundary class. &lt;br /&gt;
&lt;br /&gt;
=== Question 3 - The player_info struct and the team class ===&lt;br /&gt;
The following fields are common to player_info and team_info (the struct that holds all the data of the team class):&lt;br /&gt;
&lt;br /&gt;
* name (Stores the current_player name)&lt;br /&gt;
* gold (Amount of gold the player has saved)&lt;br /&gt;
* can_recruit (Units the player has the ability to recruit)&lt;br /&gt;
&lt;br /&gt;
Only those are specific to player_info:&lt;br /&gt;
&lt;br /&gt;
* gold_add (“yes” or “no”, controls carryover gold)&lt;br /&gt;
* available_units (Units the player may recall)&lt;br /&gt;
&lt;br /&gt;
I can see no apparent reason of duplicating the first three variables, therefore it would make sense to merge player_info into team_info, and control access to all its fields through the team class. gold_add and available_units would be added to team_info, and would simply go unused if we're dealing with an AI team (at least for now, who knows what multiplayer campaign designers have in mind).&lt;br /&gt;
&lt;br /&gt;
There are few references to player_info compared to those to the team class, and so the change would be of moderate difficulty.&lt;br /&gt;
&lt;br /&gt;
An additional remark: since AI players and Human players have a lot of things in common, but also some variables and methods that are specific to them (examples: recruitment_pattern is an AI thing, available_units is Human-only as far as I know), we could consider creating subclasses of team called team_ai and team_human. That would allow us to keep in team only fields that are actually used, and to push more specific ones into one of the subclasses. Since the team class is used all over the source code, the change might just be too much, but I wanted to throw the idea out there.&lt;br /&gt;
&lt;br /&gt;
=== Question 4 - the game_state class and the gamestatus class ===&lt;br /&gt;
Both these classes are heavily used all over the source code; however they have a kind of one-way relationship, since gamestatus contains a game_state, whereas game_state doesn't reference gamestatus. Both classes have read/write access to a config object, and so they can directly access the save file.&lt;br /&gt;
&lt;br /&gt;
game_state holds a map of player_info, and contains most information from the savegame:&lt;br /&gt;
&lt;br /&gt;
* general game information: game type (multiplayer, campaign, etc), scenario, and so on&lt;br /&gt;
* three config objects:&lt;br /&gt;
** replay_data: contains info to get the game back to the middle of a turn&lt;br /&gt;
** starting_pos: starting position, useful for multiplayer where it might change relative to the scenario&lt;br /&gt;
** snapshot: current state of the game, contains the most information&lt;br /&gt;
&lt;br /&gt;
gamestatus contains a game_state, a vector of team objects, as well as info about the game flow and methods that affect it: random selection of the starting time of day, current turn, etc.&lt;br /&gt;
&lt;br /&gt;
As a side note, gamestatus.cpp also contains quite a few savegame-related global methods; I was about to propose to move them into some class, but I see that YogiHH is currently moving them to savegame.cpp. If he keeps going like that, there won't be anything left to do by the time the SoC begins officially!&lt;br /&gt;
&lt;br /&gt;
A merger between gamestatus and game_state sounds like a good idea, since their role is quite similar; however, unlike player_info and team it's not an easy merge, since it involves changing a lot of references. Furthermore there is no obvious direction for the merge: does game_state disappear into gamestatus, or the other way around, since both classes are used more or less at the same frequency?&lt;br /&gt;
&lt;br /&gt;
=== Question 5 – WML candidates for redundancies ===&lt;br /&gt;
First of all, I'd like to say here that I don't like very much the idea of duplicating an attribute (together with its whole tag, in the case of units) just because it might change. What would be much better would be storing tags or attributes only if they have changed. If time allows and the primary objectives of this SoC are doing well (that is, reorganizing the savegame format so it's the same for any type of game – campaign, multiplayer, multiplayer campaign), I'd like to work on a fallback mechanism for config info, which would look roughly like that:&lt;br /&gt;
&lt;br /&gt;
base unit definitions ← scenario/campaign files ← replay_start ← snapshot&lt;br /&gt;
&lt;br /&gt;
Starting from the right, if a tag or attribute is not present in the current element, it would be seeked in the next element at the left. I see mainly two benefits to such a system: dramatically reduced savegame size, and improved readability; and the possibility of units updating all their attributes which haven't changed to match the new version of a scenario/campaign file.&lt;br /&gt;
&lt;br /&gt;
In any case, doing the above supposes that we have a good, uniform structure in save files. So let's identify candidates for redundancy. Currently, there are redundant tags that may or may not map to the same object, as my colleague Euschn observed. However, with the merges discussed above, unnecessary duplicate info between C++ objects should mostly disappear; to keep this section simple, I'll stick to the WML side of things.&lt;br /&gt;
&lt;br /&gt;
Mordante/SkeletonCrew proposed a general outline for the save format at [http://www.wesnoth.org/wiki/User:SkeletonCrew#Savegame_format http://www.wesnoth.org/wiki/User:SkeletonCrew#Savegame_format], and I'll be referring to his proposal from time to time.&lt;br /&gt;
&lt;br /&gt;
==== root vs [snapshot] ====&lt;br /&gt;
The following attributes seem to be subject to change, and should still be duplicated:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;label (I didn't witness it, but I heard it can be different in root and [snapshot])&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* completion&lt;br /&gt;
* end_text_duration&lt;br /&gt;
* next_underlying_unit_id&lt;br /&gt;
&lt;br /&gt;
But it seems that these can't change, and could be written only once:&lt;br /&gt;
&lt;br /&gt;
* abbrev&lt;br /&gt;
* campaign (single player only)&lt;br /&gt;
* campaign_type&lt;br /&gt;
* campaign_define&lt;br /&gt;
* random_seed (also in common with replay_start)&lt;br /&gt;
* difficulty&lt;br /&gt;
* random_calls&lt;br /&gt;
* underlying_unit_id&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;version – this one is also in common with [replay_start]. If all three variables are updated whenever the save file is written, it's a good candidate for merging.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;We could also move the content of the root to a new [header] tag, as proposed by mordante. It might make handling that information on the C++ side more efficient by containing it in a small config object.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [replay_start] vs [snapshot] ====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[replay_start] contains few attributes in single player, but a lot of them in mp; The only one that seems redundant in single player is:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* name&lt;br /&gt;
&lt;br /&gt;
In multiplayer, those would have to be examined and discussed with the multiplayer community, to see if they could be moved to a common place instead of being duplicated:&lt;br /&gt;
&lt;br /&gt;
* experience_modifier&lt;br /&gt;
* mp_countdown&lt;br /&gt;
* mp_countdown_action_bonus&lt;br /&gt;
* mp_countdown_init_time&lt;br /&gt;
* mp_countdown_reservoir_time&lt;br /&gt;
* mp_countdown_turn_bonus&lt;br /&gt;
* mp_use_map_settings&lt;br /&gt;
* mp_village_gold&lt;br /&gt;
* random_seed&lt;br /&gt;
* random_start_time (seems logical that it won't change)&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;version – see comment above, in root vs [snapshot]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [player] vs [snapshot.player] ====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;My colleague mentions this distinction, but this has apparently been fixed by grantwu; in saves produced by the latest s&amp;amp;shy;&amp;amp;shy;v&amp;amp;shy;&amp;amp;shy;n version I can't find a [player] tag in root, only [snapshot.player] or [replay_start.player]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [snapshot.player] vs [replay_start.player] ====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Interestingly enough, in beginning-of-scenario saves (that are automatically done just after you win a campaign scenario), the [player] tag is in [replay_start], but if you save later in the scenario, the [player] tag is now in [snapshot]. Some uniformisation obviously wouldn't hurt here; but merging [player] into [side] sounds like an even better idea, see below.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [snapshot.player] vs [snapshot.side] ====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[snapshot.player] only appears in single player, while [snapshot.side] appears all the time and seems to store the same information in all game modes (but it has extra info in the case of an AI player). [snapshot.player] maps to player_info and [snapshot.side] maps to team_info in the team class.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Common attributes are:&lt;br /&gt;
&lt;br /&gt;
* save_id&lt;br /&gt;
* gold&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;However the gold value is not the same between the two gold attributes. And those are unique to [snapshot.player]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* can_recruit&lt;br /&gt;
* gold_add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[player] also contains [unit] tags, which would certainly benefit from a merge with those under [side]. I conclude that integrating [player] into [side] makes a lot of sense. However it might be a good idea to take the occasion and rationalize the way gold information is stored – all over the save file and not only in [side].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [replay_start.side] vs [snapshot.side] ====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;The code obviously needs cleanup, but as far as I understand, when loading a savegame only the contents of the [snapshot] section are used, unless the player choses to review actions up to this point. In this last case, [replay_start] is used to set the initial situation, and the moves are then replayed using info in the [replay] section.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[replay_start.side] and [snapshot.side] contain the following duplicated variables:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''always:''&lt;br /&gt;
&lt;br /&gt;
* controller&lt;br /&gt;
* fog (might change ?)&lt;br /&gt;
* shroud (might change ?)&lt;br /&gt;
* gold (has a different meaning in each case)&lt;br /&gt;
* income (changes)&lt;br /&gt;
* id (I heard it might change)&lt;br /&gt;
* recruit (WML might change it)&lt;br /&gt;
* team_name&lt;br /&gt;
* user_team_name (changes)&lt;br /&gt;
&lt;br /&gt;
''multiplayer only:''&lt;br /&gt;
&lt;br /&gt;
* allow_player&lt;br /&gt;
* colour&lt;br /&gt;
* current_player (changes – name of player whose turn it is)&lt;br /&gt;
* share_maps&lt;br /&gt;
* share_view&lt;br /&gt;
* side (I suppose it tells whose side's turn it is, therefore it changes)&lt;br /&gt;
* village_gold and other village tags&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;All tags that I didn't mark with “change” would probably we worth writing only once. However, as replays don't access the snapshot tag and vice-versa, the information would need to be moved to a new tag that is accessed from both – maybe a [teams] tag in the root, containing a number of [side] tags?&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [event] ====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Silene (cf. IRC logs) says that events are consumed as they happen, and therefore all these tags are mutable. They are duplicated between [snapshot] and [replay_start], but there's not much we can do about this unless we take a broader strike at the problem and start thinking about a “fallback” mechanism, as I'm proposing at the beginning of this section&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fixing gold_* ====&lt;br /&gt;
The gold values are now all over the place, which is probably confusing for everybody. The values of gold to track at a given moment are:&lt;br /&gt;
&lt;br /&gt;
* minimum starting gold defined by a scenario&lt;br /&gt;
** &amp;lt;nowiki&amp;gt;gold in [snapshot.side] and [replay_start]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;carryover gold from a previous scenario (campaigns), which is then compared to the minimum starting gold to determine the real starting gold in [snapshot.side]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
** &amp;lt;nowiki&amp;gt;[player].gold is the carryover gold, and there's what looks like the real starting gold already computed in [snapshot.side].start_gold&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* current gold&lt;br /&gt;
** &amp;lt;nowiki&amp;gt;in [snapshot.side]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We could organize this into the following variables (for instance):&lt;br /&gt;
&lt;br /&gt;
* gold_current – the current gold at this point in time, duplicated as needed&lt;br /&gt;
* gold_carryover – gold accumulated from last scenario, 0 if there was no last scenario&lt;br /&gt;
* gold_min_start – the minimum starting gold determined by the scenario&lt;br /&gt;
* gold_carryover_percent – the percentage of carryover gold a team is allowed to keep&lt;br /&gt;
&lt;br /&gt;
The real starting gold would not be stored anywhere, but would always be recalculated from gold_carryover, gold_min_start and gold_carryover_percent. Please see the outline below for the proposed distribution of these variables.&lt;br /&gt;
&lt;br /&gt;
=== Proposals ===&lt;br /&gt;
==== C++ changes ====&lt;br /&gt;
In summary, the C++ changes I envision for the moment are those suggested by the questions above, namely:&lt;br /&gt;
&lt;br /&gt;
* Getting rid of config_adapter.cpp&lt;br /&gt;
* Merging player_info into team.team_info&lt;br /&gt;
* Merging config_adapter.cpp, game_state and gamestatus into one class&lt;br /&gt;
* Possibly moving AI and Human-specific info into subclasses of the team class&lt;br /&gt;
&lt;br /&gt;
==== WML save format ====&lt;br /&gt;
I plan on reviewing and expanding [http://www.wesnoth.org/wiki/Summer_of_Code:SavegameWMLMapping http://www.wesnoth.org/wiki/Summer_of_Code:SavegameWMLMapping] by making an exhaustive list of all tags with their role, the situation they appear in, and relevant duplicate tags. Once submitted to proper peer review, this should allow me to make a definite proposal for the new savegame format.&lt;br /&gt;
&lt;br /&gt;
In the meanwhile however, here's what I have in mind for the general outline, taking as a base mordante's proposal. Note that his proposal includes using the savegame as the way of transmitting scenarios to other players in mp; I've removed some things related to this purpose, since I haven't had the time to study that aspect of the problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;b&amp;gt;Proposed WML Savegame Structure&amp;lt;/b&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ''&amp;lt;nowiki&amp;gt;[header]&amp;lt;/nowiki&amp;gt;'' all the basic info which is at the moment at the root of the file, and won't find a home in one of the following sections. Among others:&lt;br /&gt;
** ''version'' attribute&lt;br /&gt;
* ''&amp;lt;nowiki&amp;gt;[summary]&amp;lt;/nowiki&amp;gt;'' this section isn't really needed for a savegame but it contains the info the addon server needs to know about (not sure what's needed.)&lt;br /&gt;
* ''&amp;lt;nowiki&amp;gt;[base]&amp;lt;/nowiki&amp;gt;'' contains info '''that will never change in the course of the scenario'''&lt;br /&gt;
** ''&amp;lt;nowiki&amp;gt;[multiplayer] &amp;lt;/nowiki&amp;gt;''contains multi player settings that are not subject to change – not saved in SP.&lt;br /&gt;
** ''&amp;lt;nowiki&amp;gt;[era] &amp;lt;/nowiki&amp;gt;''this section contains the era data for MP, section doesn't exist in SP. &lt;br /&gt;
** ''&amp;lt;nowiki&amp;gt;[scenario]&amp;lt;/nowiki&amp;gt;''&lt;br /&gt;
*** in SP, contains, among other things:&lt;br /&gt;
**** ''scenario_id''&lt;br /&gt;
**** ''gold_min_start'' &amp;amp; ''gold_carryover_percent''&lt;br /&gt;
*** in MP, additionally contains the scenario data.&lt;br /&gt;
** ''&amp;lt;nowiki&amp;gt;[campaign] &amp;lt;/nowiki&amp;gt;''contains campaign settings that won't change, such as the attributes: campaign, campaign_type, campaign_define)&lt;br /&gt;
** ''&amp;lt;nowiki&amp;gt;[teams]&amp;lt;/nowiki&amp;gt;''&lt;br /&gt;
*** several ''&amp;lt;nowiki&amp;gt;[team] &amp;lt;/nowiki&amp;gt;''&amp;lt;nowiki&amp;gt;tags (replaces [side]), each matching a &amp;lt;/nowiki&amp;gt;''team ''C++ object&lt;br /&gt;
**** ''gold_carryover'' attribute&lt;br /&gt;
**** ''&amp;lt;nowiki&amp;gt;[unit] &amp;lt;/nowiki&amp;gt;''tags, that contains info about carryover units that won't change, like portraits, sounds...&lt;br /&gt;
**** ''&amp;lt;nowiki&amp;gt;[ai]&amp;lt;/nowiki&amp;gt;'' tag, one or several, containing any AI data for this team&lt;br /&gt;
* ''&amp;lt;nowiki&amp;gt;[start]&amp;lt;/nowiki&amp;gt;''&amp;lt;nowiki&amp;gt; section with all info regarding the start of scenario (replaces [replay_start]), &amp;lt;/nowiki&amp;gt;'''that might change in the course of the scenario'''&lt;br /&gt;
** ''map'' attribute&lt;br /&gt;
** attributes such as the current turn, time of day, number of turns, objectives, and so on.&lt;br /&gt;
** ''&amp;lt;nowiki&amp;gt;[teams]&amp;lt;/nowiki&amp;gt;''&amp;lt;nowiki&amp;gt; current state of the players, contains N [team] tags, each matching a &amp;lt;/nowiki&amp;gt;''team ''C++ object&lt;br /&gt;
*** ''&amp;lt;nowiki&amp;gt;[team]&amp;lt;/nowiki&amp;gt;''&lt;br /&gt;
**** ''gold_current'' attribute&lt;br /&gt;
**** ''recall_list'' attribute&lt;br /&gt;
**** ''recruit_list'' attribute&lt;br /&gt;
**** ''&amp;lt;nowiki&amp;gt;[unit] &amp;lt;/nowiki&amp;gt;''tags, that contain unit info that changes over the course of a scenario, like XP, and stuff WML can change, like attacks (cf. the Storm Trident in Bay of Pearls)&lt;br /&gt;
* ''&amp;lt;nowiki&amp;gt;[snapshot]&amp;lt;/nowiki&amp;gt;'' section with the info about the current state of the game – contains the '''exact same info as &amp;lt;nowiki&amp;gt;[start]&amp;lt;/nowiki&amp;gt;, but in its current state'''.&lt;br /&gt;
* ''&amp;lt;nowiki&amp;gt;[replay]&amp;lt;/nowiki&amp;gt;'' same as current&lt;br /&gt;
* ''&amp;lt;nowiki&amp;gt;[statistics]&amp;lt;/nowiki&amp;gt;'' same as current&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;nowiki&amp;gt;I don't know if a scenario or era can change in the course of a MP scenario; if so these tags would need to be in [start]/[snapshot] instead of [base]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
# &amp;lt;nowiki&amp;gt;[start]/[snapshot] would map well to the new merged &amp;lt;/nowiki&amp;gt;''game_state ''&amp;lt;nowiki&amp;gt;object, but I'm not sure yet what [base] would map to.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
# This whole structure is designed assuming the basic philosophy of duplicating everything that might change; it would be much more elegant and simple if we decided to store only information that changed compared to the base value. Early into the Summer of Code, I'll design an alternate outline using that method, so we can look at both alternatives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To conclude, with the experience of last year's and this year's project, I'm confident in my ability to learn to swim by being thrown in the water. As I'll be working on this full-time, I'll catch up quickly with what I need to know to start working. I have allocated time for this in my timeline.&lt;br /&gt;
&lt;br /&gt;
I'll be using the GoF design patterns (with UML diagrams as needed), Boost smart pointers, and good design practices to make sure I submit structured, clean and efficient code. Also, I suppose that my experience with serializing data to write to XML or transmit across the network will come in handy when dealing with WML.&lt;br /&gt;
&lt;br /&gt;
==My expectations==&lt;br /&gt;
&lt;br /&gt;
I want to acquire more software development experience, and the satisfaction to have contributed to an open-source project, which happens to be a game that I love. Furthermore it will be the perfect jump-start to keep contributing to Wesnoth: once I've dived deep into the codebase, I'll find it much easier to implement other features or keep improving my GSOC work.&lt;br /&gt;
&lt;br /&gt;
I've been lurking and posting on the Wesnoth forums for a while, so I already consider myself a part of the Wesnoth community :).&lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
I use sub&amp;amp;shy;&amp;amp;shy;version extensively for all my projects. C++ is my main programming language, which I used in all three of my major projects. I know Java rather well too. However I never used Python, but I delved in the source of some programs written in Python, such as Wrye Bash, a modding tool for Oblivion.&lt;br /&gt;
&lt;br /&gt;
As far as IDEs go, my favorite C++ development tool is probably Netbeans, but I can be just as efficient under Visual Studio or Eclipse.&lt;br /&gt;
&lt;br /&gt;
Then there are the peripheral tools that I use most of the time: Doxygen for documentation, makefiles or batch files/bash scripts, property sheets under Visual Studio, Dia for UML diagrams, and so on and so forth. I usually try to find the best open-source tool for the job.&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_cjhopman&amp;diff=49163</id>
		<title>SummerOfCodeProposal cjhopman</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_cjhopman&amp;diff=49163"/>
		<updated>2013-03-21T03:31:45Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical instance of &amp;quot;SVN&amp;quot; from mediawiki search to avoid false positives.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Questionnaire==&lt;br /&gt;
===Basics===&lt;br /&gt;
&lt;br /&gt;
# Write a small introduction to yourself. &lt;br /&gt;
#* My name is Chris Hopman, I'm a student of computer science and mathematics.&lt;br /&gt;
# State your preferred email address. &lt;br /&gt;
#* cjhopman@gmail.com&lt;br /&gt;
# If you have chosen a nick for IRC and Wesnoth forums, what is it? &lt;br /&gt;
#* My nick is cjhopman pretty much everywhere.&lt;br /&gt;
# Why do you want to participate in summer of code? &lt;br /&gt;
#* Participating in summer of code will give me an opportunity to spend a lot of time doing something that I enjoy. I will get to work on an interesting project and will get to make a major contribution to a great project.&lt;br /&gt;
# What are you studying, subject, level and school? &lt;br /&gt;
#* I am currently an undergraduate studying mathematics and computer science at the University of Wisconsin - Madison. I will be graduating in May and will be attending the computer science PhD program here in the fall.&lt;br /&gt;
# 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 Wesnoth. If you have gained commit access to our S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N (during the evaluation period or earlier) please state so. &lt;br /&gt;
#* I received commit access to the Wesnoth S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N early in 2008. There is a list of some of my [[#My contributions to Wesnoth|contributions]] below.&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
# What programs/software have you worked on before?&lt;br /&gt;
#* The largest program that I have worked on is definitely Wesnoth. Other than that, and other than projects just for classes, I have worked on two other projects. The first is [http://code.google.com/p/autoscanner autoscanner]. The goal of this program is to do automatic 3d reconstruction of a statue from a short video clip. I did this project with another student for a professor that we worked for. The second project is more of a library of various functions. It can be found [http://code.google.com/p/wrong-answer-library here]. It is meant primarily to be useful for algorithm competitions (TopCoder, ICPC, etc.) and so is mostly graph theory, computational geometry, linear algebra, and other similar stuff.&lt;br /&gt;
# Have you developed software in a team environment before? (As opposed to hacking on something on your own) &lt;br /&gt;
#* Other than Wesnoth, the two projects I just mentioned were both done in groups of 2-3. So, primarily my experience of developing software in a team environment is just that from my contributions to Wesnoth.&lt;br /&gt;
# 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? &lt;br /&gt;
#* I have not participated in Google Summer of Code before.&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
&lt;br /&gt;
# Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement. &lt;br /&gt;
#* Wesnoth is the only open source project that I am involved in (actually both of my projects on code.google.com are also open source but it's a whole different level). Most of my contribution to Wesnoth has been bug fixes and other minor work, though I have had several larger contributions. There is a list of these [[#My contributions to Wesnoth|below]].&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
# What type of gamer are you? &lt;br /&gt;
#* I am a diverse gamer. I've been playing games for more than 80% of my life (wow, just realized how long it has been)&lt;br /&gt;
# What type of games? &lt;br /&gt;
#* I like pretty much all genres. Yet, my favorites tend to be strategy games or rpgs. And those that find a good blend of the two are great. For example, Battle for Wesnoth (some others, too--Final Fantasy Tactics comes to mind).&lt;br /&gt;
# What type of opponents do you prefer? &lt;br /&gt;
#* Smart ones. I love the challenge of trying to outplay a smart player.&lt;br /&gt;
# Are you more interested in story or gameplay?&lt;br /&gt;
#* It depends. Generally when I am playing single-player games story and gameplay are both important though I am more likely to accept below average gameplay for an above average story than vice-versa. Playing multiplayer, particularly competitive multiplayer, gameplay is much more important.&lt;br /&gt;
# Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer. &lt;br /&gt;
#* I have played Wesnoth for a bit over a year. I had focused on single player campaigns but in the last two months have shifted to almost only multiplayer.&lt;br /&gt;
&lt;br /&gt;
===Communication skills===&lt;br /&gt;
&lt;br /&gt;
# Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English. &lt;br /&gt;
#* I am fluent in written English. I had better be as I am definitely not in any others.&lt;br /&gt;
# Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough. &lt;br /&gt;
#* Yes, I am good at interacting with other players and with other people in general. &lt;br /&gt;
# Do you give constructive advice? &lt;br /&gt;
#* I think that I give constructive advice. I have been a tutor in math and computer science for a couple years and a sailing instructor for longer. Both of these have definitely improved my ability to give constructive advice.&lt;br /&gt;
# Do you receive advice well? &lt;br /&gt;
#* Yes, I do. I feel that a factor in this is that I am always interested in learning more and advice often offers an opportunity to do that.&lt;br /&gt;
# Are you good at sorting useful criticisms from useless ones? &lt;br /&gt;
#* Yes.&lt;br /&gt;
&lt;br /&gt;
===Project===&lt;br /&gt;
&lt;br /&gt;
# 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? &lt;br /&gt;
#* I chose to work on the optimization of wml for memory usage problem. &lt;br /&gt;
# Why did you choose this project? &lt;br /&gt;
#* I chose this project because I enjoy working with algorithms and data structures, and, in particular, I enjoy the challenge of finding better ways of doing things. I think that this project will be a chance for me to do that. &lt;br /&gt;
# Include an estimated timeline for your work on the project.&lt;br /&gt;
#* See [[#Timeline|timeline]] below.&lt;br /&gt;
# Include as much technical detail about your implementation as you can &lt;br /&gt;
#* See [[#Technical details|technical details]] below.&lt;br /&gt;
# What do you expect to gain from this project? &lt;br /&gt;
#* I expect to gain experience working with and redesigning a complex data structure. Also, I will get to be mentored by a person with more experience programming (and working on larger projects) which can only improve my own skills.&lt;br /&gt;
# What would make you stay in the Wesnoth community after the conclusion of SOC? &lt;br /&gt;
#* I already know and like the Wesnoth community. I will stay regardless of anything that happens for SOC.&lt;br /&gt;
&lt;br /&gt;
===Practical considerations===&lt;br /&gt;
&lt;br /&gt;
# Are you familiar with any of the following tools or languages? Sub&amp;amp;shy;&amp;amp;shy;version, C++, Python, build environments&lt;br /&gt;
#* I am very familiar with C++. I have used sub&amp;amp;shy;&amp;amp;shy;version enough that I can do the basics, I am not very familiar with creating and merging branches. I only have a little experience with both Python and build environments. With either of these, I currently can only do the most basic tasks.&lt;br /&gt;
# Which tools do you normally use for development? Why do you use them? &lt;br /&gt;
#* Currently, I do almost all of my development in Linux, with a text editor, gdb and other command-line tools. Linux in general just makes development so much easier and the tools it provides are very powerful. In Windows (which I haven't really developed in in almost a year) I use Visual Studio 2005/2008. For debugging I feel it is even better than the tools available in Linux, and it has a few other nice features that may improve my productivity.&lt;br /&gt;
# What programming languages are you fluent in? &lt;br /&gt;
#* I am very fluent in C++, and significantly less so in Java. I have some experience with C and Scheme.&lt;br /&gt;
# What spoken languages are you fluent in? &lt;br /&gt;
#* English.&lt;br /&gt;
# At what hours are you awake and when will you be able to be in IRC (please specify in UTC) &lt;br /&gt;
#* I am generally awake from 1:00pm to 5:00 am UTC and will be available most of that time. &lt;br /&gt;
# 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.&lt;br /&gt;
#* I would not mind that at all.&lt;br /&gt;
&lt;br /&gt;
==Technical details==&lt;br /&gt;
The in-memory storage of WML currently uses a significant amount of memory. Also, the various data structures used often make small memory allocations which leads to even worse memory-efficiency. There are several different ways that we can improve the memory-efficiency of loaded WML.&amp;lt;br&amp;gt;&lt;br /&gt;
There are basically three areas that I intend to optimize for this gsoc project. First is the [[#String Representation|representation of strings]] in loaded WML. Second, the [[#Config Representation|representation of the config class]]. And third, implement a [[#Lazy Work|framework]] for both lazy loading and lazy construction of config objects. These three things should all improve the memory-efficiency of loaded WML, but only if certain assumptions hold true. For this reason I will also do some in-depth [[#WML Profiling|WML profiling]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===String Representation===&lt;br /&gt;
A large part of the memory usage comes from strings(including t_strings). It's highly likely that a lot of these strings are the same (for example, &amp;quot;Id&amp;quot;, &amp;quot;Name&amp;quot;, etc). If enough of these are shared, then a lot of memory could be saved by sharing the string representations. The basic idea here is to have all strings in some global area accessible by an index or pointer. For example, a naive approach would be to just have an unsorted vector of strings and then the actual string representation in the config class would be an index into the vector. The obvious problem with that is that lookup for new strings is slow. Basically, our needs are low memory overhead, fast lookup of new (unknown) strings, fast lookup by &amp;quot;index&amp;quot;, and fast insertion.&amp;lt;br&amp;gt;&lt;br /&gt;
I have a couple ideas of how to do this.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
My primary idea is to use a hash table to store the strings. The problem is that a basic linear-probing hash table performs very poorly at high load factors and so is not very memory-efficient if we want decent performance. There are a couple of other implementations that would be more memory-efficient. Each of these implementations are efficient at high load factors.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Blocked cuckoo hashing'''&amp;lt;br&amp;gt;&lt;br /&gt;
One variant that would be good for this project is blocked cuckoo hashing, a variant of [http://en.wikipedia.org/wiki/Cuckoo_hashing cuckoo hashing] where each position in the table can hold some fixed amount of keys. There are several benefits to this implementation. At a very high ( &amp;gt; 99.9% ) load factor this implementation is still efficient and has very little memory overhead. The storage needed for blocked cuckoo hashing can be allocated as one large contiguous block. One downside is that insertions can move elements to different buckets and so our &amp;quot;indices&amp;quot; will need to be updateable. This likely means that they would need an extra level of indirection so they can point to something that doesn't move. Also, with blocked cuckoo hashing the table has a fixed constant size, if it gets too large we would have to resize it which can be quite slow. A better option than resizing the table would be to have a backup stash. This could be a simple vector, but it would likely be better for it to be a smaller hash table that more gracefully handles dynamic size requirements.&amp;lt;br&amp;gt;&lt;br /&gt;
''More info available [http://www.sciencedirect.com/science?_ob=ArticleURL&amp;amp;_udi=B6V1G-4N56BWF-5&amp;amp;_user=10&amp;amp;_rdoc=1&amp;amp;_fmt=&amp;amp;_orig=search&amp;amp;_sort=d&amp;amp;view=c&amp;amp;_acct=C000050221&amp;amp;_version=1&amp;amp;_urlVersion=0&amp;amp;_userid=10&amp;amp;md5=067aef2a68139cd8694dcdab5d847db3 here] (I was unable to find a free version of this paper).''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Move-to-front chaining'''&amp;lt;br&amp;gt;&lt;br /&gt;
In this variant the hash table is an array of linked lists. When we do lookups, the node that we find is moved to the front of its respective list. This move-to-front heuristic makes the hash table very efficient when there is a skew in the distribution of looked up words (as is likely the case with WML). The downside to this method is that it has more memory overhead per distinct string (due to the linked list pointer). We would likely hold a large block of listnodes in a vector or deque so that they don't all require a small memory allocation.&amp;lt;br&amp;gt;&lt;br /&gt;
''More info on efficiency of this implementation [http://goanna.cs.rmit.edu.au/~jz/fulltext/ipl01.pdf].''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Chaining with dynamic array'''&amp;lt;br&amp;gt;&lt;br /&gt;
Here we replace the linked list with a dynamically sized array. This has a bit less memory overhead but the allocated memory will not be in a single contiguous allocation. Also, in this method is it more difficult to use the move-to-front optimization as it would require updating the indices. Without that optimization, this is likely the least cpu-efficient of the three implementations.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
I believe that the best for this project will be one of the first two (though once one is working it will be quite simple to drop in another as the interfaces are the same).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
For this project, if profiling shows that there is a lot of non-distinct strings as is expected, I will implement at least one of the first two variants.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Another option for this would be a B-tree with large branching. This will likely have more overhead than the hashing options. I do not currently plan to implement this during gsoc, though again it would have the same (or very similar) interface as the hash tables and should be easy to drop in and profile.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The last thing with string representation is that we can optimize the low level representation of the string. I think the best option for this would be to use or adapt an already written lightweight string. A more important aspect of the low-level string representation is that it does a lot of small memory allocations. To solve this we can use some type of pool allocation (possibly Boost.Pool) for our lightweight strings.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Config Representation===&lt;br /&gt;
Moving a level up from strings we get to the representation of the config class in memory. Currently it is basically&amp;lt;br&amp;gt;&lt;br /&gt;
 struct config {&lt;br /&gt;
     map&amp;lt;string, t_string&amp;gt; attributes;&lt;br /&gt;
     map&amp;lt;string, vector&amp;lt;config*&amp;gt; &amp;gt; children;&lt;br /&gt;
     vector&amp;lt;pair&amp;lt;map&amp;lt;..&amp;gt;::iterator, size_t&amp;gt; &amp;gt; ordered_children;&lt;br /&gt;
 };&lt;br /&gt;
This is a significant amount of overhead per child config and attribute.&amp;lt;br&amp;gt;&lt;br /&gt;
We can probably just replace this with two sorted vectors (that is, basically, vector&amp;lt;pair&amp;lt;string_index, t_string&amp;gt; &amp;gt; and vector&amp;lt;pair&amp;lt;string_index, config*&amp;gt; &amp;gt;). This should cut the overhead per config object in half, and there should be almost no overhead per attribute. Without further profiling, I believe that the sorted vectors is the best approach. This change would have less memory overhead and would allocate the memory that it does use in larger blocks than the current method.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Lazy Work===&lt;br /&gt;
Finally, we load a lot of WML (and build the corresponding config objects) that we don't need to. I intend to implement a framework that will allow us to lazily load WML from disk, and that will possibly allow us to lazily construct config objects from the loaded WML.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Lazy Loading'''&amp;lt;br&amp;gt;&lt;br /&gt;
The most aggressive lazy optimization would be to leave WML on disk until needed. This could save us a lot of memory, but could require us to minimally parse the WML multiple times as there is no way to tell how long a WML tag/attribute is. One other similar possibility is to load and parse the WML, and then write it to a temporary cache. This would be simpler to do and its possible that cached WML is already in a format that would allow for easy lazy loading (I am not sure of the format of cached WML).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Lazy Construction'''&amp;lt;br&amp;gt;&lt;br /&gt;
A slightly less aggressive, but still useful, optimization would be to not fully construct some config objects. With the previously discussed string representation, a config object becomes simply a stream of ints and associated types. In fact, the associated type identifiers could be packed into the high bits of a 32 bit index into the string hash table. &amp;lt;br&amp;gt;&lt;br /&gt;
While lazy loading will cut memory usage of a config object by, basically, 100%, I expect lazy construction to cut it by as much as 50%. The benefit of lazy construction would be that construction of the object once it is needed will not have to go to disk and so will be faster.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If we have these lazy schemes actually store some more information so that construction would not require full parsing. In particular, I am thinking that we could have each tag stored with its length, then when we need to build a thing we can do it much more quickly. This would allow us to aggressively unload WML that we think won't be needed.&amp;lt;br&amp;gt;&lt;br /&gt;
This optimization actually has the potential to greatly reduce memory usage. Implementing this will likely hit several parts of the code (config, config_cache, parser, ...).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''EDIT''' 9/4/09 00:40 GMT &amp;lt;br&amp;gt;&lt;br /&gt;
Lazy optimizations is not really a good title for these as I actually intend for config objects to move back and forth between these states. That is, we should be able to, when constructing a config object, tell it which of the three states to be in. And we should be able to tell it at any time to go into any of the three states.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===WML Profiling===&lt;br /&gt;
EDIT: I have started doing some of this [[cjhopman_wml|here]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Before doing any optimizations, we need to know whether or not it has a possibility of making an improvement. Basically the assumptions that we have made are that there a lot of strings, a lot of these strings are not unique, and there are a lot of config objects. These are reasonable assumptions, but investigating them is one reason for me to do some extensive profiling.&amp;lt;br&amp;gt;&lt;br /&gt;
The second reason to do profiling is to determine the benefit of optimizations that we do write. For this reason I have already set up a heap profiler so that I can see some higher level memory usage patterns (see [[Cjhopman profiling]]). I also plan to do some more intrusive programming, basically I want to be able to see the structure of the graph of config objects (with some info like size of current, size of all children, etc.). Also, I will want to see the distribution of strings in tag names, attribute keys and attribute values. This will be the first thing that I do for this project, currently scheduled to be done before the actual start of coding time.&lt;br /&gt;
&lt;br /&gt;
==Timeline==&lt;br /&gt;
&lt;br /&gt;
April 3rd - April 15th&amp;lt;br&amp;gt;&lt;br /&gt;
Convince Wesnoth mentors to accept my proposal.&amp;lt;br&amp;gt;&lt;br /&gt;
Finish up some cpu optimizations that I am working on for Wesnoth.&amp;lt;br&amp;gt;&lt;br /&gt;
Begin more in-depth profiling of loaded WML.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
April 17th - April 23rd&amp;lt;br&amp;gt;&lt;br /&gt;
I get to go to Stockholm for a week.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
April 20th&amp;lt;br&amp;gt;&lt;br /&gt;
Accepted proposals announced on GSOC site.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
April 23rd - May 23rd&amp;lt;br&amp;gt;&lt;br /&gt;
Finish up in-depth profiling of loaded WML in preparation for coding to begin.&amp;lt;br&amp;gt;&lt;br /&gt;
Make changes to config class to hide internals as described [http://dave.wesnoth.org/?p=9 here].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
May 10th - May 16th&amp;lt;br&amp;gt;&lt;br /&gt;
I have a couple of finals. I will likely actually have more time this week as I won't have class every day.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
May 23rd&amp;lt;br&amp;gt;&lt;br /&gt;
Coding begins. Start with string optimizations.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
June 20th&amp;lt;br&amp;gt;&lt;br /&gt;
String optimizations finished, tested, and documented.&amp;lt;br&amp;gt;&lt;br /&gt;
Begin wml representation optimizations.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
June 27th&amp;lt;br&amp;gt;&lt;br /&gt;
WML representation optimizations finished, tested, and documented.&amp;lt;br&amp;gt;&lt;br /&gt;
Begin working on lazy loading/construction.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
July 6th&amp;lt;br&amp;gt;&lt;br /&gt;
Submission of midterm evaluations begins.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
July 27th&amp;lt;br&amp;gt;&lt;br /&gt;
Framework for lazy loading/construction finished, tested, and documented.&amp;lt;br&amp;gt;&lt;br /&gt;
Begin pass of intensive debugging and documentation on all three parts. Each of the three parts have already been tested and documented so this is just a sort of final cleaning pass.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
August 3rd&amp;lt;br&amp;gt;&lt;br /&gt;
Begin migration of current code to use lazy loading/construction where appropriate.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
August 10th&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Pencils down&amp;quot; date.&amp;lt;br&amp;gt;&lt;br /&gt;
Everything should actually be completed by this time, and this final week is a sort of buffer to ensure that everything is very well-tested and documented.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
August 17th&amp;lt;br&amp;gt;&lt;br /&gt;
End of GSOC.&amp;lt;br&amp;gt;&lt;br /&gt;
Final evaluation submission begins.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==My contributions to Wesnoth==&lt;br /&gt;
&lt;br /&gt;
====Larger patches and other substantial contributions====&lt;br /&gt;
&lt;br /&gt;
'''unit_map'''&amp;lt;br&amp;gt;&lt;br /&gt;
Originally redesigned this in early 2008 to have iterators that would be updated as a unit is moved and that would know when they become invalidated. Also added some more powerful iterators/accessors.[https://gna.org/patch/?1020][https://gna.org/patch/index.php?1046]&lt;br /&gt;
Recently I have refactored this a bit, templatizing the iterators. Even better, I greatly improved the documentation of the interface. [http://svn.gna.org/viewcvs/wesnoth?rev=33868&amp;amp;dir_pagestart=250&amp;amp;view=rev]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gui2 text box history'''&amp;lt;br&amp;gt;&lt;br /&gt;
I added support for text box history to gui2. [http://svn.gna.org/viewcvs/wesnoth?rev=33868&amp;amp;dir_pagestart=250&amp;amp;view=rev]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Profiling and some optimization'''&amp;lt;br&amp;gt;&lt;br /&gt;
I have [http://code.google.com/p/google-perftools/ google performance tools] working with Wesnoth to do some profiling. Originally I set this up because being able to profile memory usage and cpu usage will be important to this project. I have some results of this up at another [[cjhopman_profiling|page]].&amp;lt;br&amp;gt;&lt;br /&gt;
While doing some profiling I found a couple of bottlenecks in the code.&amp;lt;br&amp;gt;&lt;br /&gt;
First, image::locator::locator() was using ~8-10% of the time in-game. I rewrote its lookup to use a hash-based map and cut the time the function used in half. [http://svn.gna.org/viewcvs/wesnoth?rev=34388&amp;amp;view=rev]&amp;lt;br&amp;gt;&lt;br /&gt;
Second, I changed the algorithm that we used to determine what rectangles to redraw. This shows significant gains in some graphics-intensive situations (as much as 3x fps).[https://gna.org/patch/?1141]&amp;lt;br&amp;gt;&lt;br /&gt;
Third, I am doing some work on the tokenizer used for parsing wml that shows a 10-20% speedup of WML loading at the cost of significant complexity. I'm not sure yet that this is worth it without first optimizing the underlying preprocessor stream that the tokenizer gets its input from.&lt;br /&gt;
&lt;br /&gt;
===Smaller changes and bug fixes===&lt;br /&gt;
Report an error when a macro is not resolved and is not a filename.[https://gna.org/patch/?1035]&amp;lt;br&amp;gt;&lt;br /&gt;
Very simple bug fix.[https://gna.org/patch/?1041]&amp;lt;br&amp;gt;&lt;br /&gt;
Prevent duplicate advances_from entries.[http://svn.gna.org/viewcvs/wesnoth?rev=25960&amp;amp;view=rev]&amp;lt;br&amp;gt;&lt;br /&gt;
Fix bug #13003.[http://svn.gna.org/viewcvs/wesnoth?rev=32849&amp;amp;view=rev]&amp;lt;br&amp;gt;&lt;br /&gt;
Fix bug #12990.[http://svn.gna.org/viewcvs/wesnoth?rev=32854&amp;amp;view=rev]&amp;lt;br&amp;gt;&lt;br /&gt;
Began to refactor the attack class.[http://svn.gna.org/viewcvs/wesnoth?rev=32952&amp;amp;view=rev]&amp;lt;br&amp;gt;&lt;br /&gt;
Fix bug #11031.[http://svn.gna.org/viewcvs/wesnoth?rev=33360&amp;amp;view=rev]&amp;lt;br&amp;gt;&lt;br /&gt;
Fix bug with KNOCKBACK and similar wml.[http://svn.gna.org/viewcvs/wesnoth?rev=33652&amp;amp;view=rev]&amp;lt;br&amp;gt;&lt;br /&gt;
Simplified unit_map lookup by id.[http://svn.gna.org/viewcvs/wesnoth?rev=33956&amp;amp;view=rev]&amp;lt;br&amp;gt;&lt;br /&gt;
Improved error message when attempting to dereference invalid iterator.[http://svn.gna.org/viewcvs/wesnoth?rev=34224&amp;amp;view=rev]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_lmg&amp;diff=49162</id>
		<title>SummerOfCodeProposal lmg</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_lmg&amp;diff=49162"/>
		<updated>2013-03-21T03:30:41Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical instance of &amp;quot;SVN&amp;quot; from mediawiki search to avoid false positives.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Completed...''&lt;br /&gt;
&lt;br /&gt;
==User Information==&lt;br /&gt;
gna: lmg&amp;lt;br&amp;gt;&lt;br /&gt;
wesnoth forums: lmg&amp;lt;br&amp;gt;&lt;br /&gt;
irc: lgraham&amp;lt;br&amp;gt;&lt;br /&gt;
preferred email: Please contact.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
''Write a small introduction to yourself. )''&amp;lt;br&amp;gt;&lt;br /&gt;
I'm just finishing up my second year of software engineering. I have been a Linux user for two years, and I was looking into contributing to an open source project when I ran across Google Summer of Code. I thought this would be a great way for me to learn about contributing to open source projects.&lt;br /&gt;
&lt;br /&gt;
===Education=== &lt;br /&gt;
''What are you studying, subject, level and school''&amp;lt;br&amp;gt;&lt;br /&gt;
In April 2009, I will have completed my second year of Software Engineering at the University of Calgary in Calgary, Alberta, Canada.&lt;br /&gt;
&lt;br /&gt;
===Why Google Summer of Code?===&lt;br /&gt;
''Why do you want to participate in summer of code?''&amp;lt;br&amp;gt;&lt;br /&gt;
I would like to participate in the summer of code to enhance my programming skills and apply the software design techniques I am learning in classes. I feel that participating in this program will enhance my educational experience and give me something practical to which I can relate when doing classwork. In addition to this, I use a lot of open source software at home, and I am interested in learning more about open source development.&lt;br /&gt;
&lt;br /&gt;
===Patches Submitted to Wesnoth=== &lt;br /&gt;
''(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 Wesnoth. If you have gained commit access to our S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N (during the evaluation period or earlier) please state so. ''&amp;lt;br&amp;gt;&lt;br /&gt;
None yet.&lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===Previous Projects===&lt;br /&gt;
''What programs/software have you worked on before? ''&amp;lt;br&amp;gt;&lt;br /&gt;
I have done both procedural and object oriented programming to learn the structure of the languages I have studied. Most of the programs I have worked on have been done to complete class requirements.&lt;br /&gt;
&lt;br /&gt;
===Team Software Development Experience=== &lt;br /&gt;
''Have you developed software in a team environment before? (As opposed to hacking on something on your own)''&amp;lt;br&amp;gt;&lt;br /&gt;
I have done a significant amount of work developing with another person and some work in groups of less than 5 people, but I don't have experience developing with larger groups.&lt;br /&gt;
&lt;br /&gt;
===Previous Google Summer of Code Participation=== &lt;br /&gt;
''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?''&amp;lt;br&amp;gt;&lt;br /&gt;
I have never participated in Google Summer of Code.&lt;br /&gt;
&lt;br /&gt;
===Open Source=== &lt;br /&gt;
''Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.''&amp;lt;br&amp;gt;&lt;br /&gt;
I am not currently involved with any open source development projects.&lt;br /&gt;
&lt;br /&gt;
===Gaming Experience===&lt;br /&gt;
''Are you a gamer? What type of gamer are you?What type of games? What type of opponents do you prefer? Are you more interested in story or gameplay?Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
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.''&amp;lt;br&amp;gt;&lt;br /&gt;
I enjoy gaming, but can only do it on a casual basis. I like fantasy/scifi-based games with a good story and gameplay, and I believe both the story and gameplay are essential to making a great game. I don't have experience in playing against other players. I have played Wesnoth for only a few days in single player mode, but I look forward to learning more about Wesnoth and branching into the multiplayer mode. Most of the games I have played are single-player games, and I look forward to exploring the multiplayer side of things.&lt;br /&gt;
&lt;br /&gt;
==Communication Skills==&lt;br /&gt;
&lt;br /&gt;
===English Fluency===&lt;br /&gt;
''Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.''&amp;lt;br&amp;gt;&lt;br /&gt;
English is my first language.&lt;br /&gt;
&lt;br /&gt;
===Player Interaction=== &lt;br /&gt;
''Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough''&amp;lt;br&amp;gt;&lt;br /&gt;
I think I will be good at interacting with other players. I was a forum moderator last summer, and I feel I am pretty well equipped to handle most things.&lt;br /&gt;
&lt;br /&gt;
===Advice and Criticism===&lt;br /&gt;
''Do you give constructive advice?Do you receive advice well? Are you good at sorting useful criticisms from useless ones?''&amp;lt;br&amp;gt;&lt;br /&gt;
I only give advice if I think it will be constructive. When someone gives me advice, I take it into consideration and try to use it if I can. I have done a lot of group work in which there are useful and useless criticisms, and I think I am fairly proficient at determining what is useful.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===Selection and Reasons for Choosing===&lt;br /&gt;
''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? Why did you choose this project?''&amp;lt;br&amp;gt;&lt;br /&gt;
Savegame Reorganization. For this particular project, I would like to focus on the software development process and seeing how it works in a real project. I chose this project because many of the software engineering concepts I am currently learning can be applied to this project (UML, software design process)&lt;br /&gt;
&lt;br /&gt;
===Estimated Timeline===&lt;br /&gt;
''Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.''&amp;lt;br&amp;gt;&lt;br /&gt;
I would like to explore the savegame code and come up with some UML use-case and sequence diagrams by the end of May. Following that, I would like to have the design process finished mid-May or closer to the end of May. Then, I will work on implementation. That way, if I do hit a brick wall along the way, there should be sufficient time to remedy any problems. I don't have any summer plans as yet.&lt;br /&gt;
&lt;br /&gt;
===Technical Details===&lt;br /&gt;
''Include as much technical detail about your implementation as you can''&amp;lt;br&amp;gt;&lt;br /&gt;
For the analysis stage, I will produce relevant UML diagrams including use-case and sequence diagrams. In the design stage, I will likely use component diagrams. I am fairly new with UML (I am currently learning about it one of my courses although it has not been the primary focus of the class), so I will likely have tons of questions about making my diagrams properly.&lt;br /&gt;
&lt;br /&gt;
===Expected Outcome===&lt;br /&gt;
''What do you expect to gain from this project? What would make you stay in the Wesnoth community after the conclusion of SOC?''&amp;lt;br&amp;gt;&lt;br /&gt;
I would like to gain a good understanding of how open source projects work and how to contribute in a meaningful way. I would stay in the Wesnoth community after the conclusion of SOC if I have good support from my mentor and the development community and I can use my skills to make Wesnoth better.&lt;br /&gt;
&lt;br /&gt;
==Practical Considerations==&lt;br /&gt;
&lt;br /&gt;
===Tool and Languages===&lt;br /&gt;
''Are you familiar with any of the following tools or languages?''&lt;br /&gt;
&lt;br /&gt;
* Sub&amp;amp;shy;&amp;amp;shy;version (used for all commits)&lt;br /&gt;
** I don't know very much about sub&amp;amp;shy;&amp;amp;shy;version.&lt;br /&gt;
* C++ (language used for all the normal source code)&lt;br /&gt;
** I have been using C++ for almost a year (I have taken two courses using C++ as the programming language)&lt;br /&gt;
* Python (optional, mainly used for tools)&lt;br /&gt;
** I have never used Python&lt;br /&gt;
* build environments (eg cmake/autotools/scons)&lt;br /&gt;
** I have used makefile once or twice, but nothing else.&lt;br /&gt;
&lt;br /&gt;
''What programming languages are you fluent in?''&amp;lt;br&amp;gt;&lt;br /&gt;
C, C++, Java&lt;br /&gt;
&lt;br /&gt;
===Development Tools===&lt;br /&gt;
''Which tools do you normally use for development? Why do you use them?''&amp;lt;br&amp;gt;&lt;br /&gt;
vim - offers many features in a simple, easy to use command line text editor&lt;br /&gt;
&amp;lt;br&amp;gt;Eclipse - it shows compilation errors in real time&lt;br /&gt;
&amp;lt;br&amp;gt;junit - for unit testing of Java programs&lt;br /&gt;
&amp;lt;br&amp;gt;javadoc - create nicely formatted inline documentation&lt;br /&gt;
&lt;br /&gt;
===Spoken Languages===&lt;br /&gt;
''What spoken languages are you fluent in?)''&amp;lt;br&amp;gt;&lt;br /&gt;
I am fluent in English and have limited knowledge of French.&lt;br /&gt;
&lt;br /&gt;
===Availability and Alternate Contact===&lt;br /&gt;
''At what hours are you awake and when will you be able to be in IRC (please specify in UTC) 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.''&amp;lt;br&amp;gt;&lt;br /&gt;
I am generally awake 1400 - 0400 UTC. I will be able to be in IRC between the hours of 2300 - 0400 UTC during the week although the actual hours may vary (I don't have summer plans yet). On weekends, I am awake 1500 - 0500 UTC and can be on IRC anytime. I don't mind talking with my mentor on the phone - either regular or internet phone is good for me.&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Thunderstone&amp;diff=49161</id>
		<title>Thunderstone</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Thunderstone&amp;diff=49161"/>
		<updated>2013-03-21T03:26:59Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide some dead referebces&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Era |&lt;br /&gt;
era = Thunderstone |&lt;br /&gt;
maintainer = Aethaeryn  |&lt;br /&gt;
factions = Human Troopers, Elvish Mystics, Dwarvish Guardians, Orcish Raiders, [[Shaxthals]] |&lt;br /&gt;
version = (See below) |&lt;br /&gt;
w_version = 1.7.5 or [[WesnothRepository]] |&lt;br /&gt;
thread = N/A |&lt;br /&gt;
trees = (No longer exists)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
A ''post''-post-apocalyptic world where fantasy and science fiction collide, [[Thunderstone]] is the far future of Wesnoth's world Irdya. The core of the Thunderstone add-on is an era, consisting of five all-new factions - Human Troopers, Elvish Mystics, Dwarvish Guardians, Orcish Raiders, and [[Shaxthals]]. The add-on also introduces new terrains, the electric damage type, new weaponry and a new attack range, vehicles, and special units. Altogether, Thunderstone hopes to be the core for scenarios and campaigns set in the far future of the world of Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
==Story==&lt;br /&gt;
Thunderstone is set in the future, long after the &amp;quot;apocalypse&amp;quot; wiped out much of the world. In the years following Under the Burning Suns and [http://www.wesnoth.org/forum/viewtopic.php?f=8&amp;amp;t=17827 Invasion from the Unknown], the remnants of civilization have come in contact with high technology. Combined with over a hundred years of stability, a new era of innovation has made this rebuilding world far more advanced than before. In this age of mixed magic and science, the first powerful spacecraft have been developed and the elves, dwarves, humans, and orcs of the world of Irdya have ended their isolation from the galaxy at large...&lt;br /&gt;
&lt;br /&gt;
==Era Features==&lt;br /&gt;
===Terrains===&lt;br /&gt;
Thunderstone introduces new sets of terrain on top of the traditional Wesnoth terrains. The two major terrain sets are '''Uninhabited''' and '''Space'''. Space is the void between the heavenly bodies. Only spacecraft, robotic or semi-robotic creatures that do not need to breathe oxygen, and creatures shielded and given oxygen with a specialized suit can travel through space. Uninhabited is a similar environment except on a planet or moon, one hostile to most living creatures. The major difference is that only fliers can travel in Space while any machine small enough to enter the atmosphere (all except the biggest spaceships) can travel on or directly above Uninhabited terrain. &lt;br /&gt;
&lt;br /&gt;
===Electric Damage Type===&lt;br /&gt;
Thunderstone also introduces a new damage type called &amp;quot;Electric.&amp;quot; Electric is similar to fire, but is usually produced from high-tech weapons. Electric's main specialty is that it does extra damage against high-tech machinery such as vehicles, thus making it an effective counter for otherwise powerful units.&lt;br /&gt;
&lt;br /&gt;
===Weaponry and Ranges===&lt;br /&gt;
Thunderstone introduces many new weapons of a higher technology level than standard Wesnoth, including guns. It also introduces a new attack range, '''long ranged''', that is mostly used in spaceships and other weaponry capable of much higher range than bows or most guns, such as sniper rifles. Because of long ranged's rarity, it usually provides no retaliation to the attacker which is a key strategic advantage.&lt;br /&gt;
&lt;br /&gt;
'''Guns''' are portable machines that shoot projectiles at people and have replaced the bow as the ranged weapons of choice. Thunderstone is the dawn of the space-traveling age for the sentient races of Irdya, so guns vary from bullets to bursts of harmful electricity. Unlike bows, the rapid-fire capability of guns enables many guns span two ranges. For example, a shotgun is able to be used in both melee in ranged. Other guns can be used as blunt objects close up to still do melee damage. All standard guns that can be shot in melee have the first strike ability there, while those that are not shot do not have first strike.&lt;br /&gt;
&lt;br /&gt;
Despite the abandonment of the bow for the gun, some close-ranged weapons are still used. These varied objects are not necessarily disadvantaged because they are usually unanticipated.&lt;br /&gt;
&lt;br /&gt;
===Vehicles===&lt;br /&gt;
Most factions in Thunderstone will have several vehicles. Vehicles typically are so powerful and expensive that they are usually recruited at level 2 or higher. Vehicles are not living and thus have the mechanical trait (unpoisonable, undrainable, and unplaugeable). Vehicles can be flying or ground-based, and tend to be stronger than infantry. Their superiority comes with major weaknesses: electric-based attacks, and high prices and upkeep. In addition to the recruitable flying vehicles, there are also unrecruitable spaceships that are much stronger, but can only travel in space terrain. These units are non-standard and much rarer than the normal vehicles.&lt;br /&gt;
&lt;br /&gt;
===Five All-New Factions===&lt;br /&gt;
====Human Troopers====&lt;br /&gt;
&amp;lt;div class=&amp;quot;thumb tright&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
[http://www.wesnoth.org/forum/download/file.php?id=34916.png http://www.wesnoth.org/forum/download/file.php?id=34916.png]&lt;br /&gt;
&amp;lt;div class=&amp;quot;thumbcaption&amp;quot;&amp;gt;Draft sprites of some Human Troopers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Humans are still the jack-of-all-trades race. Balancing magic and science, humans are generalists who adapt to novelty more effectively than the other races of Irdya.  Their technical strength area is computers and miniaturization.  They, more than the other speaking peoples, tend to win by luring opponents into fatal mistakes.&lt;br /&gt;
&lt;br /&gt;
====Elvish Mystics====&lt;br /&gt;
Elves are still in touch with nature and in the years of peace they have greatly enhanced their magical skills. Elves focus heavily on this magic, rejecting technologies which they find disharmonious, and excel at biology and medicine.  Much of their technology is magically-enhanced. Tactically, elves focus on mobility and precision fire.&lt;br /&gt;
&lt;br /&gt;
====Dwarvish Guardians====&lt;br /&gt;
The dwarves are the master technologists and builders of Irdya, especially in the areas of power, weapons, propulsion, and large-scale engineering. They remain intensely conservative, and their technology is ultra-reliable even if it lacks the finesse and efficiency of human or elven work.&lt;br /&gt;
&lt;br /&gt;
====Orcish Raiders====&lt;br /&gt;
Orcs have stolen most of what they have from the more civilized species, but focus mostly on war. Their technology tends towards the crude, overpowered hack, and is notoriously (and sometimes comically) unreliable.  The flip side of this is that in any environment that doesn't outright kill them, orcs are less helpless without their tech than the other speaking peoples.&lt;br /&gt;
&lt;br /&gt;
====Shaxthals (Biomechs)====&lt;br /&gt;
''Main article: [[Shaxthals]]&lt;br /&gt;
&lt;br /&gt;
The Shaxthals are an ancient race created by the original inhabitants of Irdya. These combinations of bioengineering and magic were made to aid in a war, but they soon became out-of-control. They were defeated, however, and only revived recently under the Chaos Empire. When the Chaos Empire was destroyed, the Shaxthals became free to do what they do best - kill.&lt;br /&gt;
&lt;br /&gt;
==Add-ons==&lt;br /&gt;
Thunderstone will eventually publish the following add-ons:&lt;br /&gt;
&lt;br /&gt;
'''Thunderstone Era''' will be the core add-on for the Thunderstone project and will provide the units, terrain, and other files necessary for every other Thunderstone-based add-on. This will be the only add-on necessary to play normal multiplayer.&lt;br /&gt;
&lt;br /&gt;
'''Thunderstone Trilogy''' will focus on the main Thunderstone plot arc, and is designed to be the main set of campaigns for the Thunderstone Era. The trilogy will provide the most epic saga in the Thunderstone timeline, and attempt to showcase many key plot elements and factions.&lt;br /&gt;
&lt;br /&gt;
==Versions==&lt;br /&gt;
Thunderstone will use a versioning system that is designed to help users of the era. The version will be contain three numbers (e.g. 0.1.1). The first number is the major milestone (see roadmap below). The second number indicates incompatible releases, and users cannot play multiplayer between these versions. Content designed to use Thunderstone might also use features not found in previous versions and thus it is recommended to update when a new incompatible release is released. The third number indicates compatible releases. This means that content for Thunderstone and MP games using Thunderstone will still work with each other. Someone with 0.1.1 could play with someone else who used 0.1.0.&lt;br /&gt;
&lt;br /&gt;
===Major Release Roadmap: What is needed for...?===&lt;br /&gt;
====0.1.x (Demo)====&lt;br /&gt;
*Playable. &lt;br /&gt;
&lt;br /&gt;
====0.2.x (Alpha)====&lt;br /&gt;
*Unit art: can be placeholder/draft; higher levels can share art with lower levels;&lt;br /&gt;
*Unit WML: every faction's units; non-buggy playing; balance not guaranteed.&lt;br /&gt;
&lt;br /&gt;
====0.3.x (Beta) ====&lt;br /&gt;
*Unit art: can be placeholder/draft; none shared&lt;br /&gt;
*Unit WML: balancing begins;&lt;br /&gt;
*Extra features (terrain, items, other units, etc.) for everything planned are all included.&lt;br /&gt;
&lt;br /&gt;
====Release 0.4.x====&lt;br /&gt;
*Unit art: all base frames included;&lt;br /&gt;
*Unit WML: balanced to the point of somewhat fair multiplayer;&lt;br /&gt;
*Extra features (terrain, items, other units, etc.) are mostly polished.&lt;br /&gt;
*The two additional add-ons are released.&lt;br /&gt;
&lt;br /&gt;
====Release 1.0====&lt;br /&gt;
*Unit art: complete base frames, most basic animations;&lt;br /&gt;
*Unit WML: balanced as best as possible;&lt;br /&gt;
*Extra features (terrains, items, other units, etc.) completed;&lt;br /&gt;
*Other official add-ons also completed and also at 1.0. &lt;br /&gt;
&lt;br /&gt;
====Release 2.0====&lt;br /&gt;
*On par with, or close to, Default Era and mainline.&lt;br /&gt;
&lt;br /&gt;
===Subversion===&lt;br /&gt;
Thunderstone also uses version control to coordinate work between the released versions. You can browse the Thunderstone repository to see the latest draft of Thunderstone Era [http://wesnoth-umc-dev.svn.sourceforge.net/viewvc/wesnoth-umc-dev/trunk/Thunderstone_Era/ here] and Thunderstone Trilogy [http://wesnoth-umc-dev.svn.sourceforge.net/viewvc/wesnoth-umc-dev/trunk/Thunderstone_Trilogy/ here]. Thunderstone is part of [[Wesnoth UMC Dev]], which hosts the project's repository. You can download Thunderstone with the commands:&lt;br /&gt;
&lt;br /&gt;
 svn co https://wesnoth-umc-dev.svn.sourceforge.net/svnroot/wesnoth-umc-dev/trunk/Thunderstone_Era Thunderstone_Era&lt;br /&gt;
(For the Thunderstone Era)&lt;br /&gt;
&lt;br /&gt;
 svn co https://wesnoth-umc-dev.svn.sourceforge.net/svnroot/wesnoth-umc-dev/trunk/Thunderstone_Trilogy Thunderstone_Trilogy&lt;br /&gt;
(For the Thunderstone Trilogy of campaigns)&lt;br /&gt;
&lt;br /&gt;
Please note that Thunderstone, like all add-ons, goes in data/add-ons/ in the Wesnoth userdata directory. The repository version tends to be unstable and is generally not compatible with a release of Thunderstone on the add-ons server, so use it with caution and do not expect to be able to use it for multiplayer.&lt;br /&gt;
&lt;br /&gt;
==Coordination==&lt;br /&gt;
If you would like to help with Thunderstone, you can coordinate on the #wesnoth-thunderstone IRC channel (for real-time chat and to keep updated on the repository revisions) and in our forum threads for general discussion and art.&lt;br /&gt;
&lt;br /&gt;
====IRC Channel====&lt;br /&gt;
[irc://irc.freenode.net/wesnoth-thunderstone #wesnoth-thunderstone] (irc.freenode.net)&lt;br /&gt;
&lt;br /&gt;
====Forum Threads====&lt;br /&gt;
''A forum thread for general discussion will be released as soon as Thunderstone is officially published on the add-ons server. Until then, IRC is a suitable place for communication.&lt;br /&gt;
*[http://www.wesnoth.org/forum/viewtopic.php?f=23&amp;amp;t=26018 Thunderstone Art Thread]&lt;br /&gt;
&lt;br /&gt;
====Wiki Pages====&lt;br /&gt;
'''[[Thunderstone art]]''' is used to keep track of what art is needed and what art is done.&lt;br /&gt;
&lt;br /&gt;
[[Category:Eras]]&lt;br /&gt;
[[Category:Thunderstone|*]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Bwrsandman_Whiteboard:_Multiple_Chance-to-kill_calculations_and_interface_polish&amp;diff=49160</id>
		<title>Bwrsandman Whiteboard: Multiple Chance-to-kill calculations and interface polish</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Bwrsandman_Whiteboard:_Multiple_Chance-to-kill_calculations_and_interface_polish&amp;diff=49160"/>
		<updated>2013-03-21T03:21:23Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical instance of &amp;quot;SVN&amp;quot; from mediawiki search to avoid false positives.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2012Student}}&lt;br /&gt;
[[Category:SoC Ideas Whiteboard Multiple CTK 2012]]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Sandy Carter - Whiteboard: Organic Multiple Chance-to-kill preview and attack.&amp;lt;/h4&amp;gt;&lt;br /&gt;
=Abstract=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
TODO: Add more first-level sections to detail your proposal&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
bwrsandman&lt;br /&gt;
=SoC Application=&lt;br /&gt;
Submitted to google&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
==Basics==&lt;br /&gt;
===Write a small introduction to yourself.===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===State your preferred email address.===&lt;br /&gt;
mr (DOT) sandy (DOT) carter (AT) gmail&lt;br /&gt;
&lt;br /&gt;
===If you have chosen a nick for IRC and Wesnoth forums, what is it?===&lt;br /&gt;
bwrsandman&lt;br /&gt;
&lt;br /&gt;
===Why do you want to participate in summer of code?===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===What are you studying, subject, level and school?===&lt;br /&gt;
I am finishing my third year out of four of my Undergraduate degree at Concordia University, Montreal, Canada in Computer Science with Gaming Option.&lt;br /&gt;
&lt;br /&gt;
===What country are you from, at what time are you most likely to be able to join IRC?===&lt;br /&gt;
Canada. I can join between 2:00PM and 6:00AM GMT.&lt;br /&gt;
&lt;br /&gt;
===Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.===&lt;br /&gt;
I have no commitments not do I plan on taking vacation. &lt;br /&gt;
&lt;br /&gt;
==Experience==&lt;br /&gt;
&lt;br /&gt;
===What programs/software have you worked on before?===&lt;br /&gt;
I worked on maintaining and adding modules to an in house accounting software for the Canadian Federal Government.&lt;br /&gt;
&lt;br /&gt;
I have played around with the code from the OpenMW project in order to better understand it.&lt;br /&gt;
&lt;br /&gt;
I designed and coded a competitive puzzle game in XNA named Cubic.&lt;br /&gt;
&lt;br /&gt;
I re-implemented c code for .md5mesh and .md5anim loading and rendering in OpenGL using C++ code.&lt;br /&gt;
&lt;br /&gt;
===Have you developed software in a team environment before? (As opposed to hacking on something on your own)===&lt;br /&gt;
&lt;br /&gt;
I worked in a team of four to create a video game in XNA name Cubic.&lt;br /&gt;
&lt;br /&gt;
I have taken a software engineering course dedicated to working in team environments.&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Gaming experience - Are you a gamer?===&lt;br /&gt;
&lt;br /&gt;
I have been a gamer since my early teen years.&lt;br /&gt;
&lt;br /&gt;
====What type of gamer are you?====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====What type of games?====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====What type of opponents do you prefer?====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====Are you more interested in story or gameplay?====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A short game needs a good storyline to be memorable.&lt;br /&gt;
&lt;br /&gt;
The balance lies in the replayability of the game.&lt;br /&gt;
&lt;br /&gt;
====Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
I have tried Wesnoth. I played through the tutorial and one campaign. I played a few hours. I have leaned toward single player.&lt;br /&gt;
&lt;br /&gt;
===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&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N (during the evaluation period or earlier) please state so.===&lt;br /&gt;
&lt;br /&gt;
I'm currently working on a patch to allow multiple attackers in the whiteboard.&lt;br /&gt;
The patch is a work in progress and can be found at https://github.com/bwrsandman/Wesnoth-Whiteboard/tree/dev&lt;br /&gt;
&lt;br /&gt;
==Communication skills==&lt;br /&gt;
&lt;br /&gt;
===Though most of our developers are not native English speakers, English is the project's working language.  Describe your fluency level in written English.===&lt;br /&gt;
Very fluent.&lt;br /&gt;
&lt;br /&gt;
===What spoken languages are you fluent in?===&lt;br /&gt;
I am fluent in both English and French.&lt;br /&gt;
&lt;br /&gt;
===Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.===&lt;br /&gt;
I am polite in game chat.&lt;br /&gt;
&lt;br /&gt;
===Do you give constructive advice?===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Do you receive advice well?===&lt;br /&gt;
Yes, I leave my ego out of the equation. I am always open to advice in order to become a better developer.&lt;br /&gt;
&lt;br /&gt;
===Are you good at sorting useful criticisms from useless ones?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Project==&lt;br /&gt;
&lt;br /&gt;
===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?===&lt;br /&gt;
Whiteboard: Multiple Chance-to-kill calculations and interface polish.&lt;br /&gt;
&lt;br /&gt;
===If you have invented your own project, please describe the project and the scope.===&lt;br /&gt;
N/A&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
===Why did you choose this project?===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.===&lt;br /&gt;
I have no booked holidays, but I have exams until April 19th and won't be able to contribute much.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*[Weeks 01-02] Get to know mentor, read documentation&lt;br /&gt;
*[Weeks 04-05] Familiarizing with the code. &lt;br /&gt;
*[Weeks 05-06] Create options, dialogs, empty functions and make sure they interact properly &lt;br /&gt;
*[Weeks 07-08] Implement functionality&lt;br /&gt;
*[Weeks 09-10] Debugging&lt;br /&gt;
*[Weeks 11-12] Get ready for midterm evaluation, buffer&lt;br /&gt;
*[Weeks 13-14] Respond to midterm feedback.&lt;br /&gt;
*[Weeks 15-16] Debug and Finalize&lt;br /&gt;
*[Weeks 17-18] Buffer.&lt;br /&gt;
&lt;br /&gt;
===Include as much technical detail about your implementation as you can===&lt;br /&gt;
&lt;br /&gt;
I would have to enable the creation of a vector of attackers and modify the functions to have these as parameters.&lt;br /&gt;
&lt;br /&gt;
Such functions include &lt;br /&gt;
&amp;lt;code C++&amp;gt;&lt;br /&gt;
units_list_preview_pane::get_details()&lt;br /&gt;
unit_preview_pane::draw_contents()&lt;br /&gt;
mouse_handler::show_attack_dialog(..)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Two buttons will be added to change the order of attack. The display of different units will be toggled with the &amp;lt;code C++&amp;gt;greyscale_image(..)&amp;lt;/code&amp;gt; function, where only the selected unit will be non-affected, therefore in color.&lt;br /&gt;
&lt;br /&gt;
I would add functionality for having multiple and attacking arrows to display the multiple walk paths for each unit.&lt;br /&gt;
&lt;br /&gt;
http://dl.dropbox.com/u/5666690/multiple-attack-concept.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code C++&amp;gt;&lt;br /&gt;
draw_contents()&lt;br /&gt;
&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
===What do you expect to gain from this project?===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===What would make you stay in the Wesnoth community after the conclusion of SOC?===&lt;br /&gt;
&lt;br /&gt;
After a successful conclusion of SOC, I expect to be fairly familiar with the code and community of Wesnoth.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Practical considerations==&lt;br /&gt;
&lt;br /&gt;
===Are you familiar with any of the following tools or languages?===&lt;br /&gt;
&lt;br /&gt;
* Sub&amp;amp;shy;&amp;amp;shy;version (used for all commits)&lt;br /&gt;
&lt;br /&gt;
For team projects at University, if I'm not using git, I'm using S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N. I used command line s&amp;amp;shy;&amp;amp;shy;v&amp;amp;shy;&amp;amp;shy;n and tortoise s&amp;amp;shy;&amp;amp;shy;v&amp;amp;shy;&amp;amp;shy;n.&lt;br /&gt;
&lt;br /&gt;
* C++ (language used for all the normal source code)&lt;br /&gt;
&lt;br /&gt;
C/C++ are my languages of choice.&lt;br /&gt;
&lt;br /&gt;
* STL, Boost, Sdl (C++ libraries used by Wesnoth)&lt;br /&gt;
&lt;br /&gt;
I have used Boost and STL for most of my C++ projects.&lt;br /&gt;
&lt;br /&gt;
* Python (optional, mainly used for tools)&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* build environments (eg cmake/scons)&lt;br /&gt;
&lt;br /&gt;
I have used CMake to compile OpenMW and I use it often to compile from Arch Linux's AUR.&lt;br /&gt;
&lt;br /&gt;
* WML (the wesnoth specific scenario language)&lt;br /&gt;
&lt;br /&gt;
No&lt;br /&gt;
&lt;br /&gt;
* Lua (used in combination with WML to create scenarios)&lt;br /&gt;
&lt;br /&gt;
No, but I am very eager to learn it!&lt;br /&gt;
&lt;br /&gt;
===Which tools do you normally use for development? Why do you use them?===&lt;br /&gt;
&lt;br /&gt;
I use command line tools whenever I can!&lt;br /&gt;
&lt;br /&gt;
My favourite IDE is Qt Creator, but I've used codeblocks and Netbeans.&lt;br /&gt;
&lt;br /&gt;
When I have to program in Windows (C#, mostly) I use Microsoft Visual Studio Pro (offered by my university).&lt;br /&gt;
&lt;br /&gt;
===What programming languages are you fluent in?===&lt;br /&gt;
&lt;br /&gt;
C/C++/C#, java, Visual Basic 6, bash shell, php and others.&lt;br /&gt;
&lt;br /&gt;
===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 &amp;quot;there is no way to contact you&amp;quot; does arise!===&lt;br /&gt;
&lt;br /&gt;
Feel free to call my cellphone, incoming calls are free and unlimited for me.&lt;br /&gt;
&lt;br /&gt;
I also have skype, if I use it a lot to talks to dev, I can open another account.&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SoC_2012_HappyKsuh_AI_Recruitment&amp;diff=49159</id>
		<title>SoC 2012 HappyKsuh AI Recruitment</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SoC_2012_HappyKsuh_AI_Recruitment&amp;diff=49159"/>
		<updated>2013-03-21T03:20:05Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical references to Subversion from the wiki search function&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2012Student}}&lt;br /&gt;
[[Category:SoC_Ideas_AI_Recruitment_2012]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=5&amp;gt;&amp;lt;b&amp;gt;This proposal is under construction!&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Kseniya Buraya - Refactoring AI Recruitment&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project is to improve current AI recruiting system. I will develop and implement these options:&lt;br /&gt;
* To recruit with a lot of leaders instead of one&lt;br /&gt;
* To consider the terrain type where the possible battle will be&lt;br /&gt;
* To consider enemy and allied units together as to create great counter-unit mix&lt;br /&gt;
* To provide the scenario editor an option to choose recruiting strategy (&amp;quot;defensive&amp;quot;, &amp;quot;agressive&amp;quot;, etc.) and to set limits on particular units&lt;br /&gt;
&lt;br /&gt;
=Details=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! NAME&lt;br /&gt;
! DESCRIPTION&lt;br /&gt;
! REQUIRES&lt;br /&gt;
! PROGRESS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Per-leader recruit/recall lists&lt;br /&gt;
| Add to ai_default_recruitment_stage personal recruit/recall lists for each leader.&lt;br /&gt;
| none&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Multiply leaders support&lt;br /&gt;
| Modify ai_default_recruitment_stage as to make it support recruiting with multiply leaders. Implementation requires to find a way to find a keep for each leader, probably bruteforcing would be effective.&lt;br /&gt;
| &amp;lt;b&amp;gt;0&amp;lt;/b&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Terrain analysis&lt;br /&gt;
| Add function to analyze_potential_recruit_terrain() similar to &amp;lt;i&amp;gt;analyze_potential_recruit_combat()&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;analyze_potential_recruit_movements()&amp;lt;/i&amp;gt;&lt;br /&gt;
| none&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Goals of potential recruits&lt;br /&gt;
| Find a way to store information about the goals of every recruit. Probably to store it in unit::role_ later.&lt;br /&gt;
| none&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Limitation of recruitment&lt;br /&gt;
| Find a way to store information about the uppper limit of each type of units.&lt;br /&gt;
| none&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Sensible counter-recruiting strategy&lt;br /&gt;
| Add function similar to &amp;lt;i&amp;gt;get_combat_score&amp;lt;/i&amp;gt;, that will calculate scores based not only on enemy units but on own units too. Probably it'll take a lot of time to develop and test.&lt;br /&gt;
| &amp;lt;b&amp;gt;3&amp;lt;/b&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Different recruiting styles&lt;br /&gt;
| Develop and implement different recruiting styles (i.e. &amp;quot;defensive&amp;quot;, &amp;quot;aggressive&amp;quot;, &amp;quot;conserve resourses&amp;quot;) and integrate it into the current recruiting system.&lt;br /&gt;
| none&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Wait for enemy strategy&lt;br /&gt;
| Add functionality to AI to wait for player's units creation to run counter-recruiting strategy against them. Looks like while waiting AI will recruit in &amp;quot;scout mode&amp;quot;.&lt;br /&gt;
| &amp;lt;b&amp;gt;5 6&amp;lt;/b&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Timeline=&lt;br /&gt;
{| border=1&lt;br /&gt;
! Time&lt;br /&gt;
! Task&lt;br /&gt;
! Status&lt;br /&gt;
|-&lt;br /&gt;
| 01.04 - 20.04&lt;br /&gt;
| Get familiar with the code in /AI/default/. Develop and implement tasks 0 and 1 as preliminary example of my coding abilities.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 24.04 - 06.05&lt;br /&gt;
| Fix bugs and make improvements to tasks 0 and 1 if necessary. Develop analyze_potential_recruit_terrain() function and get familiar with necessary code.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 07.05 - 13.05&lt;br /&gt;
| Implement and test analyze_potential_recruit_terrain() function.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 14.05 - 20.05&lt;br /&gt;
| Get familiar with code in /AI/ and / like game.*, unit.* etc. Get tasks 0-2 totally completed.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 21.05 - 03.06&amp;lt;br&amp;gt;(hard-studying period)&lt;br /&gt;
| Develop task 3. &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 04.06 - 10.06&lt;br /&gt;
| Make recruits to know their future goals. Testing and bugfixing.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 11.06 - 01.07&amp;lt;br&amp;gt;(exams period)&lt;br /&gt;
| Develop and implement upper limitation on recruiting every unit.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02.07 - 08.07&lt;br /&gt;
| Think about counter-recruiting strategy, implement and test the prototype. &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 09.07 - 15.07&amp;lt;br&amp;gt;(mid-term deadline)&lt;br /&gt;
| Based on prototype implement working realisation of counter-recruiting strategy. Have tasks 0-4 cleared.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 16.07 - 22.07&lt;br /&gt;
| Think of and document necessary styles of recruiting. Get a clear view how to integrate those styles into the recruiting process.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 23.07 - 29.07&lt;br /&gt;
| Implement the system of styles.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 30.07 - 05.08&lt;br /&gt;
| Develop and implement the &amp;quot;wait for&amp;quot; strategy. Looks simple in case of tasks 5-6 done.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 06.08 - 12.08&lt;br /&gt;
| Make necessary bugfixing and work on documentation.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
HappyKsuh&lt;br /&gt;
=SoC Application=&lt;br /&gt;
Submitted to google&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;1) Basics&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Name    	: Kseniya Buraya&lt;br /&gt;
&lt;br /&gt;
Age     	: 18&lt;br /&gt;
&lt;br /&gt;
E-mail  	: ksu.nyaka @ gmail . com&lt;br /&gt;
&lt;br /&gt;
IRC     	: HappyKsuh&lt;br /&gt;
&lt;br /&gt;
Country 	: Russia (UTC +4)&lt;br /&gt;
&lt;br /&gt;
Education	: SPb NRU IFMO, Computer Science, 1st year&lt;br /&gt;
&lt;br /&gt;
I want to participate in GSoC because it provides an awesome opportunity of working in a huge project. Getting professional experience is the main goal for me for now. Getting in touch with the Open Source projects and community, getting the knowledge of how they work is also significant. And of course financial stimulation plays an important role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;2) Experience&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I have no developing experience yet and as I'm a first year student I'm participating GSoC at the first time. The only significant thing is that I worked on translations of Battle for Wesnoth campaigns to the Russian during the Google Code In 2011, so I'm familiar with all the instruments necessary to get involved into the project.&lt;br /&gt;
&lt;br /&gt;
Instead I got a lot of ACM experience while studying in high school that included some work on AI-based tasks. I think that AI is one of the most interesting spheres in nowadays IT, therefore I looked for AI-based projects in GSoC. &lt;br /&gt;
&lt;br /&gt;
In reference to gaming experience - of course I'm a gamer. I prefer games that provide PvP experience like WoW or latest CoD, or games that just tell you a cool story like casual Machinarium or Half-Life series. For me the most significant part of game is the symbiosis of the story and gameplay, I hate those moments when after a thrilling story turn you have to watch stupid misses in AI-scripts or other gameplay issues that destroy all the delight of the moment.&lt;br /&gt;
&lt;br /&gt;
I've played Wesnoth campaigns for a month during GCI 2011 and haven't participated in online battles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;3) Communication skills&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I'm a native Russian speaker and I'm quite fluent in English. I'm feeling quite comfortable speaking in IRC. Usually it is not a problem for me to find common language with other people because I'm not afraid to ask questions and always answer if smb asks me.&lt;br /&gt;
&lt;br /&gt;
I also feel comfortable with constructive criticism and advices given to me, because these are the only two things that experienced colleagues can give to me, so why to refuse? The same is right for me: for what do I have experience if I can't share it with smb?&lt;br /&gt;
&lt;br /&gt;
Saying about developing - I'm surely will discuss the details of idea until I'll get the clear vision of how it'll work. For me getting the perfectly working code is much more important than coding smth that may be even unnecessary. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;4) Project&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I'm interested in AI Recruiting Algorithm. As I mentioned above, I had some experience in AI-algorithms and they looked very interesting to me, therefore I chose that project. I'm looking to get experience of AI-scripting and deepen my knowledge at that sphere. If the results of the project will be important for me, I'd stay in the project and continue work on AI improvements.&lt;br /&gt;
 &lt;br /&gt;
Unfortunately I have my exams during the mid of June, therefore I won't be very productive until that time. Instead I'll try to do some work till the end of May. This way the half of work should be done to the first mid-term deadline.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;5) Practical considerations&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I'm familiar with Java and C++ and ususally use MS VS (Windows) or Eclipse (Linux) as working IDE, or sometimes gedit if the project is simple and small.&lt;br /&gt;
&lt;br /&gt;
;Sub&amp;amp;shy;&amp;amp;shy;version&lt;br /&gt;
&lt;br /&gt;
:yes&lt;br /&gt;
&lt;br /&gt;
;C++&lt;br /&gt;
&lt;br /&gt;
:yes&lt;br /&gt;
&lt;br /&gt;
;STL, Boost, Sdl&lt;br /&gt;
&lt;br /&gt;
:familiar with STL and have a little experience in Boost&lt;br /&gt;
&lt;br /&gt;
;Python&lt;br /&gt;
&lt;br /&gt;
:no&lt;br /&gt;
&lt;br /&gt;
;build environments&lt;br /&gt;
&lt;br /&gt;
:yes&lt;br /&gt;
&lt;br /&gt;
;WML&lt;br /&gt;
&lt;br /&gt;
:no&lt;br /&gt;
&lt;br /&gt;
;Lua&lt;br /&gt;
&lt;br /&gt;
:no&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SoC2012_Fristi_Teach_That_AI&amp;diff=49158</id>
		<title>SoC2012 Fristi Teach That AI</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SoC2012_Fristi_Teach_That_AI&amp;diff=49158"/>
		<updated>2013-03-21T03:18:58Z</updated>

		<summary type="html">&lt;p&gt;Esr: Hide historical references to Subversion from the wiki search function&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2012Student}}&lt;br /&gt;
[[Category:SoC Ideas AI Scenario Objectives 2012]]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&amp;lt;h4&amp;gt;Kevin Wyckmans - Teach That AI! &amp;lt;/h4&amp;gt;&lt;br /&gt;
As stated on the idea page I want to extend the lua capabilities and implement the necessary code to allow the AI to finish the main Wesnoth campaigns. On top of this it should be able to this in a more or less optimal way, that may or may not be specified by the user.&lt;br /&gt;
&lt;br /&gt;
=Your Suggestions=&lt;br /&gt;
Still working on these&lt;br /&gt;
&lt;br /&gt;
=IRC=&lt;br /&gt;
Fristi, Fristii, Fristilus&lt;br /&gt;
=SoC Application=&lt;br /&gt;
Submitted to google&lt;br /&gt;
&lt;br /&gt;
=Questionnaire=&lt;br /&gt;
1) Basics&lt;br /&gt;
&lt;br /&gt;
1.1) Write a small introduction to yourself.&lt;br /&gt;
&lt;br /&gt;
 I am Kevin, 23-year old computer science student living in Antwerp, Belgium. I like enjoying life!&lt;br /&gt;
&lt;br /&gt;
1.2) State your preferred email address.&lt;br /&gt;
&lt;br /&gt;
 kevinwijckmans [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&lt;br /&gt;
&lt;br /&gt;
 Fristi&lt;br /&gt;
&lt;br /&gt;
1.4) Why do you want to participate in summer of code?&lt;br /&gt;
&lt;br /&gt;
 I would love to get started in the open source world and community. As of late I realized I was more or less wasting my free time, I wanted to fill it in with a purpose. Learn things, get to know people, this kind of stuff.&lt;br /&gt;
&lt;br /&gt;
1.5) What are you studying, subject, level and school? &lt;br /&gt;
&lt;br /&gt;
 I am studying computer science, specializing in Software Engineering. Currently in my 1st Master at the University of Antwerp&lt;br /&gt;
&lt;br /&gt;
1.6) What country are you from, at what time are you most likely to be able to join IRC?&lt;br /&gt;
&lt;br /&gt;
 Belgium. I can join irc at 17.00 pm untill 01.00 a.m. from now untill the end of may. Starting July I can be online most of the day, say from 00.00pm to 2 or 3 a.m.&lt;br /&gt;
&lt;br /&gt;
1.7) Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.&lt;br /&gt;
&lt;br /&gt;
 Untill the end of may I have classes. I am supposed to have exams in June but I only have to take one, should only keep me busy for about three days. Nothing else to do.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
2) Experience&lt;br /&gt;
&lt;br /&gt;
2.1) What programs/software have you worked on before?&lt;br /&gt;
&lt;br /&gt;
I have worked on various assignments for university courses. This included: &lt;br /&gt;
&lt;br /&gt;
*a basic facebook clone (Very, very simple)&lt;br /&gt;
*A Breakout clone&lt;br /&gt;
*A basic graphics engine&lt;br /&gt;
*A C compiler&lt;br /&gt;
*A basic distributed file system&lt;br /&gt;
Unfortunately I did not work on any large external projects yet.&lt;br /&gt;
&lt;br /&gt;
2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&lt;br /&gt;
&lt;br /&gt;
 A lot of the work at University was in group. Quite a lot of works has been done in pairs. For one project we had to work with four or five people.&lt;br /&gt;
&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
 Nope.&lt;br /&gt;
&lt;br /&gt;
2.4) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&lt;br /&gt;
&lt;br /&gt;
 Not applicable.&lt;br /&gt;
&lt;br /&gt;
2.5) Gaming experience - Are you a gamer?&lt;br /&gt;
&lt;br /&gt;
 Yes, I very much am! As in, if I have the time to do it. I used to play a lot of games when I was younger. Now I don't have that much time anymore, but I do like it if I have some spare time.&lt;br /&gt;
&lt;br /&gt;
2.5.1) What type of gamer are you?&lt;br /&gt;
&lt;br /&gt;
 Single player out of habit; I do like multiplayer with friends.&lt;br /&gt;
&lt;br /&gt;
2.5.2) What type of games? &lt;br /&gt;
&lt;br /&gt;
 RPG, RTS, Action, ... Something that can deliver an experience. &lt;br /&gt;
&lt;br /&gt;
2.5.3) What type of opponents do you prefer? &lt;br /&gt;
&lt;br /&gt;
 Friendly ones, regardless of how good they are&lt;br /&gt;
&lt;br /&gt;
2.5.4) Are you more interested in story or gameplay?&lt;br /&gt;
&lt;br /&gt;
 Story is important to get you immersed in a game, but it's nothing without decent gameplay. Same the other way around, decent gameplay can keep you interested for a while, but long term, you need story.&lt;br /&gt;
&lt;br /&gt;
2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
&lt;br /&gt;
 Yes, it's hard to say for how long, it has been coming and going the past few years. Everytime I decide to migrate to Linux it's one of the first things I install. So yes, I did play.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
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 S&amp;amp;shy;&amp;amp;shy;V&amp;amp;shy;&amp;amp;shy;N (during the evaluation period or earlier) please state so.&lt;br /&gt;
&lt;br /&gt;
 I have not contributed any patches yet, but I am trying to submit one before the application period ends to show I am really motivated.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
3) Communication skills&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 I am quite fluent in English, spoken as well as written.&lt;br /&gt;
&lt;br /&gt;
3.2) What spoken languages are you fluent in?&lt;br /&gt;
&lt;br /&gt;
 Dutch and English&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
3.3) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&lt;br /&gt;
&lt;br /&gt;
 Yeah, I played MMO's for a while, I grew a tough skin.&lt;br /&gt;
&lt;br /&gt;
3.4) Do you give constructive advice? &lt;br /&gt;
&lt;br /&gt;
 I try.&lt;br /&gt;
&lt;br /&gt;
3.5) Do you receive advice well? &lt;br /&gt;
&lt;br /&gt;
 If it's decent advice, coming from people I know that know their stuff.&lt;br /&gt;
&lt;br /&gt;
3.6) Are you good at sorting useful criticisms from useless ones?&lt;br /&gt;
&lt;br /&gt;
 Yeah, I can do it.&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;see how it turn out&amp;quot;, taking the risk of having it thrown away if it doesn't match what the project want&lt;br /&gt;
&lt;br /&gt;
 I do like to know where I am going when programming. This does not have to be very detailed, just a high level view of where I have to end.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
4) Project&lt;br /&gt;
&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
 AI: teach the AI to play Wesnoth's mainline campaigns&lt;br /&gt;
&lt;br /&gt;
I want to concentrate on the AI being able to not only finish the campaigns, but finish them in an optimal as possible way. Maybe even allow a user to specify what is seen as &amp;quot;optimal&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
4.2) If you have invented your own project, please describe the project and the scope.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
4.3) Why did you choose this project?&lt;br /&gt;
&lt;br /&gt;
 I choose this project because I have some experience with AI and the concept of AI interests me greatly. In University we had to program Pac-Man to win the game as efficiently as possible. I had an enormous amount of fun with this project. I really, really liked it. &lt;br /&gt;
&lt;br /&gt;
I had another project in which I described the behaviour of agents using statecharts. This resulted in some emergent behaviour and was really nice to see.&lt;br /&gt;
&lt;br /&gt;
4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*Now until 6th of April: Communicate with wesnoth devs and try and finish a patch.&lt;br /&gt;
*24th april - 21st of May: Intensively get to know mentor, get to know the code, I want to be able to get started with coding at once when the period starts, so everything should be clear, I should have a good idea where to do what.&lt;br /&gt;
&lt;br /&gt;
I indicated the dev. period in weeks according to the GSoC calendar&lt;br /&gt;
&lt;br /&gt;
*15th of june to 19th of june: My only exam + study time&lt;br /&gt;
*Week 1 + 2: Expanding low-level Lua capabilities (if needed)&lt;br /&gt;
*Week 3 - 7: Implement the necessary behaviour and let the AI progress through the different campaigns.&lt;br /&gt;
*Week 8: All the mainline campaigns have to be able to be completed by the AI. [REQUIRED]&lt;br /&gt;
*14th of July: My Birthday, will not be able to work for two days.&lt;br /&gt;
*Week 9 - 12: Allow a user to make adjustements to what is deemed &amp;quot;optimal&amp;quot;. [Optional]&lt;br /&gt;
*Week 13: [Buffer]&lt;br /&gt;
 &lt;br /&gt;
4.5) Include as much technical detail about your implementation as you can&lt;br /&gt;
&lt;br /&gt;
 While I do have experience programming AI, at this moment I do not know enough about the Wesnoth source to go into a lot of detail. I am working on that and I hope to be able to expand on this by the 6th of April &lt;br /&gt;
&lt;br /&gt;
4.6) What do you expect to gain from this project?&lt;br /&gt;
&lt;br /&gt;
 I expect to know how it feels like to be part of a team working on a real-life project of a decent size. I want to have learned something and got to know some new people.&lt;br /&gt;
&lt;br /&gt;
4.7) What would make you stay in the Wesnoth community after the conclusion of SOC? &lt;br /&gt;
&lt;br /&gt;
 If I have finished this project I am sure I would stick around, I would have gained knowledge and insight into Wesnoth and I would not want to let it go to waste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Practical considerations&lt;br /&gt;
&lt;br /&gt;
5.1) Are you familiar with any of the following tools or languages?&lt;br /&gt;
&lt;br /&gt;
* Sub&amp;amp;shy;&amp;amp;shy;version (used for all commits) - Used it a lot the first 3 years of university (now GIT)&lt;br /&gt;
&lt;br /&gt;
* C++ (language used for all the normal source code) - Very familiar, though a bit rusty&lt;br /&gt;
&lt;br /&gt;
* STL, Boost, Sdl (C++ libraries used by Wesnoth) - Used STL and SDL quite a lot, a bit of experience using boost.&lt;br /&gt;
&lt;br /&gt;
* Python (optional, mainly used for tools) - Is a language I am using frequently at this moment.&lt;br /&gt;
&lt;br /&gt;
* build environments (eg cmake/scons) - I have some experience using makefiles.&lt;br /&gt;
&lt;br /&gt;
* WML (the wesnoth specific scenario language) - Nope.&lt;br /&gt;
&lt;br /&gt;
* Lua (used in combination with WML to create scenarios) - A bit, did some little things in Lua, this would be something I would be practicing a lot before starting the project.&lt;br /&gt;
&lt;br /&gt;
5.2) Which tools do you normally use for development? Why do you use them?&lt;br /&gt;
&lt;br /&gt;
 I have used a lot of tools, starting from vim to Eclipse. They each have their strengths and weaknesses. For small things in commandline I use vim once in a while. For larger projects I use Eclipse if possible because of the ease of use and tools available.&lt;br /&gt;
&lt;br /&gt;
5.3) What programming languages are you fluent in?&lt;br /&gt;
&lt;br /&gt;
 I am fluent in C++ and python. I have used Java extensively aswell, but that is a while ago.&lt;br /&gt;
&lt;br /&gt;
5.4) 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 &amp;quot;there is no way to contact you&amp;quot; does arise!&lt;br /&gt;
&lt;br /&gt;
 Nope, would not mind at all.&lt;/div&gt;</summary>
		<author><name>Esr</name></author>
		
	</entry>
</feed>