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.

With great code comes great responsibility

I think I rarely discuss the more subjective/emotional aspects of working with the crazy folks at the Battle for Wesnoth Project, so this might be a good opportunity to do so given we are currently on the threshold of the first release in the new stable series, 1.10.

Since a while after joining the project, I’ve been wanting to make deeper changes to the add-ons server software (campaignd, by legacy). Some of those desired changes would benefit me directly as a user-made add-ons maintainer myself (previously Invasion from the Unknown, now After the Storm); other changes simply seem very convenient to have, such as some kind of authentication support and the ability to ban people without dirty system admin hacks.

Yesterday, I unveiled aspects of my not-so-modest proposal to replace campaignd with new code. You can find the pastebin link within my post to the developers mailing list.

Even though I have some of the basic ideas and I’m still collecting previous information (such as Mordante’s proposal), I am terribly hesitant to proceed with the larger project because it will take time and dedication I cannot really promise at this point. But why?

Continue reading “With great code comes great responsibility

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

After the Storm 0.6.1

A little more than two weeks after the release of version 0.6.0, After the Storm 0.6.1 is out! And just in time for Christmas Eve in Chile, too.

The last couple of weeks have been particularly productive, as I’ve continued to work on AtS Episode II with the help of my loyal assistants vultraz and Espreon, who have been a valuable help providing early feedback, play-testing, and proofreading. In order to keep people busy for a while, this release includes scenarios 4 through 7, and one cutscene-only scenario, adding up to five new scenarios in this version.

Version 0.6.1 was scheduled for this date immediately after 0.6.0’s release, but it was only intended to contain the finished scenario 4, which landed on SVN trunk on December 15th. Since I was left with plenty of time before the original deadline, I decided to continue working on as many scenarios as possible. E2S7 landed on the 22nd, 22:01 UTC. I would have continued working on E2S8 immediately, but since it requires one new unit baseframe, I decided to postpone it and aim for introducing all the final four scenarios in version 0.7.0 when it’s done (most likely by early to mid-January 2012).

For this version, I decided to increase the Wesnoth version requirement from 1.9.7 to 1.9.10, which was already recommended in the campaign description. While there’s no WML code or maps enforcing the version requirement yet, I’ll simply ignore bug reports against AtS 0.6.1 on 1.9.9 and earlier versions since the engine behavior changed a lot between 1.9.8 and 1.9.10 in some areas — it’s simply impossible to keep supporting old development versions now that mainline is releasing 1.9.10 and later as betas for the upcoming stable 1.10. Besides, as a mainline developer I must also encourage people to test the game and report bugs before 1.10!

Should this inconvenience you, I may be able to provide support on a case-by-case basis given a good reason to do so. My general recommendation if your Internet service isn’t good enough to download the bi-weekly Wesnoth 1.10 betas is to just download the latest one and keep it around until 1.10 final is released. By the looks of things, odds are this won’t happen until January.

The changelog for this version of the campaign is unusually long, even though I deliberately omitted some specific additions in the art department — six new baseframes, all made by myself and awaiting revisions in the near future — and unit WML. Since those are tied to the new scenarios, I decided to not spoil it in the changelog.

Version 0.6.1:
--------------
* Increased minimum Wesnoth version requirement from 1.9.7 to 1.9.10.
* Graphics:
* New or updated unit graphics: Sylvan Warden (chained).
* Scenarios:
* Various prose grammar fixes.
* E1S3 - Civil War in the North:
* Removed deprecated flower terrain.
* E1S5 - Bay of Tirigaz:
* Removed deprecated flower terrain.
* E1S6.2 - Elves of a Different Land:
* Fixed a dialog line wrapped in double parentheses.
* E1S9.1 - The Triad (part 1):
* Don't set Elynia's initial status to slowed.
* Fixed animation glitches.
* E1S9.3 - The Triad (part 3):
* Fixed animation glitches.
* E2S2 - The Heart Forest:
* Increased turn limit.
* Reduced initial gold amounts for enemy sides.
* Set initial gold amount for the player.
* E2S3.2 - Revelations:
* Corrected unit facings.
* E2S4 - Shifting Allegiances:
* New scenario.
* E2S5 - The Eastern Front:
* New scenario.
* E2S5 C - The Eastern Front cutscene:
* New scenario.
* E2S6 - The Voyage Home:
* New scenario.
* E2S7 - Proximus:
* New scenario.
* Units:
* Increased Dryad's HP from 43 to 46.
* Increased Forest Spirit's HP from 37 to 40.
* Simplified Sylvan Warden's animations WML, making her less of a resource
hog.
* Removed Kri'tan.

Have fun, and happy holidays!

After the Storm 0.6.0

After the Storm 0.6.0 has just been released, despite the original deadline I set for myself just a few days ago being Christmas Eve. As a consequence, that day will be the deadline for AtS version 0.6.1 instead, which should include a working scenario E2S4 (i.e. fourth scenario of the second episode). Of course, if a major bug arises in the meantime, that tentative version number will have to change.

Apparently, I work faster when I feel the need to deliver within a specific time frame. In this case, the need stems from fear of public humiliation. Probably.

The changelog for this version follows:

Version 0.6.0:
--------------
* Increased minimum Wesnoth version requirement from 1.9.5 to 1.9.7.
* Scenarios:
* Reworked character recall logic.
* Episode 2 (Fate):
* Scenarios 1 and 2 completed.
* Scenario 3 completed, consisting of two cutscenes.
* Units:
* Reduced Sprite's required XP to advance from 70 to 40.
* Reduced Fire Faerie's required XP to advance from 100 to 70.

Regarding the version requirement increase, it’s not so much because of changes in WML syntax but rather because of a new terrain added in 1.9.7 that’s used in E2S2.