It’s been quite a while since I last properly talked about The Battle for Wesnoth in here — years, really. Some people know that at some point in 2016 I mostly stopped contributing to the project, aside from some server-side stuff such as maintaining the multiplayer games server (wesnothd) and the add-on content server (campaignd).

Since then, a lot of people new to Wesnoth, as well as people not familiarized with Wesnoth, have heard about me, and they don’t really know what it is I’ve actually done over the years. So, I thought it would be a good idea to write about my involvement with this game since I happen to feel like writing walls of text stuff right now.

Oh hi there. Long time no see. Apparently I haven’t posted since February 2017, huh. A lot of things have happened in the meantime, it turns out. Some of those things are to blame for my general inactivity elsewhere, but when it comes to this blog I just can’t seem to come up with anything to say worthy of my trademark text walls, at least not ever since I joined Twitter several years ago— wait, wasn’t that in 2010? Time sure flies. I feel old. Okay, let’s face it, I am old.

“Iris” version 1.1.0 as of earlier today

In addition to it having been a while since my last post in here, it has also been a while since the last time I gave the website an overhaul, for what little use it sees nowadays. Because of that, plus some of my experiences designing the new website theme for The Battle for Wesnoth last year, I decided to try to modernize my own a little bit so it looks more in tune with my current practices. I also decided to spruce things up with a new colour scheme, like last time, taking things in a different direction to what I’m used to.

An attentive reader who’s been around for long enough might be able to tell that the “Iris” design last year did undergo a slight revision incorporating Font Awesome in order to make icons not look awful on high-DPI screens. This was a natural conclusion of my work designing and testing the Wesnoth.org theme on devices with higher pixel density. Plus it was precisely last year that I actually caved in and got a smartphone given to me by a relative, further highlighting all the inconveniences of designing things on/for 96 DPI these days. Other than that, though, the design remained mostly unchanged from what I made in 2014.

“Iris” version 1.2.0, aptly codenamed Amethyst for reasons that should be blatantly obvious, is mostly the same as before under the hood, but on the surface it hopefully looks shinier and more elegant and modern. Even though I am not using the site much right now like I mentioned above, I have a faint hope that the new look will motivate me to post more again.

Since there wasn’t a New Year post last year, or even the year before that, or uh... the year before that as well... actually I guess there haven’t been New Year posts in here since January 1st 2013. Oops. Anyway, I guess it’s time for a short summary of what I have been up to in recent times. Let’s see...

On the morning of the 20th of January, my desktop decided to die for no obvious reason at all.

Unlike the Windows 10-based laptop that got bricked only about a couple of weeks before, Nanacore simply decided to get stuck in an eternal reboot loop switching back and forth between the updated BIOS (read: UEFI) and the backup BIOS (UEFI) images. The backup BIOS wouldn’t proceed any further than the POST splash screen because of a known compatibility issue with NVIDIA’s more recent cards (GeForce 9XX and above I believe), which is the very reason why I had to update the main BIOS last year when I replaced my old potato card. I spent about two hours removing the GPU, storage devices, and memory modules trying to rule out any potentially faulty peripherals, to no avail. Once the GPU was out of the way, the backup BIOS (UEFI) would attempt to display an error message explaining why it had kicked in, but the attempt would make it immediately crash and reboot — hence I decided “eternal” was an appropriate qualifier for the situation. I reconnected everything that there was to reconnect other than the main motherboard power plug, which was more or less glued to it. I figured trying to pry it off with more force would risk breaking the board, and it looked completely fine to me anyway. There weren’t any burn marks, bent or popped capacitors, or any other visible signs of physical damage whatsoever.

So that’s one chapter of my computing life that has now come to an abrupt and tragic end at the beginning of what’s already proving to be a quite difficult year for me, for reasons I will not discuss here.

R.I.P. Nanacore (October 25th 2012–January 20th 2017)

Suffice to say, I had to spend approximately one week with Reicore, who... isn’t really in the best shape anymore, with some keys falling off, heat issues, and insufficient processing power for pretty much any software or website written in the past 5 years. At least I was pleasantly surprised by the fact that its old Intel GM45 graphics processor can somehow drive two 1920x1080 screens without dying — one on HDMI and the other on VGA, though, because the laptop doesn’t have any other display connectors.

Fortunately, I got someone to help me cover the full costs of purchasing a new desktop, and I was also able to keep my old GPU and disk drives. This latter point leads me to suspect that it wasn’t the PSU failing (thankfully) but rather the motherboard and/or CPU dying from old age. Seeing as how this has been an extremely hot summer so far, and I had been dealing with computer cooling issues all throughout the second half of 2016 because I couldn’t make up my mind about purchasing a new case and CPU+motherboard combo, it was all a foregone conclusion. There is a lesson to be learned from this debacle, I am fairly sure.

I had been contemplating building Hanacore (“flower”, following the Japanese-based naming convention I adopted for Reicore onwards) around October last year, but I postponed making a decision until Q2 2017. The reason for this is that I expected Intel’s Kaby Lake desktop processors to begin shipping worldwide around that time, based on what little I could remember from the Ivy Bridge release cycle. However, it turns out that Intel released them on January 3rd instead, so by the time Nana died, a few Intel Core i7-7700Ks were already in stock here at local retailers in Chile. Yep, only the super-expensive unlocked CPUs. For whatever reason, retailers here don’t seem to ever have the locked counterparts in stock for very long anymore, starting with the Haswell line-up. But whatever, it’s not my money I was about to spend, so I thought I might as well take a YOLO approach for once. The alternative would’ve been to spend months tweeting at less than 20 frames per second. Or spend my own money on a laptop that wouldn’t satisfy all my requirements.

In particular, ever since I switched to a dual-screen setup at the start of December last year, I don’t think I could ever go back to working on a single screen. Most laptops these days seem to have but a single HDMI port. Not to mention that mobile GPUs are obviously inferior to desktops — watching my hard-earned GTX 1060 gathering dirt on a shelf for months would have been devastating for my morale.

Name

Year

EOL

CPU

RAM

HDD

GPU

OS

Hanacore

2017

―

Intel Core i7-7700K4.2 GHz HT quad core(Kaby Lake)

32 GiB

512 GB SSD3 TB HDD2 TB HDD

NVIDIA GeForce GTX 1060 6 GiB

Debian testing 2017-01-28 (Stretch)Windows 10 Home

Nanacore

2012

2017

Intel Core i7-37703.4 GHz HT quad core(Ivy Bridge)

16 GiB

512 GB SSD2 TB HDD

NVIDIA GeForce GTX 1060 6 GiB

Debian testing 2017-01-19 (Stretch)Windows 10 Home

Derpycore

???

2017

Intel Core i7-3537U2.0 GHz HT dual core(Ivy Bridge)

4 GiB

1 TB SSHD

NVIDIA GeForce GT 735M

Windows 10 Home Single Language

Reicore

2010

―

Intel Pentium T43002.1 GHz dual core(Penryn)

4 GiB

500 GB

Intel GM45

Debian testing (Wheezy)

Bluecore

2008

―

AMD Athlon 64 X2 QL-622 GHz dual core

4 GiB

250 GB

ATI Radeon HD 3200

Debian testing 2012-10-22 (Wheezy)Windows Vista SP1

Greycore

2007

2008

AMD Turion 64 MK-382 GHz

??? GiB

80 GB

ATI Radeon Xpress 1100

Debian GNU/Linux 5.0 (Lenny)Windows Vista

Blackcore

2006

2016

Intel Pentium 42.6 GHz HT(Prescott)

1 GiB

160 GB

VIA garbage

Windows XP SP3Debian GNU/Linux 6.0 (Squeeze)

Unnamed Desktop #2

2002

2006

Intel Celeron1.3 GHz(‘Celeron-S’)

256 MiB

40 GB

Intel 810E

openSUSE 10.0Windows XP SP2

Unnamed Desktop #1

1997

2016

Intel Pentium w/MMX166 MHz(P55C)

32 MiB

1.2 GB

S3 Trio64V+

Windows 95 OSR 2.0

Anyway, long story short, I picked my new desktop from the store on the 28th, it’s been working well so far, and it’s great and this time I picked all components other than the CPU cooler by myself.

The motherboard is an MSI Z170A Gaming M7 — a Skylake chipset, which means it required a firmware update (done during assembly at the store) to be able to drive the Kaby Lake CPU. There weren’t any Kaby Lake motherboards available with onboard sound controllers that were known to work correctly on Linux, unfortunately, and from a quick glance at Wikipedia I couldn’t really find any relevant differences between the Z170 and Z270 other than increased PCI Express bandwidth for use by M.2 SSDs (which I don’t have) and Intel’s proprietary alternative (which I don’t intend to have either). But most importantly, I wanted to avoid the sound controller fiasco I had with Nana where its CA0132 controller never had proper Linux drivers published by Creative — only a very locked-down version for a Chromebook laptop with pin and DSP effect configurations that wouldn’t work correctly with anything else. With that out of the way, I am now able to use any speakers and headphones I want without worrying about them not being recognized or not getting amplified. I’m really looking forward to replacing my 10 years old speakers.

Other than a couple of isolated USB-related incidents that I couldn’t properly attribute to anything (and an apparent compatibility issue between a 3G modem driver and NVIDIA’s stack of all things) I’ve not had any problems with Debian stretch and Linux 4.9 thus far. I also managed to reinstall Windows 10 clean a couple of nights ago. The old 2 TB HDD now holds local backups which I intend to generate in a more frequent, automated basis (compared to my more-or-less bi-weekly external backups); the new 3 TB HDD holds my Linux home dir and Windows install, and the old SSD continues to hold the root filesystem and games and some parts of my user profile (~/.config, ~/.local, and ~/.wine).

By the way, I didn’t even need to reinstall anything at all with Debian — I just configured it to use a stock 4.9 kernel instead of the custom configuration I used for Nana. On the Windows side of things, there were some complications because of a thing I did two days before Nana died that rendered it unbootable, but once I got it sorted out, it would strangely boot just fine. I still decided to do a clean install just to safely purge all of Nana’s system-specific drivers (chipset, network, etc.) and start fresh with a larger partition on the new 3 TB drive — around 400 GB instead of 96 GB.

Things have been running so smoothly thus far, in fact, that the CPU averages 35 °C while idle in summer, whereas Nana would average around 46 °C (38 °C in winter). The case and cooler fans produce far less noise than Nana’s too, even under heavy workloads. That said, the comparison might be a little unfair — Nana’s CPU was cooled by a stock fan, and Hana’s is handled by an all-in-one water cooler. Note that I haven’t tried overclocking yet, and in all likelihood, never will.

So yeah. New hardware. Cool.

Oh, and Derpycore from the table above is the bricked Windows 10 (originally 8) laptop I alluded to at the beginning of this post. It was a Sony Vaio that belonged to someone else (who wasn’t using it) which I borrowed last year when I needed a mobile computing device, since Reicore hasn’t been fit for that purpose for about 4 years with its decayed battery and broken and glitchy keyboard and touchpad. After months of semi-regular use for Windows-specific tasks for which a VM wouldn’t suffice, one day last month it just decided to never power up again. No beeping, no blinking LEDs, nada. Kind of like Nanacore afterwards, it died in its sleep after a whole session without issues, the sole difference being that Derpy wouldn’t even try to wake up ever again. Just silent icy death. I figure that’s what i get for not giving it a more adequate name. I should probably make sure to give my next laptop a regal-sounding name so it will last me forever.

EDIT:

Blackcore died last year due to a capacitor malfunction when I was inspecting it for donating it to somebody else. Probably. I am not really sure what happened there, but after several attempts I at least managed to boot it up long enough to clone its (old-style PATA) hard disk and grab what little of value I could find in it. Afterwards it would power up with its fans at full speed and never reach POST. That makes three computer deaths in under 12 months.

Finally, Unnamed Desktop #1 was last spotted outside my house circa August last year in a really poor state, accumulating rust and moss, so I’m fairly positive it’s now legally dead. I feel its loss more than Nanacore, strangely enough. It’s probably because it was my first proper computer ever. Does it count as a fourth death? I’m not sure.

Nearly 11 years ago, I was checking out some of the free and open-source games included with the openSUSE distribution when I came across a fantasy turn-based strategy game called Wesnoth. I vaguely remember taking a quick look at it and dismissing it for some reason. It wasn’t until an OS update later the same year that I would actually give version 0.9.5 a proper try. Immediately upon doing so, I was enthralled by the game’s sheer quality and its surprisingly accessible gameplay.

During the first quarter of 2006, I started toying around with WML and the map editor, and put together three or four semi-playable campaigns rife with awful prose and flat characters just for fun. At the time, the possibility of publishing my content online for others to play it didn’t even cross my mind — and frankly, it’s for the best that it didn’t. Much later that year, though, I decided to join the forums and actively interact with the community. The next year I started to seriously think about giving back to this community, as a way of saying “thank you” to the countless people — developers, artists, musicians, translators, and players — who invested their time and energy into this project.

It would be a big understatement to say that joining the Wesnoth development team became a turning point for me, personally. But that is far from the only experience that changed my perception of open-source software and people in general. Looking back on it, making a campaign comprising 30-odd scenarios, all to give a rejected Elvish Shyde replacement sprite a practical purpose, was an incredibly ambitious idea and I probably wouldn’t have attempted anything like that a year later, and certainly not now. But it’s a thing I did, and a lot of people seemed to like the result despite the generous borrowing of elements from other campaigns — mostly mainline — so I decided to keep maintaining it, and even started to work on a sequel after a while.

That epic-length campaign was originally codenamed “Armageddon”, but for production purposes I went with a longer, albeit less sophisticated name: “Invasion from the Unknown”. I asked around for better name ideas, but nobody answered that call, so the name stuck. Its sequel was codenamed and later properly titled “After the Storm”.

IftU changed a lot during its early days. Scenarios were moved around, renamed, rewritten, and characters introduced or redesigned as I saw fit. In particular, working on AtS throughout 2008 and 2009 and preparing for a prospective addition of IftU to mainline brought in more profound changes to the story line, partly to accommodate some future plot points better. But I also began to view this campaign in a critical light. Various changes in my life helped exacerbate my negative opinion of IftU, and this eventually spilled over to AtS as well, resulting in approximately two years of creative block.

Finally, at some point mid-2011, I snapped out of that mindset and decided to embrace some of IftU’s less favorable qualities and complete AtS and its sequel — which eventually became AtS episode III — but I also decided to improve and rework what I could as soon as I had the chance. After releasing the completed AtS 0.9.0 in Q1 2013, my work on codename “Reconstruction” began. I was finally free to do as I wished with IftU, and make the campaign that I tried to make in 2007, except without the broken grammar, malapropisms, awkward dialogue structure, close-to-nonexistent characterization, and unmaintainable program code. What could possibly go wrong? Well, for starters, everything.

It’s pretty clear to anyone who’s been following Wesnoth up close that things aren’t what they used to be back in 2007. Interests and demographics have changed, and IftU and AtS have been hit hard by these trends. People these days are more interested in complete products than in actively participating in the development process. There is an overabundance of long campaigns and very little time to play them. Wesnoth’s audience overall is also shrinking and engaging less with content creators, which further compounds the problem and isn’t a huge motivation in general. And even though I wasn’t alone on it, maintaining core Wesnoth — especially during my tenure as Release Manager during 2015 — sucked up pretty much all of my time and energy, leaving me barely able to spend perhaps a couple of days a month on Reconstruction. But after coming across a person who actually valued IftU and AtS for what they are, I managed to focus again and eventually start releasing the Reconstruction release candidates throughout late Q4 2015. All that was supposed to culminate in a 2.0.0 release on December 24th, but a lot of unexpected things happened during December so I had to hold that plan off for a while. And now we’re here.

I’d like to think that my 2007 self (and especially my 2006 self) would have played the Reconstruction version of IftU right after finishing UtBS, and thoroughly enjoyed every single minute of it — even if he didn’t really have the experience needed to discern bad prose from acceptable prose, or code, for that matter. Maybe it’s not the best campaign ever, and maybe it fills a niche that no longer exists, but it’s a thing I made and I think that’s important in some intangible fashion. I created, therefore, I am. I don’t know.

Version 2.0.0 is by no means intended to be the final update to IftU, and I have a few ideas brewing for version 2.1.0 already. It probably won’t happen until AtS 0.10.0 is out, however, and that’s going to take me at least another month due to recent incidents beyond my control that have been keeping me from working on it. Yep, it keeps happening.

I’d like to thank vultraz, nemaara, and pydsigner/pyndragon for their invaluable input, assistance, and moral support throughout Reconstruction’s development (especially the second half); Espreon, AI0867, and Alarantalara for maintaining the previous incarnation of IftU on my behalf while I was fully preoccupied with AtS development; Kitty, Loonycyborg, Mica, Mist, and Mythological, for helping with IftU during the Wesnoth 1.3.x and 1.5.x times; and my beloved companion who stuck beside me all these years and helped me through rough times and put up with me until his departure in February this year. This release is dedicated to all of you, and to the Wesnoth community as a whole.

There is nothing noteworthy about AtS 0.9.16 whatsoever, but IftU 1.99.0 constitutes the first public codename Reconstruction release after several years of work. That is, not counting this year’s April 1st release (which apparently everyone simply assumed to be a hoax instead of actually downloading it from the trunk add-ons server).

I’m cutting this post short since — as should be painfully evident — I don’t really feel motivated to update this blog nowadays. Still, the announcement over at the Wesnoth forums has some more details about this first IftU 1.99.x/2.0 RC series release that are worth checking out if you are planning on installing or updating to this new version.

shadowm.rewound.net has been graciously hosted by an acquaintance of mine since 2005, even after I moved on to weirder endeavors on the Internet. Originally, there wasn’t much in terms of content here, because I only used the space to host a few files from tiny projects I was involved with. However, as I took an interest in dabbling with front-facing Web technologies like HTML, CSS, and to a lesser extent, Javascript, shadowm.rewound.net turned into a testing ground for crazy experiments ranging from a seldom-updating blog, to a quotes database for an IRC channel. Giving the few interested visitors a general idea of who I am and what I do in my spare time was barely a goal at first. Fast-forward to Q4 2014 and just look at this mess.

But as everyone knows, nothing is eternal. Not even the sun. Okay, from a practical standpoint we can assume the sun is eternal. That’s beside the point.

The first chapter of “shadowm”— formerly known as “Shadowmaster’s Lair” — lasted much longer than it logically should have, and I thank grafix for that. Starting today, I am now hosted by AI0867, a close collaborator of mine in projects like Wesnoth-UMC-Dev, my campaign Invasion from the Unknown, and, well, Wesnoth itself. Hence the new hostname, shadowm.ai0867.net.

Around May this year, I went to great lengths with the Iris site redesign to ensure everything would work on any host provided the software dependencies are satisfied, and removed and/or optimized a load of cruft left from earlier iterations. In theory, things should perform more or less fine on the new host, although it is hard for me to gauge this as a user — for you see, I am stranded in high-latency mobile broadband land, making pretty much every website out there equally slow from my point of view. In any case, if there are any glaring inefficiencies, I’ll do my best to correct them over the course of the next few days.

To sum it up, most people (i.e. the handful of followers I have) should not notice a difference besides the new hostname in URLs. Old links will continue to work for approximately a year through the magic of HTTP redirection, though you should probably update them now just in case.

Anyway, that’s all I wanted to say. Now back to our regularly scheduled programming.

Due to circumstances, it has been quite a while, and honestly I lost track of what this release was supposed to have besides a thing that requires another thing from another campaign that has not been completed or released yet. So let’s talk about what AtS 0.9.10 actually has.

Firstly, the minimum Wesnoth version requirement now is 1.11.11.

That’s right. Previous versions (including 1.10.x) are no longer supported. Ever since I moved to 1.11.x following the release of AtS 0.9.0, maintaining support for previous versions (including buggy development releases) required a series of unwieldy kludges that made the code uglier and harder to maintain and were, for the most part, untested beyond the classic “does it compile?” test. With all those bits gone, it will be easier to improve and optimize some aspects of the campaign, as well as work on the thing that requires the other thing I alluded to above.

For now, the first one such aspect I have worked on is converting several units to the 1.11.x animation WML syntax. Although some other people seem to prefer the new syntax over everything, I have chosen a more pragmatic approach for this campaign, so the set of units that I’ve converted in this release is rather limited. Hopefully more will follow soon, but I’m certain that there are a few for which the change hurts code readability. Plus, since most of my units are headbutters, the code size gains are marginal in the average case.

Finally, somebody reported to me of an issue with the player’s recall list and gold being discarded during certain key scenario transitions. It turns out this resulted from a change in Wesnoth 1.11.13 purportedly intended as a bug fix for MP campaigns. I was aware of the change and its implications at the time 1.11.13 was released, but I wrongly assumed AtS would not be impacted because I failed to take a tiny detail into account. Exactly three months later, I realized the sheer gravity of my mistake — but fortunately, it seems nobody else played AtS on 1.11.13+ in the meantime. (Thanks to RainerT for the report. This would have gone unnoticed for who knows how many more years months otherwise.)

As you can see, there is not a lot to talk about in this release other than the version requirement change. Since it’ll be a while before Wesnoth 1.12.0 is released, and AtS remains largely the same as it was the last time I posted in this topic, I believe stable version purists won’t be missing out on anything for now — at least not until the thing is done.

Also due to circumstances, this release is largely untested, so I would not be surprised if I accidentally broke a thing or two since 0.9.9.