I am not an US-citizen, but nevertheless, I think the time is right for an introspective blog post about the progress and general state of the xoreos project and what I am thankful for. Oh, and no worries, I’m not throwing the towel here. :)

So, let’s start with what has happened: there has been quite some work and changes and fixes under the hood. Not as much as I’d like, and no hugely visible new features yet, but still.

On the code side, we have:

BZF: Added support for BZF archives, used in the iOS version of Knights of the Old Republic. Basically, these are your standard BIF archives, but the data inside is compressed using LZMA.

WMA: Fixed a crash in the WMA decoder occurring in some audio files found in the Xbox version Knights of the Old Republic.

FilePath and FileList cleanup: Lots of cleanup and restructuring in these utility classes handling paths, file names and lists of these.

Rewrote absolutize(), relativize(), normalize(), canonicalize(): These functions operate on path. They create absolute paths from relative paths and vice versa, normalized (resolving ambiguities like “/./”) or canonicalized (stronger disambiguities including symbolic links) versions. As a result, paths in the config file now properly resolve ~/ to the user’s home directory.

ConfigDir and UserDir: Changed the location of the config file on GNU/Linux to $XDG_CONFIG_HOME/xoreos/xoreos.conf (i.e. following the XDG Base Directory Specification) and on Mac OS X to ~/Library/Preferences/xoreos/xoreos.conf. Likewise, the default log path is now $XDG_DATA_HOME/xoreos/xoreos.log on GNU/Linux and ~/Library/Application Support/xoreos/xoreos.log on Mac OS OX. On Windows, they are still in $APPDATA/xoreos/.

UNUSED: Added an UNUSED macro to mark deliberately unused function parameters and enabled the compiler flag to warn about unused function parameters without this macro. This helps find places where the lack of usage was in error.

Icon: Embedded the xoreos icon into the executable to be displayed in the standard application icon of the operating system.

Loading progress: Added a progress bar visualizing the game loading stages at startup.

Split docs / tools repo: I split the xoreos-docs repository from the xoreos-tools repository. Both are now clean standalone repositories.

Additionally, I started working on another little tool: Phaethon. Phaethon is a graphical resource explorer (using wxWidgets) for BioWare Aurora engine games, able to look into the archives, extract files, display images and play audio files. It’s not yet finished, and there’s several things left to implement, including displaying GFF files. The goal is to have a more user-friendly, GUI companion to the existing CLI xoreos tools.

There has also been several improvements on the documentation side of things:

As you can see, this is quite a list. And that’s only half of the story. Leading to what (or, more precisely, who) I am thankful for, there’s been contributions by several incredible people:

I am thankful to ImperatorPrime, for wrangling the Travis CI integration. This also helped me in setting up a more comfortable, semi-automatic Coverity Scan integration.

I am thankful to Supermanu, for improving on the Neverwinter Nights GUI code and for continuing to implement the Neverwinter Nights character generator.

I am thankful to mirv, for starting to tackle the monumental task of rewriting the graphics subsystem. I’m looking forward to seeing this evolve, so that we can finally put my naive OpenGL code out of its misery.

I am thankful to clone2727, for all his insights and advice over the years, for always having an open ear for my complaints and rants.

I am thankful to all the other people providing me with help, with tips, bug reports, bug fixes, file format information, existing modding tools, Aurora engine knowledge, complaints, offers to contribute, etc., etc., etc.

There, this is what’s happened in the last 7 month since the last blog post; this is the current state of the project. Looking forward, here’s hoping that we all continue to find time to work on xoreos, that maybe more people will join us and that together, we can make this project bloom into something wonderful.