It looks like this is a very widespread issue and that it is not limited to Sniper Elite: Nazi Zombie Army (it is hilarious that I am writing seriously about that game). From a broad view, the file appears to be a part of DirectX 11. Information about DirectX 11 support in wine is hard to decipher. Lots of complaints are scattered about the Internet, met often with skeptical assertions that “support is coming” met, in turn, with arguments that wine already supports some DirectX features…
One important piece of information is that wine has apparently had trouble with this issue for other games in the past. The release notes for wine 1.5.20 indicate that one of the bugs resolved was “22489 Missing d3d11 prevents some games from running.”
Thinking this may be a wine version issue (though having no corroborating evidence from other users), I see that wine version 1.7.14 is available, so I download and install that. It fails to resolve the issue.
When searching for the string “Failed to initialise d3d11.dll” (with the British spelling of “initialize” as it is found in the error message), I see plenty of reports being issued of similar messages thrown by other games (though Sniper Elite is at the top of Google results for the phrase at the moment) such as Hitman: Absolution, Dragon Age II, and Bioshock. Interestingly, the research may not need to begin with wine, but with the Windows virtual drive, since the majority of these reports are from native Windows users.
One interesting tidbit I locate indicates that Sniper Elite V2 (admittedly, not the Zombie Nazis, but probably similar enough in code to be informative) will not run on Windows XP.
I head into the PlayOnLinux GUI –> Select Steam –> Select “Configure” in the lower right –> Navigate to the “Wine” tab –> Select “Configure Wine” –> Under the “Applications” tab, select the “Windows Version” from the drop-down menu at the bottom. Mine is Windows XP (as is the default value, I believe), so I changed it to Windows 7.
That did not resolve the issue, but it did seem to help the Steam application out a bit – the X window frame appeared around Steam (with the minimize and close buttons) where it had not appeared before.
Moving on, I think I might issue another public service announcement: For the love of God, don’t ever download a dll file from some sketchy website slingin’ code on the corner of the Internet streets. If it’s not a part of a trusted software package (like Steam), do NOT install it. Who knows what’s in there? That’s actual software you’re loading into your machine. Security consequences of intentionally installing malicious code in such a way are disastrous. You’d have to rebuild your whole operating system to have any confidence that the system is clean.
The (seemingly outdated) wine FAQ (probably where I should’ve begun) states that DirectX 9.0c is supported with some bugs included. It states that DirectX 10 support is “on the way.” Additionally, it states:
It is not recommended nor supported by Wine HQ to attempt this. You can install the runtime, but it will not run. The runtime needs access to the Windows drivers, and Wine cannot access them for obvious reasons. The only native Microsoft DLLs that could be useful anyway are the d3dx9_xx.dll type ones, and these require you to accept Microsoft’s license. Additionally, versions of these DLLs are now part of the Wine tree. So, as Wine improves these DLLs will only become less relevant. That said, there are some guides out there which describe how you can install Microsoft’s DirectX. We reiterate: it is not recommended nor supported by Wine HQ to attempt this.
Interesting. This makes it look like it is at least feasible to install these d3d.*.dll files. From the FAQ, it appears wine does not yet support DirectX 11.
I see oblique references to winetricks having the capacity to install DirectX version support in wine (DX10 and DX11 are both mentioned). Since I need winetricks to install the missing font (an issue which I resolved by modifying the Steam.exe command arguments in PlayOnLinux as described in the previous post) anyway, and as winetricks seems highly recommended (I even used it to install Steam in an attempt to resolve my network issue discussed in the same previous post) I install winetricks as laid forth on the Steam developer website:
$ wget http://winetricks.org/winetricks $ sudo mv winetricks /usr/bin $ sudo chmod +x /usr/bin/winetricks
It’s a single script, it appears, and this is verified by using vim to open the file. I didn’t go through it very far (it’s 18,674 lines of code) but it seemed reasonably well written and documented, so that’s good to see. The heading documentation confirms that winetricks consists of a single script, so that’s good as well.
Some Googling doesn’t look promising regarding the DirectX 11 installation, unfortunately. I’ll get to that later; I have to get to bed!