Starcraft II und Wine: Zeratul Missionen wieder spielbar

Ich hatte einige Zeit vergeblich versucht die Zeratul Missionen in Starcraft II zu spielen. Immer dann, wenn ich auf den grünen Kristall im Labor klickte, stürzte das Spiel ab. Nachdem ich in der Anwendungsdatenbank zu Wine und in den Kommentaren zu Starcraft II einen passenden Thread zum Problem entdeckte, versuchte ich mich an der Kompilierung des stabilen Wine 1.2.3. Damit hatte ich die letzte Wine Version wieder, mit der ich erfolgreich mit Ubuntu 10.04 die Missionen spielen konnte.
Leider brachte das aber keinen Erfolg und erst in dieser Woche konnte mir dieser Bugreport und die Antwort auf meine Fehlerbeschreibung helfen. Danke!
Das Problem lässt sich ganz einfach mit winetricks und der Installation zweier Laufzeitbibliotheken lösen.

winetricks corefonts
winetricks vcrun2005

Für Crossover Games geht das ebenso leicht mit dem grafischen cxinstaller. Hier musste das Paket corefonts und Microsoft Visual C++ 2005 Redistributable installiert werden.
Winetricks rettete also mal wieder den Tag. Scheinbar tritt dieser Fehler nicht bei allen Spielern auf und wahrscheinlich hatte ich nur vergessen, dass ich die beiden Anwendungen mit Ubuntu 10.04 schon einmal installiert hatte.
Mein Starcraft II Howto habe ich mit der Problemlösung auf den neusten Stand gebracht.

Wine einmal selbst kompilieren

Ungewöhnliche Probleme erfordern ungewöhnliche Maßnahmen...oder so ähnlich. Der Bug mit den Zeratul-Missionen bei Starcraft II beschäftigte mich seit einer Weile, weswegen ich noch einmal im Netz nachschaute, ob jemand nicht doch mit den gleichen Problemen zu kämpfen hatte.
In der Wine-Anwendungsdatenbank stieß ich dann endlich auf einen Kommentar, der exakt das gleiche Problem beschrieb. Ich erinnerte mich wieder daran, dass ich schon erfolgreich die ersten beiden Zeratul-Missionen mit Wine 1.2 gespielt hatte. Vielleicht half hier ja ein Versionswechsel?
In Sachen Wine hinkt Debian aus mir unbekannten Gründen mit der aktuellen Version weit hinterher. (Debian Sid z.Z. 1.1.42). Damit lässt sich zwar auch Starcraft 2 spielen, das Zeratul Problem bleibt aber bestehen. Als Alternative gibt es aber auf der WineHQ-Seite zumindest die Möglichkeit die aktuellen Entwicklungsversionen des Wine 1.3 Zweiges als vorgefertigte .deb Pakete herunterzuladen, die mir aber auch nicht weiterhelfen konnten.
Alles in allem blieb nur die Möglichkeit Wine aus den Quellen selbst zu kompilieren. Ich schaute zuerst nach, welchen Weg die Entwickler vorschlugen und installierte danach zuerst einmal die für die Kompilierung notwendigen Pakete.
Welcher Weg der Sinnvollste zur Kompilierung eines Debian Binärpakets ist, scheint wirklich davon abzuhängen, welche Webseite man gerade liest. Interessanterweise konnte man praktisch überall etwas anderes lesen. Zur eigenen Dokumentation gehe ich später noch einmal auf die verschiedenen Optionen ein. Prinzipiell bietet Debian viele Werkzeuge an, die den Prozess stark vereinfachen und für alle, die öfter Pakete mit Debian erstellen, mit Sicherheit auch der beste Weg sind.
Hier ist nun aber der althergebrachte Weg mit Linux ein Quellpaket zu übersetzen und der auch vom Wine-Wiki vorgeschlagen wird. Zum Ausprobieren habe ich mir erneut eine minimale chroot Umgebung mit debootstrap erstellt.

  1. Quellpakete herunterladen z.B. auf der offiziellen Sourceforge Seite von Wine oder hier.
  2. Abhängigkeiten installieren

    apt-get build-dep wine

    oder indem die oben erwähnten Pakete manuell mit apt installiert werden.

  3. Quellpaket entpacken z.B. in ~/tmp mit

    tar -xvf wine-1.2.tar.bz2

  4. Kompilieren: In das neue Wine-Verzeichnis in ~/tmp wechseln und

    ./configure
    make

    ausführen.

Wine lässt sich dann direkt aus dieser Umgebung benutzen oder danach auch mit dem Kommando make install in den Pfad des Nutzers installieren.
Sollten Probleme beim Ausführen von ./configure auftreten, fehlen einige Pakete als Abhängigkeiten, die manuell nachinstalliert werden müssen. Das war es im Prinzip schon. War das Ganze nun ein Erfolg?
Ich konnte danach Starcraft II zwar starten und benutzen. Das Spiel stürzte trotzdem nach Klick auf den Kristall im Labor ab, mit dem die Zeratul Missionen gestartet werden. Auch eine weitere Wine Version 1.2.1. brachte das gleiche Ergebnis. 🙁
Das Problem scheint also woanders zu liegen. In Sachen Kompilierung ist die oben beschriebene Methode praktisch auf jeder Linuxdistribution zu verwenden, ist aber gerade bei Debian eine etwas "unsaubere" Lösung, da der Paketmanager und die von Debian zur Verfügung gestellten Werkzeuge nicht zum Einsatz kommen. Mehr Möglichkeiten zum Erstellen von Binärpaketen mit Debian habe ich hier beschrieben. 🙂

Crossover Games: Steam und Starcraft II

Eher durch Zufall schaute ich am 15. Mai, zwecks Vorstellung einiger Spieleseiten für Linux, wieder einmal bei Codeweavers vorbei, die ja bekanntlich 50 % des Codes zu Wine beisteuern.
Gerade an diesem Tag feierte das Unternehmen seinen 15. Geburtstag und hatte das Crossover Bundle für einen Sonderpreis im Angebot.
Ich konnte nicht widerstehen und wollte vor allem das darin enthaltene Crossover Games einmal ausprobieren. Im Prinzip handelt es sich hier um ein modifiziertes Wine, was vor allem die Installation und Deinstallation vereinfachen und die Integration in den Desktop verbessern soll.
Sehr angenehm war das vorgefertigte .deb Paket, welches sich mit dpkg -i schnell installieren ließ. Bevor man sich überhaupt zum Kauf entscheiden muss, bietet Codeweavers eine einwöchige Probephase mit dem Programm an, in der alle Fähigkeiten der späteren Vollversion ausprobiert werden können.
Erst nach dem Kennenlernen muss das Produkt aktiviert werden, wozu es nach dem Kauf genügt Emailadresse und Passwort für den bei Codeweavers hinterlegten Account anzugeben.
Nach der Installation erscheint ein neues Menü für die Software von Codeweavers, aus welchem sich heraus das spezielle Setupprogramm zur Installation von Windowsspielen aufrufen lässt.
Auffallendstes Merkmal dabei sind die sogenannten Flaschen, mit denen sich eine Softwareinstallation sauber trennen lässt. Für ein und dasselbe Spiel lassen sich so verschiedene Konfigurationen definieren.
Crossover Games unterscheidet zwischen offiziell durch Codeweavers unterstützten und von der Wine-Community betreuten Spielen. Die offiziellen Spiele erhalten vollen Support durch den Kundendienst des Unternehmens und stehen im Fokus der kontinuierlichen Verbesserung des kommerziellen Produkts, womit schließlich auch auch dem Open-Source-Programm Wine entscheidend geholfen wird.


Ich installierte zum Test Steam und Starcraft II. Ersteres war eine "One-Click" Erfahrung. Steam im Menü auswählen, installieren klicken, der Rest funktioniert automatisch. Kein Herumschlagen mit winetricks oder Suche nach dem passenden Installations-HowTo. Es klappte einfach.
Bei Starcraft II musste ich wie schon bei der reinen Wine Installation die DVD manuell mounten, damit die versteckten Verzeichnisse sichtbar wurden. Crossover weist einen aber auf den richtigen Befehl hin.
Danach kam die Installation nicht in Gang und erst nachdem ich die komplette DVD wieder in ein Verzeichnis auf die Festplatte kopiert hatte, klappte es schließlich.
Sollte der lange dauernde Updateprozess zwischenzeitlich abbrechen, genügt es den Starcraft II Prozess zu killen und Crossover neuzustarten.
Im Vergleich zu meiner ersten Installation mit Wine und Ubuntu 10.04 fiel mir noch auf, dass das Intro während der Installation erfreulicherweise weiterlief.
Die Performance von Starcraft II ist besser, was aber mehrere Ursachen hat. Zum Ausprobieren habe ich Debian Sid (32 bit) in einer Minimalinstallation installiert. Außer Openbox, Alsa, kleineren Hilfsprogrammen, dem brandneuen 2.6.39 Kernel und den aktuellen Nvidia Treibern, gibt es nichts, was das System herunterziehen könnte.
Die Startzeit von Starcraft II ist besser geworden und die knackenden Geräusche im Ladebildschirm sind ebenfalls verschwunden, was vermutlich am fehlenden Pulseaudio liegen dürfte.
Da Compiz nun ebenfalls fehlt, lässt sich damit auch die leichte Verbesserung bei den Frames erklären. Nach wie vor habe ich aber zwei spezielle Probleme, die mir erst nach Installation von Wine 1.3 aufgefallen sind.
Die Zeratul-Missionen lassen sich nicht mehr spielen. Starcraft 2 mit Crossover oder Wine stürzt hier wiederholbar ab. Ich scheine aber der Einzige zu sein, der mit diesem Problem zu kämpfen hat. 🙁
Das zweite ist der bekannte Haven-Bug, bei dem eine Haven Mission durch den "Nebel des Krieges" unspielbar wird.
Zusammenfassend heißt das: Crossover ist eine deutlich benutzerfreundlichere Version von Wine, mit der sich Spiele sauber verwalten lassen. Alle Bugs kann aber auch diese kommerzielle Wine Version nicht beheben.
Mit dem Kauf der Software erhält man übrigens Punkte, mit denen man die Weiterentwicklung von Wine und der Crossover Produkte steuern kann.
Umso mehr Punkte ein Windowsprogramm erhält, desto mehr konzentrieren sich die Entwickler darauf das Fehler beseitigt werden und wissen somit auch, wo die Prioritäten der Wine-Anwender liegen.
Ich denke, wenn man nicht gerade selbst Unmengen Code zum Wine Projekt beisteuert, ist die Kaufversion von Codeweavers ein guter Weg das Projekt zu unterstützen.

[HowTo] Starcraft 2 mit Linux spielen

Am 27.07.2010 erschien das lang ersehnte Echtzeitstrategiespiel Starcraft 2 aus dem Hause Blizzard Entertainment. "Hell, it's about time!" Ich hatte mich zuvor schon in der Wine-Datenbank informiert, wie die Starcraft2-Beta sich unter Linux verhält und war froh zu lesen, dass der Beta-Client schon den "Gold"-Status erteilt bekommen hat.
Das Howto wurde mit Ubuntu 10.04 Lucid Lynx (32bit) getestet und bezieht sich auf die deutsche Kaufversion auf DVD. Dabei habe ich die aktuelle stabile Wine-Version 1.2 verwendet. Der Rechner besitzt eine Intel Core 2 Duo E7400 2,8 GHZ CPU, 4 GB RAM und eine Nvidia Geforce 9600 GT. Als Nvidia-Linuxtreiber habe ich Version 195.36.24 verwendet. Sound funktionierte bei mir auf Anhieb mit Alsa.
Um Starcraft2 zu installieren wird auf jeden Fall wine mindestens in der Version 1.2 benötigt.

Schritt 1:

Vor Beginn der Installation sollte Wine so konfiguriert werden, dass es Windows 7 imitiert. Bei Problemen beim Beenden des Spiels kann auch eine Umstellung auf Windows XP helfen. Am besten beides einmal ausprobieren. Das geht direkt bei Ubuntu mit GNOME-Desktop über Anwendungen->Wine->Konfiguriere Wine oder auf der Kommandozeile mit dem Befehl

winecfg

Schritt 2:

Die DVD wird leider auf Anhieb nicht richtig erkannt. Das Problem existiert auch mit den World-of-Warcraft-DVDs. Die Dateien sind beim automatischen Mounten der DVD "versteckt". Die DVD muss mit

umount <Pfad zum DVD Laufwerk>

ausgehängt werden (z.B. umount /media/cdrom). Mit

sudo mount -o ro,unhide,uid=1000,gid=1000 /dev/scd0 /media/cdrom/

erneut eingehängt werden. Dabei müssen der Gerätename des DVD-Laufwerks und der Mountpunkt ggfs. angepasst werden.

Schritt 3:

Beim Doppelklick auf die Installer.exe startete bei mir der Installationsvorgang, wurde aber nach kurzer Zeit immer mit einer Fehlermeldung abgebrochen. Zum Beispiel erschien:

" Runtime Error!! This application has requested the runtime to terminate it an unusual way. Please contact the application's support team for more information."

Die Lösung ist den gesamten Inhalt der DVD auf die Festplatte in einen Ordner zu kopieren und die Installer.exe von der Kommandozeile aus zu starten.

wine <Pfad zum Starcraft2 Ordner> Installer.exe

Erst danach läuft die Installation bis zum Ende durch. Der Sound, der während der Installation abgespielt wird, bricht bei meiner Installation aber ab. Das Spiel beginnt danach automatisch mit dem Patchen der Dateien auf die aktuellste Version und belohnt einem mit einer filmreifen Introsequenz.

Performance von Starcraft 2 unter Linux verbessern

Auf die Entwicklerversion von Wine upgraden

Erfahrungsgemäß werden Probleme mit Wine nach und nach behoben. Deshalb hilft es oft die Wine-Entwicklerversion zu installieren, um in den Genuss schneller Fehlerbehebung zu kommen. Wer keine Probleme mit Wine hat, sollte bei der stabilen Version (Stand 10.08.2010: Wine 1.2) bleiben. Um die neueste Entwicklerversion nutzen zu können, muss das Paket wine1.3 installiert werden und zuvor das Wine-Ubuntu-PPA eingerichtet worden sein. Auf der Kommandozeile geht das am schnellsten mit dem Befehl

sudo add-apt-repository ppa:ubuntu-wine/ppa

Danach genügt ein

sudo aptitude update
sudo aptitude install wine1.3

um auf die aktuelle wine1.3 Beta-Version ein Upgrade zu machen. Auf der offiziellen Wine-Seite kann man diese Installationsanleitung für Ubuntu noch einmal nachlesen.

Neueste Grafiktreiber von Nvidia für Linux installieren

Wie jeder Gamer weiß, sollten die Grafiktreiber immer auf dem neuesten Stand sein. Der stabile Nvidia-Treiber ist bei Ubuntu "Lucid Lynx" zur Zeit 195.36.24. Um mit dem aktuellsten Treiber zu spielen, kann man diesen einfach durch das Einbinden eines Ubuntu-PPA-Repositoriums von http://www.ubuntuupdates.org/nvidia-graphics-drivers installieren.
Mit den folgenden drei Befehlen auf der Kommandozeile wird das PPA-Repositorium eingebunden, die Paketquellen aktualisiert und schließlich alles auf den aktuellen Stand gebracht.

sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo aptitude update
sudo aptitude safe-upgrade

Anschließend ist der aktuelle Nvidia-Treiber (Stand 10.08.2010: 256.44) installiert.

ATI-Grafiktreiber

In dem Ubuntu-x-swat-Repo ist auch der aktuellste proprietäre ATI-Grafiktreiber enthalten. Diesen kann man mit

sudo aptitude install fglrx

installieren. Da ich keine ATI Grafikkarte besitze, konnte ich den Effekt auf Starcraft II nicht testen. Der aktuelle Nvidia-Treiber bringt bei mir ca. 3-5 Frames mehr bei gleichen Einstellungen. (Hey, immerhin 😉 )

Ein paar Zahlen zur Framerate bei verschiedenen Einstellungen

Getestet mit dem oben angegebenen Computer und Nvidia 256.44 Treiber mit dem Szenario "Taktische Befehle". Die Sicht war immer statisch auf die eigenen Einheiten am Anfang zentriert. Die Frames lassen sich mit STRG+ALT+F anzeigen. Einstellung der Grafikeinstellung auf

  • Ultra: 20 fps
  • Hoch: 28 fps
  • Mittel: 30 fps
  • niedrig: 55 fps
  • alles mittel und shader auf niedrig: 53 fps

Ich spiele zur Zeit mit Grafikeinstellungen auf "Hoch" im Single-Player Modus und komme damit ohne Probleme zurecht. Für Multiplayer könnte ein Wechsel zu niedrig Sinn machen. Die meisten Frames gewinnt man durch die Option Shader auf "niedrig" zu setzen.

Weitere Performance Tweaks

Hierzu muss die Wine-Registry mit wine regedit modifiziert werden.
Mit dem RegEditor zum Schlüssel HKEY_CURRENT_USER/Software/Wine/Direct3D navigieren und falls er nicht existieren sollte einfach anlegen.
Dann Rechtsklick auf Direct3D "Neu" auswählen und danach jeweils die unten stehenden Schlüssel/Werte-Paare hinzufügen. Ich würde das Spiel aber zuerst einmal ohne diese Veränderung ausprobieren und je nach dem wie SC2 läuft die Registry ändern.

SchlüsselWert
DirectDrawRendereropengl
Multisamplingdisabled
OffScreenRenderingModepbuffer
UseGLSLdisabled
VertexShaderModehardware
VideoMemorySize1024 (Der Wert sollte der Größe eures RAM-Speichers für die Grafikkarte entsprechen)

Mögliche Probleme

Allgemein

Es gibt einige besondere Probleme, die von Wine noch nicht gelöst worden sind. Manche Spiele und Windowsprogramme fordern spezielle Laufzeitbibliotheken an, die noch nicht vollständig als Freie Software implementiert worden sind. Das Programm winetricks, welches sich einzeln über apt installieren lässt oder im aktuellen Ubuntu wine1.3 Paket integriert worden ist, lädt diese Bibliotheken herunter und installiert sie im versteckten wine Ordner. Grundsätzlich sollte jedoch vermieden werden diese Laufzeitbibliotheken zu installieren, da sie unter Umständen auch Funktionen von Wine einschränken können. Die Lösung mit winetricks für ein Patchproblem von StarcraftII hat Andreas in den Kommentaren beschrieben. Danke!

Crash bei den Zeratul-Missionen

Bei mir trat folgendes Problem später auf: Beim Klick auf den grünen Kristall im Labor, mit dem sich die Zeratul-Missionen spielen lassen, stürzte das Spiel wiederholbar ab. Die Lösung ist mit Winetricks zwei Laufzeitbibliotheken nachzuinstallieren.

winetricks corefonts
winetricks vcrun2005

Soundprobleme

In der Wine-Datenbank zu Starcraft 2 wurde bei Soundproblemen vorgeschlagen eine bestimmte Windows-Bibliothek namens mmdevapi zu deaktivieren. In der Beta gab es scheinbar erst Sound, wenn dies geschehen war. Bei meiner Installation musste diese Einstellung nicht gemacht werden. Im Gegenteil kam es deswegen erst zu Soundproblemen bei mir im Spiel. Wer Probleme hat und es probieren möchte, muss erneut in das Wine Konfigurationsmenü gehen und dort den Reiter "Bibliotheken" anklicken. In dem Feld "Neue Überschreibungen für" muss mmdevapi eingetragen und mit Enter bestätigt werden. In der darunter stehenden Liste dann einfach auf mmdevapi klicken, Bearbeiten wählen und "Ausschalten" anklicken.

Kernelprobleme

Manche Nutzer haben davon berichtet, dass Starcraft 2 und Wine mit dem Linuxkernel 2.6.33 und 2.6.34 nicht kompatibel sind. Lösung: 2.6.32 oder 2.6.35 nutzen.

Fehlermeldung bei Verlassen des Spiels

Sollte Wine Windows7 immitieren, kann es vorkommen, dass das Spiel beim Ausloggen mit einer Fehlermeldung abstürzt. Hier hilft dann das Umschalten auf WinXP weiter.

Fazit

Nach den kleinen Installationshürden läuft das Spiel bis auf zwei Dinge einwandfrei. Im Ladebildschirm gibt es ein kurzes knackendes Soundgeräusch und beim Beenden des Spiels gibt es immer eine Fehlermeldung. Der Sound im Spiel ist aber normal. Die Grafikeinstellungen müssen je nach Grafikkarte und Rechner natürlich angepasst werden. Alle Effekte sind auch nur mit einer aktuellen GraKa darstellbar. Unter anderem werden 1024 MB Speicher für die Grafikkarte gefordert, wenn man alle Textureffekte sehen möchte. Aber selbst mit der Geforce 9600 GT läuft das Spiel flüssig und die vielen Videosequenzen lassen sich alle im "Hoch" Modus darstellen. Von mir gibt es daher auch Gold. Hier noch ein paar erste Eindrücke von Starcraft2.

Links

Wine-Anwendungsdatenbank für Starcraft2