Painkiller is a little-known gem in the first-person shooter (FPS) genre. I’ve played through it many times, but my most recent playthrough had something different: I did it entirely on Linux (Kubuntu 20.04 LTS).
All along, I’ve been using the Painkiller Black Edition from GOG.com, which has a Windows-only installer of close to 4GB that you can download after purchasing the game.
Once downloaded, we can install the game by opening a terminal, navigating to the directory where it downloaded, and running the installer with WINE, as I’ve shown many times before in previous articles (note that that’s a single filename… the spaces should actually be underscores):
cd Downloads
wine setup_painkiller_black_1.64_lang_update_\(24538\).exe
This brings up the GOG installer for Painkiller, so you select the installation language, tick the box accepting the EULA, and optionally choose the folder to install to.
Click the Install button to begin the installation, and the installer runs into a snag towards the end:
This problem has happened to me with several GOG games before, and each time, I thought all was lost. So it was to my great surprise that, when I clicked the Launch button after closing the error, the game ran perfectly fine anyway.
I was able to play through the entire game without problems, so if you get this error while installing Painkiller (or another GOG game) with WINE, just ignore it and try playing anyway. Chances are it will be fine.
Playing the Game
Monster at the Cathedral
City on Water
The Palace
You can run Painkiller by double-clicking the handy desktop icon it sets up for you. At that point, all that’s left is to enjoy the action and stunning visuals.
The campaign selection screen in Warcraft III: The Frozen Throne
Over the past week, I’ve played through the Bonus (Orc) Campaign of the Warcraft III: The Frozen Throne expansion… on Linux! It’s both surprising and delightful how many games that could previously run only on Windows can nowadays be run on Linux with little trouble, especially since Windows 10 is no longer able to run some of those older games. In the case of Warcraft III, only the cinematics don’t seem to work on Linux (more on this further below).
In this article, I’ll show how to set up the original Warcraft III: Reign of Chaos and its expansion Warcraft III: The Frozen Throne on Linux, assuming you have the original CDs. I won’t be covering the recent remaster, Warcraft III: Reforged. I’m using Kubuntu 20.04 LTS.
We’ll be using WINE, so the steps are going to be pretty much the same as “Running Legacy Windows Programs on Linux with WINE“, although this will be tailored for Warcraft III. Make sure you already have WINE installed by running:
sudo apt-get install wine
Installing Warcraft III: Reign of Chaos
Start by popping in the Warcraft III: Reign of Chaos CD. When the Device Notifier shows the CD, expand the “Warcraft III” device and click “Open with File Manager” to mount the CD and open it in Dolphin, the file manager application in KDE. This may vary a little if you’re using a different desktop environment (e.g. GNOME).
Expand the “Warcraft III” device and click “Open with File Manager”.
From the file manager application that opened, you can click the URL to find out the location where the CD has been mounted. Open a terminal and cd to that location. Then, run wine install.exe:
Click the URL in Dolphin to find the location where the CD has been mounted. cd to it in a terminal, then run wine install.exe.
This brings up the autorun screen. From here on, installing Warcraft III is just the same as on Windows.
The autorun screen
Accept the License Agreement to continue
Enter your name and CD Key
Choose where to install Warcraft III
Wait for Warcraft III to install
Create a desktop shortcut
Optionally, register Warcraft III
Warcraft III is ready to play
Running Warcraft III in Linux
Installing and playing Warcraft III: Reign of Chaos on Linux Kubuntu 20.04 LTS
When it asks you whether you want to create a desktop shortcut, click “Yes”. This creates a shortcut as well as an extra .lnk file, which you can delete. You can use this desktop shortcut, the one added to your start menu, or the autorun screen to run the game.
Installing Warcraft III: The Frozen Throne
Next, pop in the CD for Warcraft III’s The Frozen Throne expansion. Follow the same steps as with Reign of Chaos to bring up the autorun screen. From there, install the game the same way you would on Windows.
Note: if, for any reason, the mounted CD folder appears to be empty, simply eject the CD, put it back in the CD drive, and repeat the same steps.
Open The Frozen Throne with File Manager
Run the autorun using WINE
The autorun screen
Accept the License Agreement to continue
Enter your CD Key
Wait for it to install
Create a desktop shortcut
Optionally, register The Frozen Throne
The Frozen Throne is ready to play
Running The Frozen Throne in Linux
Installing and playing Warcraft III: The Frozen Throne on Linux Kubuntu 20.04 LTS
As with Warcraft III: Reign of Chaos, creating a desktop shortcut will create an extra .lnk file which you can delete.
Installing The Frozen Throne Patch 1.22a
The problem with playing Warcraft III: The Frozen Throne from CD is that… it’s not exactly complete. While you can play through the main campaigns, there’s also a Bonus Campaign based around the Orcs in their new home of Durotar. The CD features only Act One of this RPG/RTS hybrid campaign. To get the other two acts, you’ll have to patch it.
The two missing acts from the Bonus Campaign were added in patch 1.13, and patch 1.21b no longer requires the CD to play. There are also lots of gameplay changes from all the patches since the initial release.
To patch your game, first download The Frozen Throne Patch 1.22a – I’m not sure whether it’s still available on battle.net, but various third party websites should still be offering it for download; so just Google it. Then, run the patch executable with WINE:
wine War3TFT_122a_English.exe
The patch is quick to install, and when the game runs again, you should see an updated version at the bottom right of the initial screen.
After installing TFT patch 1.22a
TFT version is updated in bottom right
Installing The Frozen Throne patch 1.22a
What about Cinematics?
Unfortunately, I haven’t managed to get the beautiful cinematics to play from within Warcraft III. However, you can play them separately with a good media player such as VLC. To do this, first locate your Warcraft III installation folder via the hidden .wine folder in your home directory, as shown in the screenshot below. You’ll find the cinematics in the Movies folder.
The Movies folder, and the Human Campaign intro playing in VLC
When you’re trying to make sense of a binary file format, a good hex viewer or hex editor is an invaluable tool. As shown in “Ultima 1 Reverse Engineering: Decoding Savegame Files“, a typical workflow involves viewing a hex dump of the binary data, making some small change, taking a second hex dump, and comparing the differences. If you’re lucky, you might even be able to observe patterns in the data directly.
Tandy 1000 graphics data for the space fighters in Ultima 1 can be easily observed in a hex editor such as Okteta.
While a good visual hex editor (such as Okteta under Linux or xvi32 under Windows) is essential to view the binary data in hex and also make direct changes to the data files, a command-line hex viewer for Linux called xxd also exists. As with most things in a Linux environment, a lot of power comes from being able to combine command line tools in a way that produces the results we want. As we shall see, one of the benefits is that although most hex editors don’t have tools to compare hex dumps, we can leverage existing command-line diff tools for Linux.
Reverse Engineering the Ultima 1 Savegame File Format
We’ve already seen in “Ultima 1 Reverse Engineering: Decoding Savegame Files” how to analyse how the bytes in the Ulltima 1 savegame files change in response to actions in the game world. Let’s see how we could do this more easily using Linux command-line tools.
First, we start a new game, and take note of a few things such as the player’s position and statistics:
Ultima 1 when starting a new game.
We can use xxd take a hex dump of the savegame, which by default goes to standard output:
A hex dump of an Ultima 1 savegame file
By redirecting the output to a file (which we’re arbitrarily calling before.hex), we can save this for later comparison:
xxd PLAYER1.U1 > before.hex
Next, we move a couple of spaces to the right and save the game. Again, we take note of the situation in the game world (i.e. that we have moved to the right, and food has decreased by 1):
Ultima 1 after moving a couple of spaces to the right.
We can now take a new hex dump:
xxd PLAYER1.U1 > after.hex
Now that we have a record of the savegame before and after having moved, we can compare the two dumps using popular Linux diff tools such as diff or vimdiff:
vimdiff before.hex after.hex
Comparing hex dumps with vimdiff
In this case, simply moving two steps to the right has changed four different things in the savegame file: the player’s position, food, move count, and tile in the overworld map. It takes a bit more patience to reduce the number of variables at play and come to some conclusions about what the bytes actually represent, but you can hopefully appreciate how well these command-line tools play together.
Analysing The Savage Empire Dialogues
The Ultima 1 savegame is particularly easy to analyse and compare because it’s got a fixed size of 820 bytes, and each field in the game state has a fixed place within that file. Not all binary files provide this luxury.
For instance, the dialogues of The Savage Empire are LZW-compressed and are written using a proprietary scripting language. However, we can still use command-line tools to extract some interesting insights.
Using tools from the Nuvie project, you can extract each character’s dialogue into a separate binary file, numbered from 0 to 76 with some gaps. We can thus write a simple loop in bash syntax from 0 to 76 and invoke xxd on each file, using the parameters -l 16 to print out only the first 16 octets:
for i in $(seq -f "%03g" 0 76)
do
echo -n "$i "; xxd -l 16 "path_to_dialogue_files/$i.dat"
done
The result is that we can identify an increasing NPC number as well as the NPC’s name and a part of their description within those first few bytes, indicating that although the structure of the data may be complex, there is still a deterministic pattern to it:
First few bytes of the first several NPC dialogues in The Savage Empire.
Conclusion
Whether analysing binary files using hex tools is your thing or not, I hope at this stage you can appreciate how much you can get out of combining a few simple command-line tools together.
DOSBox is incredibly handy to run old games. In “DOSBox for Dummies“, I covered basic usage, as well as how to write a Windows batch file to automate some of the more repetitive operations (such as mounting). I also explained how to extend this to games requiring a CD in “Running Games Requiring a CD in DOSBox“.
If your games are all under the same folder, you might want to consider automatically mounting your DOS games folder using a dosbox.conf file. Otherwise, you can resort to scripting via batch files (Windows) or shell scripts (Linux).
For those one-off situations where you just want to try out a game quickly without setting anything up, regardless of where it resides on the filesystem, you can run the following (in Linux) from the folder where your game is:
dosbox -c "mount c $(pwd)" -c "C:"
This is the same method I used in previous articles to pass commands to DOSBox. The only difference is that here I’m taking advantage of command substitution in bash (as seen in “Scripting Backups with bash on Linux“) to pass in the current directory via the pwd command. That way, no matter where your game folder is on the filesystem, DOSBox will start in the right location. Then, all you’ll need to do is invoke the right executable.
As I write this, I can’t help but be conscious about bias. I’ve been a fan of the Ultima series of games since childhood. In 2001, I joined the Ultima Dragons Internet Chapter (UDIC) – an online fanclub dedicated to the series – and I’ve been a part of this community longer than I haven’t. In July 2002, I launched my first website, Dino’s Ultima Page, which was a leading site in the Ultima community for about a decade, and it will turn 16 years old in less than two weeks from now.
Left to right: Dr. Cat, Starr Long, Denis Loubet facepalming, and Richard Garriott at the Ultima Dragons Internet Chapter 25th Anniversary Bash
Last year, that same UDIC fanclub turned 25 years old, and a big party took place in Disneyland, Anaheim. I travelled all the way to California to be part of it, and like the rest of the people there, I was thrilled that several of the people who worked on the game – essentially our childhood heroes – were present to hang out with their fans.
The Kickstarter
There was similar enthusiasm a few years before that party, in March 2013, when Richard Garriott’s latest company, Portalarium, set up a Kickstarter campaign to fund a spiritual successor of Ultima called Shroud of the Avatar: Forsaken Virtues. The fans, starved for years of the creativity and entertainment by Electronic Arts (who currently owns the rights to the Ultima intellectual property), and sick of the failures it produced in an attempt to make money off its existing fanbase, readily poured their coin into a new game that would be made by some of the same people behind Ultima. The Kickstarter alone raised $1.9m, with additional funding secured after that.
Starr Long and Richard Garriott, speaking at the Ultima Dragons Internet Chapter 25th Anniversary Bash
Faced with this exciting prospect, what do you think a long-standing fan such as myself did?
I simply ignored it.
One reason was that I seldom had time to play games any more. But more importantly, it felt like madness to put money into a game even before it had started development, no matter who was involved. Coming from a country where customer service is abysmal, the last thing I’m going to do is give people my money to do whatever they want with it, without even being able to check some reviews first.
The trainwreck
In hindsight, I’m glad I did that. A recent lengthy review by taxalot at RPG Codex (with additional post-mortem insight by the author in the article’s comments) exposes the game as unfinished, buggy, and all round underwhelming in just about every aspect.
Most notable is that Portalarium tried to appeal to both the existing Ultima fanbase by promising a single player experience, while also going the MMORPG direction for those who wanted that.
“And sold they did. The first consequence of this was that if you backed the game for the single player experience… well, you probably gave up hope the moment your bank account was debited. To someone who was looking for a great single player adventure, the monthly emails focused solely on player housing were utterly depressing, an obvious sign that Portalarium had taken your money and were doing whatever the hell they wanted with it. Month after month, the studio unveiled new kinds of houses that you could buy with real money. But why stop at a house? Why not buy a castle? Or a whole town? You could do that too, as a solo player or as a guild to have your own place to regroup. The emphasis on this aspect of the game was truly puzzling. Between that and the monthly dance parties thrown by “DJ Darkstarr” (executive producer Starr Long’s alter ego), one might wonder whether the point was to have exciting adventures or just to create some sort of virtual renaissance fair for everyone to LARP in. In many ways, it felt like Portalarium were increasingly less interested in selling a game than a medieval Second Life service.” — RPG Codex Review: Shroud of the Avatar
Even more maddening is the concept of buying virtual houses with real money, and have to pay regular taxes on them. As if real-life housing weren’t bad enough – all we needed was to have the same problems in our games.
As you can imagine, this enraged several fans who backed the game based on the promise of Richard Garriott going back to his roots. One of these, who pledged $1500 for the game, was permanently banned from Shroud of the Avatar forums for questioning the direction of the project in this regard. He recently published the comments he was banned for, along with all the email correspondence that ensued, exposing what seems to be blatant abuse of power and excessive censorship.
The Future of Portalarium
While this whole mess is still unfolding, Portalarium laid off half their team just a few weeks ago, mainly laying off people in their art and design department. Which is ironic, because seeing that review on RPG Codex, it appears that these are the areas where help is most needed.
Meanwhile, in reaction to same review, Ultima Dragons have been discussing whether the resulting game is the fault of incompetent developers or incompetent management. While this is difficult to ascertain without having inside information, one may take a hint from the single Glassdoor review about the company (to be sure, a single review isn’t a very good sample, but it gives an idea):
The email correspondence about the aforementioned banning incident also rings alarm bells.
“It can also be hard to be confronted with your own misbehavior. In fact it can be so hard that many people, like yourself, cannot even face it and instead choose to focus on everything but your own actions.” — Starr Long, email correspondence
Given that this whole incident was a result of trying to stifle criticism, let’s just say I wouldn’t have been too happy to get this kind of response myself, especially from an Executive Producer.
History Repeats Itself
Shroud of the Avatar: Forsaken Virtues was fully released in March 2018 (even if in the pitiful state that the aforementioned review shows). That means it’s taken five years of development, and a whole lot of money. If you’ve been following the history of Ultima, you’ll find that it’s strangely reminiscent of Ultima 9, the last Ultima game that was released in 1999. Ultima fans generally consider the game to be a disaster, and often blame EA for the turnout.
Another thing EA is blamed for is the general fate of the Ultima intellectual property. After Ultima 9, there was pretty much no activity whatsoever for years. In more recent years, EA decided to reuse the Ultima intellectual property, resulting in a series of failures that were cancelled either even before being launched, or afterwards.
Ultima fans, for instance, generally agree that Lords of Ultima had nothing to do with Ultima other than the name. Ultima Forever: Quest for the Avatar similarly has a few names that fans will remember (including “Lady British”), but little else that feels familiar in terms of story or gameplay. This practice is called name-dropping, and guess what other game does this? That’s right. Shroud of the Avatar: Forsaken Virtues.
One would think that veteran game developers would learn from past blunders (theirs or otherwise), but after all this, the advice to management from that earlier Glassdoor review seems to hit the nail on the head.
Forsaken Virtues Indeed
Ultima 4 received critical acclaim because it brought ethics into an RPG genre that was principally dominated by “kill the bad villain” storylines. The virtues, conceived by Richard Garriott, would be central to all the mainstream Ultima games after that, except for a couple set on different words. Ultima 5, for instance, showed what happens when virtues are taken to the extreme.
“Thou shalt not lie, or thou shalt lose thy tongue.” — Ultima 5
If Shroud of the Avatar got nothing right, it has a great name. Forsaken Virtues very much reflects its overall direction. Honesty, for instance, was thrown out the window along with the Kickstarter promises. Compassion is shot down once you read the aforementioned email correspondence. Sacrifice is done by Portalarium only insofar as other people’s money and their own staff are involved.
As for humility, there are multiple aspects to this. One is that the game tried to be everything (scope creep anyone?), and thus failed to be stand out (or even be decent) in any one department. Another is that the top people behind the game need to get off their pedestal and start listening to their fans.
"You don't learn to walk by following rules. You learn by doing, and by falling over." — Richard Branson