Settler 2 TNG under Wine

by

After porting some free software to an unfree operation system I've chosen to run some unfree software on a free operation system (ok, just wanted to play some kind of vikings godfather). An interesting target was "The Settlers 2: The Next Generation" or in german "Die Siedler 2: Die nächste Generation" v1.11757 because I found some positive comments inside wine's appdb and Ubisoft is selling it at a cheap price at the moment.

To make it short: No, it won't run without problems. First thing are mysterious warnings about shaders, crashes before anything started and when you are able to load a level then there will everything be black ("fog of war" like or just black buildings and no landscape).

First thing you should check is that your X display runs at 24 bit rgb (maybe other settings are also ok, but I had problems with 16 bit rgb), your card supports "shader 2.0" and a recent X11 display driver is installed. My test system was a Debian Lenny with NVIDIA 173.14.09 using a GeForce FX Go5600 and wine was installed from experimental (1.1.5; 1.1.12 seems not to work anymore)

The shader warning can be solved by copying d3dx9_29.dll, d3dx9_36.dll and msvcr71.dll to $HOME/.wine/drive_c/windows/system32/. Which version of that dll you really need changes from version to version of wine. You can take a look at the d3dx9 Wiki page to see what the current version needs. But the display problems will not be gone that way. Let's prepare for some "oldschool" regedit hacking (yes, wine has a regedit helper program)... A good way to fix some graphical issues was to change following keys

[HKEY_CURRENT_USER\Software\Wine\Direct3D]
 "OffscreenRenderingMode"="fbo"
 "PixelShaderMode"="enabled"
 "UseGLSL"="enabled"

The last step to get a playable game is to fix the "black fog" problem... Changing Shader Details from "Off" to "Low" and setting the reflection depth to at least 1 fixed it here but playing a little bit with the shadow values could help on other graphical glitches. The small overview map will not work as expected but this isn't a problem for me at the moment.