After the Storm 0.8.1

Version 0.8.1 is out, right on schedule!

Just like the last time, this version will definitely not be exempt of flaws. You will most likely stumble upon dreadful bugs along the way, and I will need your help to fix them — make sure to report them in the campaign’s forum topic as usual!

Special thanks go to bumbadadabum for kindly providing a patch to integrate the changes to the Aragwaithi faction from his multiplayer add-on (The Aragwaithi in the 1.10 add-ons server) into AtS. 0.8.0 users shouldn’t have any game-breaking problems playing with their old units from saved games of E3S3 (Amidst the Ruins of Glamdrol), although some animations may not display correctly. If in doubt, restart from the start-of-scenario save for E3S3.

Also note that due to an internal change, if you load the start-of-scenario save for E3S4 (Outpost of Hell) from version 0.8.0, you will see the loadscreen twice. This is normal and intended, and only affects old saved games for that scenario.

This release is a turning point for various reasons I had already explained a while ago. The good thing is that once scenarios stop landing in SVN, I no longer need to worry about release schedules and pacing. I can now start pushing bug-fix releases as necessary, without affecting the development of the campaign finale.

It is also a turning point in other senses that attentive players will most certainly realize on their own. But in case someone feels disappointed by certain developments: I left enough clues scattered everywhere before, and everything is going according to plan. The bottom line is: if you don’t like the story and you can’t ignore it, don’t play the campaign. And just to be clear, it has never been my intention—at least since I resumed its development in 2011—for it to be eligible for mainline or anything like that.

The changelog for this version follows:

Version 0.8.1:
--------------
* Graphics:
* New or updated unit graphics: most Aragwaith units (wayfarer).
* Scenarios:
* E2S3.1 - Unrest in Raelthyn:
* Updated to use Aragwaith units.
* E2S8 - And then there was Chaos:
* Fixed elves who are initially Loyal getting a duplicate
trait when switching allegiances.
* E3S2.1 - Return to Raelthyn:
* Minor map balancing changes.
* E3S4 - Outpost of Hell (Gateway):
* New scenario.
* E3S5 - Pass of Sorrows (Gathering Storm):
* New scenario.
* Sound effects:
* Added hit and death sounds for Doors.
* Added additional explosion/thunder sounds.
* Added magic glyph sounds.
* Units:
* Balancing:
* Removed marksman special from the Demolisher Drone's ranged attack.
* Increased Sprite's impact resistance from -20% to 0%.
* Increased Fire Faerie's impact resistance from -20% to 0%.
* Increased Dryad's impact resistance from -10% to 0%.
* Increased Aragwaith Seer's HP from 39 to 44.
* Increased Aragwaith Seer's melee attack from 7-2 to 8-2.
* Increased Aragwaith Seer's ranged attack from 8-3 to 10-3.
* Decreased Shaxthal Razorbird's melee attack from 10-1 to 8-1.
* Decreased Shaxthal Thunderbird's melee attack from 13-1 to 10-1.
* Gave Doors a unit icon for the sidebar and the attack dialog.
* Updated Aragwaith units to match the faction from bumbadadabum's
"The Aragwaithi" add-on. This has resulted in the following changes:
* Protection only affects allied L1 and L0 units instead of any allied
lower level unit
* Ancient Banner abilities: +leadership, -protection, -steadfast
* Ancient banner resistances: impact 10% -> 20%
* Ancient banner stats: HP 55 -> 58, MP 4 -> 5
* Ancient banner attacks: sword renamed to scythe
* Archer attacks: melee 6-3 -> 4-3
* Captain abilities: +leadership, -protection, -steadfast
* Captain resistances: blade 20% -> 10%, fire 10% -> 0%, cold 10% -> 0%,
pierce 20% -> 10%
* Captain stats: HP 43 -> 55, MP 4 -> 5
* Captain attacks: spear renamed to glaive, 17-2 -> 18-2; sword renamed to
glaive, 9-4 -> 10-4
* Eagle Master stats: HP 48 -> 45, MP 7 -> 9
* Eagle Master attacks: blade 9-3 -> 10-3, impact 15-2 -> 16-2
* Eagle Rider defense: mountain 60% -> 50%
* Eagle Rider stats: HP 36 -> 34, MP 7 -> 9, cost 21 -> 23
* Eagle Rider attacks: impact 10-2 -> 12-2
* Flagbearer abilities: +leadership, -protection, -steadfast
* Flagbearer resistances: blade 20% -> 10%, fire 10% -> 0%, cold 10% -> 0%,
pierce 20% -> 0%, impact 10% -> 0%
* Flagbearer stats: HP 34 -> 45, MP 4 -> 5
* Flagbearer attacks: spear renamed to glaive, sword renamed to glaive
* Greatbow stats: HP 43 -> 46, MP 5 -> 6
* Greatbow attacks: melee 13-3 -> 10-3
* Guard abilities: +steadfast
* Guard resistances: pierce 20% -> 10%, impact 20% -> 10%, blade 30% -> 10%
* Guard stats: HP 40 -> 54, XP 78 -> 64, cost 27 -> 28
* Guard attacks: melee 12-3 -> 11-3
* Guardian resistances: fire 10% -> 0%, cold 10% -> 0%
* Guardian stats: HP 51 -> 62
* Lancer now has a female variation
* Lancer stats: HP 40 -> 48, cost 38 -> 34
* Longswordsman stats: HP 38 -> 46, MP 5 -> 6, XP 78 -> 88, cost 24 -> 27
* Pikeman resistances: blade 20% -> 10%, impact 10% -> 0%, fire 10% -> 0%,
cold 10% -> 0%
* Pikeman stats: HP 44 -> 50, XP 94 -> 70
* Pikeman attacks: melee 17-2 -> 16-2
* Scout now has a female variation
* Scout stats: HP 31 -> 36, XP 36 -> 40
* Scout attacks: melee 10-2 -> 11-2
* Shield Guard abilities: +protection, +steadfast
* Shield Guard resistances: pierce 30% -> 10%, impact 30% -> 10%, blade
40% -> 10%
* Shield Guard stats: HP 54 -> 66
* Shield Guard attacks: melee 16-3 -> 15-3
* Silver Shield now has a female variation
* Silver Shield stats: HP 54 -> 62, MP 8 -> 9, cost 38 -> 48
* Silver Shield attacks: melee 13-4 -> 12-4
* Slayer stats: HP 45 -> 53, MP 5 -> 6, cost 46 -> 62
* Slayer attacks: melee 12-4 -> 11-4
* Sorcerer renamed to Sorceress, no longer has a male variation
* Spearman resistances: blade 20% -> 0%, pierce 20% -> 10%, impact 10% ->
0%, fire 10% -> 0%, cold 10% -> 0%
* Spearman stats: HP 30 -> 34, XP 38 -> 43
* Spearman attacks: 11-2 -> 12-2
* Strongbow stats: HP 35 -> 38, MP 5 -> 6, XP 80 -> 85, cost 31 -> 38
* Strongbow attacks: melee 9-3 -> 7-3, ranged 8-4 -> 9-4
* Swordsmaster id changed, breaking old saved games with the unit
* Swordsmaster stats: MP 5 -> 6
* Swordsman resistances: blade 10% -> 0%
* Swordsman stats: HP 28 -> 32, XP 32 -> 39, cost 13 -> 14
* Warlock renamed to Witch, no longer has a male variation
* Witch stats: XP 44 -> 54, cost 18 -> 22
* Witch attacks: staff renamed to kick, 6-2 -> 7-1
* Wizard no longer has a male variation
* Wizard attacks: melee 10-2 -> 7-2, ranged 11-3 -> 10-3

After the Storm Episode III: General status update

Since the first three scenarios of After the Storm: Final are already out (0.8.0), I can now talk about my plans for the campaign to ensure we are all on the same page later.

This episode’s final scenario count is preliminarily advertised as twelve in the campaign menu entry, but the number may change as I see fit. More importantly, the final seven scenarios will be published as an atomic batch instead of separately. In fact, it’s very likely they will not enter the SVN repository until they all are finished.

For now, two more scenarios are expected to land in SVN trunk during the upcoming months; Outpost of Hell (E3S4) and Pass of Sorrows (tentative name for E3S5). Anyone who has been paying attention to the story and dialog sequences found in E3 so far will be able to predict the events taking place in E3S4 and E3S5. However, these scenarios (E3S4 in particular) require new units for gameplay and story reasons, and—since I am the only dedicated ‘artist’ working in the campaign—this part may take some time.

The campaign’s overall structure has resulted in decidedly slow storytelling and I don’t regret this design; basically, if you don’t like this, this campaign is not for you. However, things are going to get far more complicated after E3S5 as we approach the conclusion. Getting the finale right—in regards to code, prose, and art together, but especially art—may require a greater amount of energy than anything done before for AtS; hence, once E3S5 is out you may rest assured that unless a miracle occurs, the rest will take a large amount of time to be properly finished and released as After the Storm version 0.9.0.

Writing the finale is not a big deal per se since I’ve always known where the characters are going. The problem is making sure it’s worthwhile to play and read. I’ve always been flexible to plot changes in that regard since I resumed work on E1 last year; after all, this is a game, not a novel. The execution of the plot is also a touchy subject since the matter of the campaign doesn’t really fit neatly in a turn-based strategy game, and compromises must be made.

As usual, art is an ever-present issue as well. The finale requires more new units, props, and terrain graphics. When it comes to unit art, I have always been able to manage by reusing previous assets, making minor modifications and calling it ‘new’; but terrains and props are uncharted lands for me, which is why I fear art will take up most of the production time for the finale. And this is all not taking portraits into account; ideally at this point all major characters from this campaign—as opposed to those introduced in IftU—would have their own portraits, but that just hasn’t happened yet and is unlikely to happen in the near future.

In any case, this has been a very interesting journey. I hope it comes to an end soon and Final can be completed before the end of the year, but I’d not be surprised if it takes longer than that.

After the Storm 0.8.0

Version 0.8.0 is finally out, 16 days after the original deadline. Oh well. At least it didn’t take half a year like the last time I failed to meet a release schedule.

This version will most certainly not be exempt of flaws. It introduces the first three playable scenarios of Episode III (Final), plus two cutscenes; the playable scenarios haven’t been tested very thoroughly by my dedicated QA team or myself, and thus might be full of balancing issues, especially on difficulty levels other than Normal.

I guess I might as well take this opportunity to mention that Normal is, in fact, the only difficulty level I actually test.

There’s also a few bug fixes in this version, but nothing too important other than a voodoo fix for crashes affecting Mac OS X users at the end of Episode II (previously described in the forums). Somehow, I managed to forget to mention this item in the changelog this time; I feel this isn’t the only thing I forgot to do before releasing. Ah well, it probably isn’t my fault seeing as how I have to take care of so many things (cough art cough) for this campaign.

UPDATE: The immediate implication of this fix is that you will need to run Fate (the final cutscene scenario of Episode II, not the whole episode) again if you want Anya’s and Durvan’s stats to carry over to Episode III.

The changelog for this version follows:

Version 0.8.0:
--------------
* Scenarios:
* Mal Hekuba now wears purple TC as he did in IftU.
* E3S0 - Opening (Within):
* New scenario.
* E3S1 - Beyond her Smile (A Light in the Darkness):
* New scenario.
* E3S2 - Return to Raelthyn (Reckoning):
* New scenario.
* E3S3 - Amidst the Ruins of Glamdrol (A Path to Follow):
* New scenario.
* Units:
* Balancing:
* Increased Chaos Hound's recruit cost from 18 to 20.
* Increased Shaxthal Razorbird's recruit cost from 18 to 19.
* Decreased Shaxthal Runner Drone's ranged attack strength from 8-3 to 7-3.
* Fixed invisible Chaos Longbowman and Heavy Longbowman units due to missing
graphics.
* Fixed Elvish Trapper and Elvish Prowler disappearing during animations.
* Fixed NPC bird code deleting the previous on-map unit when moving a
bird to an occupied hex (i.e. worms in E2S9).
* Removed Kri'tan.

Where in the world is After the Storm 0.8.0?

I’ll start by admitting that there was a severe schedule slip again, induced by both personal and technical difficulties. After the Storm: Final scenario 3—which was supposed to be the last scenario introduced by the 0.8.0 update—was only completed a couple of nights ago, despite scenario 2 being completed well before the last week of April.

That said, E3S0 through E3S3 are complete in SVN trunk as of this writing. The problem is that I might still delay 0.8.0 for a while so I can deal with two pending artwork issues (for E3S0 and E3S2, respectively) and perhaps do some additional balancing.

In the meantime, Mac OS X users need to be aware of a certain crash issue affecting the last release currently available, 0.7.4.

I might delay 0.8.0 even more in order to include E3S4 in it. That scenario, however, requires more new artwork that the previous ones combined, and—since I’m not an artist—I can’t guarantee an output rate that would allow for a prompt release this month. I advise patience for the time being.

That is, assuming anyone still cares about this thing!

After the Storm 0.7.4 released, 0.8.0 on the horizon

It’s only been a week since version 0.7.3 of After the Storm came out. As I said some time ago, I’m not announcing minor releases in my blog anymore since they can get on occasion a little too noisy for my taste. However, today’s release, version 0.7.4, is special in a few ways.

Continue reading “After the Storm 0.7.4 released, 0.8.0 on the horizon

Wesnoth add-on tests and sanity checking

Maintaining Wesnoth add-ons of the size of Invasion from the Unknown and After the Storm isn’t a small task by any means. Over the years, I have had to rely on user feedback to detect critical problems in a release, because testing becomes cumbersome and tedious as the scenario count increases.

My usual release procedure simply involves—at least since I acquired the habit of testing before releasing—running the game, starting each episode of the campaign with the medium difficulty level and making sure the WML preprocessor and parser don’t throw any warnings or errors. Before Wesnoth 1.9.x, the preprocessor didn’t abort when encountering a missing macro or file during a brace substitution, so I had to pay close attention to stderr to ensure nothing is wrong.

The WML preprocessor in Wesnoth 1.10 became more strict, aborting on the aforementioned situations. It was also exposed for command-line usage (for testing or debugging) through the -p or --preprocess switch, also explained in detail under PreprocessorRef in the wiki.

At first I thought that wasn’t very useful beyond diagnosing complicated preprocessor issues, but today I realized I can also do this:

This can be easily accomplished with a simple shell script here embedded in the AtS Makefile. The only major shortcoming is that it doesn’t cover every possible problem because it’s merely running the WML preprocessor, which doesn’t consume and produce WML — all it sees is plain text mixed with some preprocessor directives. The task of reading actual WML (which is potentially found in the preprocessor’s output) is left to the WML parser proper, which creates internal objects in memory corresponding to the internal representation of WML handled by Wesnoth (config class objects).

UPDATE: After investigating the issue further with timotei (who exposed this functionality through --preprocess in the first place), it turns out the preprocessor output with --preprocess is indeed parsed — the real problem is that the preprocessor and parser use different logging facilities, and the former doesn’t even throw errors directly, so a preprocessor-only failure will make the game exit successfully (exit status of zero), while a parser error (potentially induced by a previous preprocessor error) causes a more appropriate non-zero exit status. This and other jarring inconsistencies make add-on test automation rather difficult, to say the least, so things have been simplified in the Makefile as a result.

It would be nice to be able to run the parser unit on the --preprocess output to detect syntax issues like missing end tags or unterminated string literals in the future, as part of a fully automated test suite. For now, it seems I’ll have to stick to my primitive and inelegant manual method before making new AtS releases, plus the unbelievably clumsy wmllint.

After the Storm 0.7.0: Mission Complete!

After the Storm’s development began in 2008, some time after the completion of Invasion from the Unknown. Since then, the campaign’s development was repeatedly and severely hindered by multiple planning issues, partially caused by (borderline pathological) perfectionism on my part; plus many other personal problems.

During most of 2011, development was unofficially halted, with a half-baked E1S9.2 lingering around in the Wesnoth-UMC-Dev SVN trunk for months. Version 0.4.0 was released near the end of September, and from that point onwards, I decided to not stop working on the campaign ever again, until it reached completion.

That day, sadly, arrived sooner than I expected. Version 0.7.0 is here, presenting a complete Episode II with 12 scenarios, adding E2S8 through E2S12 to the line-up found in version 0.6.1.

Continue reading “After the Storm 0.7.0: Mission Complete!

Wow

commit 9f6bd04ec405d3987a513ae490fcfef7fad6a034
Author: shikadiqueen <shikadiqueen@87cc232e-6748-0410-ac04-a3fa75566414>
Date: Mon Jan 16 03:22:28 2012 +0000
AtS E2S12: completed epilogue scenario
This makes After the Storm 100% complete in terms of scenario count.
git-svn-id: https://wesnoth-umc-dev.svn.sourceforge.net/svnroot/wesnoth-umc-dev/trunk/After_the_Storm@12917 87cc232e-6748-0410-ac04-a3fa75566414

I never thought this day would come.

About After the Storm 0.7.0...

Before anyone asks, yes, I have been working on AtS 0.7.0 all this time since the last release (0.6.1). It will include the last five scenarios of Episode II, that is, E2S8, E2S9, E2S10, E2S11 and E2S12.

Determining what the colors stand for is left as a proposed exercise for the reader.

2011 Wrap-up

At long last, 2011 is coming to an end. In a few hours, we’ll have to dump our old calendars to replace them with new ones bearing the number 2012 in a big font size. Then the people who believe 2012 will be the end of life on Earth will begin to panic as we approach December again. Those nutcases.

This was a relatively calm and monotone year in what pertains to my personal life, so I’m not going to delve into details in this opportunity. However, I made some resolutions last New Year and it might be worth it to review them and check why I didn’t accomplish all of my goals.

  • Learning Japanese: I got severely sidetracked after a while. I may still try again in the future, just because.
  • Losing weight: I may have gained some a lot of weight during the course of the year. Oops. I did, however, stop drinking coffee, because my stomach started to reject (read: try to vomit) it after a while for some reason.
  • Wesnoth RCX: Still halted. Frankly, there doesn’t seem to be enough interest amongst the Wesnoth community nowadays for this kind of tool, and for my own purposes Wesnoth-TC serves well as it is.
  • Relearning C♯: Also sidetracked. It doesn’t seem worth it, in hindsight.
  • Learning Lua: Accomplished according to certain definitions. I haven’t really learned more about the language than necessary, but I have indeed committed some Lua code to mainline Wesnoth, and several tasks of varying difficulty are accomplished with custom Lua-backed WML tags in After the Storm and Invasion from the Unknown as of this writing.
  • Rei 2 IRC Bot: Stalled, due to lack of interest. There are also seem to be a few Irssi-specific problems with Perl 5.14, which is in the operating system I’m using at the moment, Debian wheezy.
  • Website: Accomplished. In fact, in a few hours I’ll deploy a few minor changes to the code to optimize the blog template processing a bit.

One particular resolution deserves separate analysis, though:

Then there’s Wesnoth. I intend to finish the Second Act™ of After the Storm Episode I as soon as I may, even through the means of placeholders — I’m willing to do anything to rescue AtS out of Development Hell before the end of 2011.

I didn’t resort to unlawful methods to accomplish this goal as I originally feared, but it still happened! Granted, rather late.

During September and October I had a rather unexpected creativity and productivity spurt which culminated with the release of AtS version 0.5.0 with Episode I: Fear complete with 13 scenarios. More recently in December, we reached version 0.6.1 with 7 complete scenarios for Episode II: Fate. As of this writing, E2S8 and E2S9 are also complete in SVN trunk in Wesnoth-UMC-Dev, although it’s been suggested that the latter could use some spicing up. E2S10 is a work in progress since yesterday, and part of E2S12 was written already back in October, just not committed.

Thus, it could be said that after many difficulties, After the Storm broke out of Development Hell. Whether I’ll consider Episode III: Final (expected to be shorter, around 6 scenarios) part of the required line-up for version 1.0.0 is a matter I haven’t settled yet.

Once After the Storm is finished, I plan to take a rather long break from campaign development. That isn’t to say I’m out of ideas, since there is one character I want to explore in further detail in her own campaign. However, I may have my Wesnoth time taken up by mainline work after 1.10 is released depending on the situation then, since there’s a rather large technology gap in Wesnoth that needs to be solved.

Other than that, I haven’t really decided on any resolutions for 2012, so I’ll leave you with the one resolution of the moment:

...
screen #0:
dimensions: 1280x800 pixels (338x211 millimeters)
resolution: 96x96 dots per inch
...

(This information is utterly wrong. xdpyinfo reported the same screen dimensions on bluecore last year in spite of its screen being glaringly larger than reicore’s by a few milimeters.)