Wesnoth 1.10 RC 1 released, and some rationale behind the accounts purge

Wesnoth 1.10 RC 1 was released. Go test it, kids. You really must help us.

Besides that, I said in my previous post that I’d be releasing a separate announcement for the Crazy MP People. I wasn’t joking.

It might seem weird to perform such a purge of old forum accounts, and it might even confuse some MP users. A few times I’ve had to provide support to players who, despite having gone through the process of registering a new account—requiring them to visit the forums, no less—they had not fully realized that the forum and MP servers share the same user accounts database!

The truth is, the purge has become—in part—a marketing ploy I devised in order to have people try the last 1.9.x version before 1.10 becomes the current stable. If this angers you because you have been avoiding the new series like the plague, then think again. Give 1.10 an opportunity, because 1.8 is going the way of the dodo. 1.10 is much better, has better features and terrains, and even if you dislike some of the changes (i.e. the feral trait), I’m sure you will eventually find it worth of your time once you grow past the They Changed it, now it Sucks stage.

Regardless of that, the plan of purging unused accounts came to me much earlier while dealing with a major flaw in the wesnothd (the MP server software) forum user handler code. It seemed worth it to try to keep the database tidy by removing old, entirely unused cruft from it, and unconfirmed, 0-post accounts that have never been on the MP server since the introduction of forum accounts integration count as overly unused cruft.

A purge like this isn’t a new thing either. The previous forum administrator performed a larger purge of unused accounts right when the aforementioned integration was introduced, but it was never announced or discussed anywhere.

Purge.

Wesnoth 1.10 Release Candidate 1, oh my!

Hi! I’m shadowmaster. You might remember me from such type of campaigns as Invasion from the Unknown, After the Storm and Flesh and Steel (tentative name). As some of you may have heard, Wesnoth 1.10 RC 1 has been tagged in the mainline Subversion repository today, marking the start of the final stretch before the final (but by no means definitive) release of Wesnoth 1.10, the new stable series for this year.

If you are interested in the changelogs, they can be found at the following two locations:

In general, after a development (odd Y number in X.Y.Z) release is tagged in SVN, 24 hours must pass before it is announced, in case the primary packagers (Pandora, Windows, Mac OS X and Debian) detect critical bugs that could require immediate fixing, and to give them time to catch up since not all of them have a lot of time in their hands or enough resources — at one point, a packager was constantly running out of hard disk space thanks to Wesnoth’s sheer volume.

If you are tech-savvy enough to be able to determine which package is the one that corresponds to your platform—or you just prefer to compile from source—you can skip the wait for the announcement and head directly to the SF.net project files and locate your download. For example, these are the Wesnoth 1.10 RC 1 files; at first there’s only the source code tarball, but more files will appear as the primary packagers finish their work. Of course, during the first few hours, not all SF.net mirrors will be able to provide the files. Again, Wesnoth is very large and takes a while to transfer over the net.

(Wesnoth 1.10 RC 1 internally calls itself 1.9.14. This is intentional.)

With the first Release Candidate for 1.10 tagged and later announced, all commits in SVN trunk from now on will be only fixes for bugs reported in the bug tracker following our instructions, and translation updates, until 1.10.0 is ready. If too many major and complicated bugs come up, 1.10 RC 2 will be released before 1.10, but that seems unlikely right now since the release manager has a plan.

I have an announcement to make in the forums tomorrow that is strongly related to Wesnoth 1.10 and may upset the Crazy MP People a bit since I’ll be encouraging forcing them to test 1.10 RC 1 like the Crazy MP People they are. We shall see.

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!

WML is like XML, all right...

Since people keep saying WML is like XML, I decided to provide an example of what a standard WML snippet would look like if it had to be translated to XML.

WML:

[event]
name=last breath
[filter]
id=shadowm
[/filter]
[message]
speaker=shadowm
message= _ "NO!"
[/message]
[/event]

XML:

<event name="last breath">
<filter id="shadowm"/>
<message speaker="shadowm" message:gettext="NO!"/>
</event>

My knowledge of XML doesn’t go far enough, but I don’t think I’ve ever heard of translatable strings being an integral part of the syntax, hence the funky-looking XML attribute name for event.message.message above.

This example only covers the basic WML syntax (i.e. no preprocessor directives, +nodes or embedded Lua) on purpose.

Miscellaneous Wesnoth loading tricks on Linux

People using development versions or SVN trunk might find it excessively cumbersome to install Wesnoth’s binaries and data files whenever a new version is released (or commit made, for trunk). Since long ago (probably 1.3.x) Wesnoth supports overriding the data directory by providing its path as the last command line argument and, since 1.9.0, it’s also possible to use to use the --data-dir switch to avoid ambiguity with other switches taking path arguments.

Since version 1.5.4 (more specifically, r28934), Wesnoth will also try to locate a usable data directory by itself, by trying to locate data/_main.cfg in the parent dir of the executable file, which is resolved in Linux by making use of the /proc/self/exe symbolic link.

Until today, it had not occurred to me that this makes it possible to link to the Wesnoth binary from any directory, not just one containing the aforementioned WML file. The /proc/self/exe link points towards the final target if the process image is a symbolic link, so you can have a layout like this work as desired provided ~/bin is in PATH:

shadowm@reicore:~$ ls -l bin/wesnoth*
lrwxrwxrwx 1 shadowm shadowm 33 Dec 10 21:09 bin/wesnoth ->; /home/shadowm/src/wesnoth/wesnoth
lrwxrwxrwx 1 shadowm shadowm 37 Dec 10 21:10 bin/wesnoth-1.8 -> /home/shadowm/src/wesnoth-1.8/wesnoth
lrwxrwxrwx 1 shadowm shadowm 40 Dec 10 21:10 bin/wesnoth-1.9.12 -> /home/shadowm/src/wesnoth-1.9.12/wesnoth

The Wesnoth 1.8 binary in this case is compiled with the scons prefsdir option set to .wesnoth-1.8 so conflicts with the development versions can’t occur — those use the custom .wesnoth-1.9 dir instead. Nowadays things seem to be a little more complicated in that regard, as seemingly the game will opt for an XDG layout if there’s no compiled-in preferences dir path on non-Mac, non-Windows builds. According to the EditingWesnoth article on the wiki, 1.8 builds default to .wesnoth1.8. Why the default doesn’t include a hyphen is beyond me.

With things set up like this, I can start Wesnoth from any directory without having to provide my own command line arguments. Of course, you could say this is a rather archaic approach as it’s also possible to create desktop/panel shortcuts instead, depending on the desktop environment. Since I spend more time looking at a terminal emulator with my hands on the keyboard than staring at the wallpaper and desktop icons with the mouse in hand, my own approach turns out to be more efficient for my purposes.

Finally, there’s an even less known feature introduced in r31261 (before 1.5.7) that also makes it possible to omit the --editor or -e switch to start the map editor if the game executable file contains “editor” in its name. This was added as a replacement for the old wesnoth_editor binary that provided the map editor before it was replaced with the built-in version (“editor2”) as part of GSoC 2008.

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.

GUI2: Editor Settings, Starting Positions and Uninstall Add-ons

After completing the first episode of After the Storm, a short vacation was a logical option so I could return to work later with fresh ideas and more energy. By ‘vacation’ I don’t mean a traditional Wesbreak as most people do, though — quite the contrary, in fact.

For a long time I’ve been bothered by the haphazard-looking design of the Editor Settings dialog. This (already GUI2) dialog’s main focus is a bunch of lighting options intended for map or terrain authors to test what their creations look like under different Time of Day lighting presents, or even custom lighting, which is also useful for campaign designers trying to come up with an atmospheric feel within Wesnoth’s rendering engine limitations.

Before

I don’t claim to be a UI design expert — I’m fairly certain I’m not — but I feel my vision of the dialog is better than the original author’s, and for this reason I recently committed to trunk these changes along with a couple of fixes for related long-standing bugs that were definitely not introduced by me. I think. I hope.

I am not keen on having Title Case on checkboxes, either, but for some reason the wiki says it’s what we should use, so I’m going to stick to that for 1.10 as it’s already used in most places anyway. I hope we can clear that up during the 1.11.x development cycle since even GNOME’s Human Interface Guidelines recommend sentence case for such elements.

(Note to self: rephrase the MDI option label again since “allow having” doesn’t sound proper at all.)

The item selection menu triggered by the Starting Position tool in the editor was a generic GUI1 dialog, until now. I decided to tackle this conversion task and add a feature in the process: existing starting locations are shown in the second column of the player list, in the form of map coordinates. This is not too helpful since we already had keyboard shortcuts to reach starting locations in the map editor (1-9 number keys), but in my opinion looks nice. The giant help tip in the dialog description had to go though, but don’t worry, for the tooltip on the editor palette already provided the exact same information in a more consistent fashion with regard to the other editing tools.

And finally, something more useful for the large majority of the userbase: removing multiple add-ons at once without having to return to the Uninstall Add-ons menu. I have not committed this to trunk yet, though, and I’m not even sure I’ll be able to merge it before the feature freeze in preparation for the final lap towards 1.10 comes into effect.

After the Storm 0.5.0

The idea of continuing and developing the Invasion from the Unknown storyline further was in my mind from the beginning, and I apparently started to work on a sequel on May 2008, if the Wesnoth-UMC-Dev registry is anything to go by.

After the Storm’s development has been repeatedly impacted and put at risk by various “real life” issues.

Earlier this year, I decided to go back to work on the campaign after a long hiatus — so long I don’t remember how long anymore — but my attempt ultimately failed anyway. I promised a delivery, but the delivery did not happen.

Until I rediscovered the fun in video games. Then, magic ensued.

I said I would try to finish the first episode of the campaign before December. I am glad to say that mission has just been accomplished. After the Storm 0.5.0 is out in the Wesnoth 1.9.x add-ons server, with the first episode (that’s 13 scenarios) complete!

For those who’d rather read a terse piece of text with no emotive speech in it, the changelog for this version follows:

Version 0.5.0:
--------------
* Scenarios:
* 09 - The Triad (part 3):
* Fixed problems with the final cutscene on Wesnoth 1.9.8 and earlier.
* 11 - Return to Wesmere (part 2):
* New scenario.
* Completed episode I.
* Units:
* Removed Skirmisher ability from Elynia.
* Spawners have a small chance of deactivating themselves after spawning a
unit.

I have tried to make sure AtS remains playable on Wesnoth 1.9.8, but my primary development target is still 1.9.9 and support for 1.9.5, 1.9.6 and 1.9.7 is mainly theoretical at the moment. If you encounter any “Invalid WML errors” or such, and you are using Wesnoth 1.9.7 or earlier, try with Wesnoth 1.9.8 or 1.9.9 instead if you can, and give me some feedback in the forum thread so I can address any such issues as soon as I may.

I take this opportunity to remind you that you can also find and follow me on Twitter as @irydacea or join my personal channel ##shadowm in the freenode IRC network.

Have a lot of fun!

Wesnoth.org DNS issues

Wesnoth.org appears to have DNS issues at the moment, resulting in the site’s address being impossible to resolve to a numeric address (IP) for most people. We are doing everything that’s possible at the moment to restore it.

UPDATE: Apparently, it’s been solved already. However, the new records could still take some time for some people to have an effect due to DNS caching.

UPDATE 2: My own evidence indicates that it’s not solved yet.

UPDATE 3 (Oct. 3rd): It’s solved now. Some DNS servers could still claim wesnoth.org doesn’t exist, so just give them a few more hours.

If you trust me (since I’m the forum administrator and all), you can follow these simple instructions to fix your access to Wesnoth.org’s services in the meantime. If you don’t feel comfortable editing system files or don’t have admin access, you can try connecting directly to Wesnoth.org’s current IP, 65.18.193.12, but this will not work correctly with the wiki and forums which use the wiki. and forums. subdomains.

Do note that what I describe should be considered a temporary workaround. If Wesnoth.org’s IP changes in the future, you’ll need to remove any hosts file entries you added.

Note: make sure to backup your /etc/hosts file first in case you accidentally delete its previous contents, which could cause some applications to behave incorrectly.

  • Edit the file /etc/hosts with a plain text editor such as gnome-editor, Kwrite/Kate, vi/vim, Emacs, and such.
  • Add the following line to it and save:
    65.18.193.12 wesnoth.org www.wesnoth.org forums.wesnoth.org wiki.wesnoth.org add-ons.wesnoth.org server.wesnoth.org coc.wesnoth.org replays.wesnoth.org bugs.wesnoth.org
  • Done!

An alternative is just issuing the following command as administrator. Notice that it uses >> instead of the usual > in order to append rather than replace the file!

# echo "65.18.193.12 wesnoth.org www.wesnoth.org forums.wesnoth.org wiki.wesnoth.org add-ons.wesnoth.org server.wesnoth.org coc.wesnoth.org replays.wesnoth.org bugs.wesnoth.org" >> /etc/hosts
  • Login with an account with administrator access.
  • Edit or create the file C:\WINDOWS\System32\Drivers\etc\hosts with a plain text editor such as Notepad (replace C:\WINDOWS with the correct installation path of your OS if necessary.
  • Add the following line to it and save:
    65.18.193.12 wesnoth.org www.wesnoth.org forums.wesnoth.org wiki.wesnoth.org add-ons.wesnoth.org server.wesnoth.org coc.wesnoth.org replays.wesnoth.org bugs.wesnoth.org
  • Done!

Unfortunately, I have no idea about Mac OS X since I’ve never had an Apple computer. If anyone knows more than I do, feel free to post a comment explaining the steps.