Montag, 10. Dezember 2018

Unreal Tournament 2003

Aus Spielen-unter-Linux Wiki by linuxgaming.de

Wechseln zu: Navigation, Suche
Diese Anleitung setzt die Kenntnis folgender Artikel vorraus:


Das Spiel ist lauffähig unter:
Nativ spielbar
benötigt Wine
benötigt DOSBox
benötigt DOSEMU
benötigt ScummVM


Unreal Tournament 2003

Der Startbildschirm
Basisdaten
Entwickler: Epic Games, Digital Extremes
Publisher: {{{Publisher}}}
Plattform(en): Linux, MacOSX, Windows
Architektur: x86
Genre: Ego-Shooter
Version: 2225
Spielmodi: Einzel- und Mehrspieler
Sprache: Englisch, Deutsch
Steuerung: Tastatur, Maus
Lizenz: kommerziell
Installation: {{{Installation}}}
Systemminima: 1Ghz CPU, 256MB RAM
Altersfreigabe: Freigegeben ab 16 Jahren gemäß § 14 JuSchG
Demo: Demo
Webseite: Homepage
Diskussion: SuL Forum

Inhaltsverzeichnis


Beschreibung des Spiels

Unreal Tournament, oder kurz UT2003, wurde von Epic Games in Zusammenarbeit mit Digital Extremes entwickelt und kam, wie der Name schon vermuten lässt, 2003 auf den Markt. Wie bereits für andere Titel aus der Unreal Reihe üblich dreht sich hier alles um das Kräftemessen zwischen den "Gladiatoren". Dazu stehen eine Vielzahl unterschiedlicher Karten und Spielmodi zur Auswahl. Die gängigen Modi Deathmatch und Capture The Flag dürfen dabei natürlich nicht fehlen. Verschiedene andere, wie Double-Domination, Last Man Standing und Bombing Run sind ebenfalls mit von der Partie. Durch diverse Bonuspacks lässt sich das Spiel noch um eingie andere Modi erweitern.

Das Spielgeschehen selbst ist sehr schnell und erfordert weniger taktisches Geschick sondern eher eine gute Hand- Augenkoordination um Gegner auszumanövrieren und ins virtuelle Jenseits zu pusten. Die verfügbaren Waffen sind sehr stark und machen meist kurzen Prozess mit dem Gegenüber. Ständig in Bewegung zu bleiben ist der Schlüssel zum Überleben. Der Translocater ist natürlich ebenfalls wieder mit von der Partie und erlaubt es dem Spieler rasch den Standort zu wechseln.

Die Steuerung von UT2003 ist dabei recht typisch für das Genre, bietet aber einige interessante Zusatzfunktionen. Als eines der ersten Spiele überhaupt kann die Spielfigur zum Beispiel feindlichen Feuer durch einen Sprung zur Seite ausweichen (eng. dodge). Durch trickreiche Sprünge können außerdem unerreichbar scheinende Positionen auch ohne Translocator besetzt werden. Spezielle Kombinationen lösen bei vollem "Adrenalin" Funktionen aus, die in ähnlichen Spielen nur über das Einsammeln spezieller Gegenstände möglich sind. So kann sich der Spieler zum Beispiel für eine gewisse Zeit selbst heilen, unsichtbar werden oder einen Gang rauf schalten und verflixt schnell rennen.

Die Grafik lässt sich noch immer sehen und protzt nur so mit Effekten. Energiewaffen sorgen für wahre Feuerwerke. Das Wasser ist, ob als Wasserfall oder Tümpel, schön anzusehen. Die Physik des Spiels macht einfach Freude auch wenn sie nicht sehr realistisch ist. Geräusche, Sprachausgabe und Musik sind stimmig und runden das Gesamtbild ab.


Installation

Der Linuxinstaller befindet sich auf der dritten CD. Leider ist das Installationsskript, wie üblich, einfach nur hackdoof. Egal was auf der CD stehen mag: Die CD mit der Datei "linux_installer.sh" ist die CD Nummer 3. Die anderen beiden sind CD 1 und CD 2. Legt die CDs also nicht nach ihrer Beschriftung sondern nach der Reihenfolge ein, sobald das Installationsprogramm läuft. Dazu kommt das seltsame Verhalten die Einbindung der CD nach jeder Datei zu lösen und neu einzubinden. Das Skript sieht dabei in der Datei /etc/fstab nach und versucht alles mit "cdrom" oder "iso9660" einzubinden. Sind also mehrere Medien für den Mountpunkt des CD-Roms verfügbar tut ihr gut daran alle zu entfernen/auszukommentieren, da sonst mehrere Quellen auf den selben Mountpunkt eingebunden werden und das Skript dann seine Dateien logischerweise nicht mehr finden kann.

Und so geht es. Nach dem Einlegen der CD 3 binden wir diese ein und führen das Skript mit root/sudo aus. Dazu gehen wir aber nicht direkt in das Verzeichnis des Mountpunkts, da unsere Shell sonst den Mountpunkt blockiert und wir die CDs nicht wechseln können:

mount /media/cdrom
/media/cdrom/linux_installer.sh

Nach einem Kaffee fordert uns der Installer auf die CD 1 einzulegen. Die CD sollte bereits gelöst sein und kann entfernt werden. Falls nicht hilft ein manuelles lösen. Mit einem Klick auf "Yes" geht es dann mit der CD 2 weiter.

Nach einem weiteren Kaffee wiederholen wir das Spiel mit CD 2. Ist die Installation abgeschlossen, werden wir nach unserem CD-Key gefragt, der wie folgt eingegeben wird:

*************************************************
*************************************************
*************************************************
*************************************************
  YOUR CD KEY IS NOT CHECKED FOR VALIDITY HERE!
        MAKE SURE YOU TYPE IT IN CORRECTLY!
IF YOU CTRL-C OUT OF THIS, THE GAME WILL NOT RUN!
*************************************************
*************************************************
*************************************************
*************************************************



Please enter your CD key: XXXXX-XXXXX-XXXXX-XXXXX
Please reenter your CD key: XXXXX-XXXXX-XXXXX-XXXXX
Thank you!

Gratulation, das Spiel ist installiert und fällt mit dem Befehl "ut2003" ohne Aktualisierung wahrscheinlich sofort auf die Nase.


Aktualisieren

Der aktuellen Patch 2225 heißt ut2003lnx_patch2225.tar.bz2 und kann leicht im Internet gefunden werden. Nach dem Runterladen in ein temporäres Verzeichnis wird das Paket entpackt und die neuen Dateien in das Installationsverzeichnis, an das wir uns hoffentlich aus der Installation noch erinnern, kopiert. Das temporäre Verzeichnis kann anschließend gelöscht werden:

tar xjf ./ut2003lnx_patch2225.tar.bz2
cp -R ./ut2003-lnx-2225/* /usr/share/games/ut2003/
rm -rf ./ut2003-lnx-2225


Bonus Paket

Das offizielle Bonuspaket von Digital Extremes wurde netterweise auch für Linux-Nutzer nur als ZIP Datei gepackt. Zwar gibt es ein Projekt, was mit umod Dateien umgehen konnte, doch lief das erfahrungsgemäß eher schlecht als recht. Häufige Stolperfallen war dabei die nicht beachtete Groß- und Kleinschreibung der für Windows entwickelten Zusatzpakete.

Nach dem Herunterladen der Datei debonus.zip muss das Paket lediglich im Spielverzeichnis entpackt werden. Das geht zum Beispiel so:

cd /usr/share/games/ut2003
mv /pfad/zu/debonus.zip ./
unzip debonus.zip
rm debonus.zip

Nach dem Entpacken stehen im Spiel 6 neue Karten und einige neue Musikstücke zur Verfügung.


Problemlösung

Probleme gibt es mit UT2003 inzwischen eine ganze Menge. Seit 2003 hat sich in der Linuxwelt viel getan. Auch die Hardware hat sich massiv weiter entwickelt und da 3D Spiele tyischerweise sehr hardware orienteriert programmiert sind, gibt es hier einige Hürden zu überwinden.


_XGetXCBBuffer: Assertion failed.

Mit einer Meldung wie dieser darf man sich auf moderneren X-Servern herumschlagen:

ut2003-bin: xcb_lock.c:77: _XGetXCBBuffer: Assertion `((int) ((xcb_req) - (dpy->request)) >= 0)' failed.

Die Lösung ist denkbar einfach. Die mitgelieferte SDL Bibliothek kommt mit dem X-Server nicht zurecht. Nun installiert man einfach die SDL Bibliothek manuell und nutzt einen symbolischen Link zu dieser anstatt der mitgelieferten. Die meisten Distributionen bieten SDL als fertiges Paket an und/oder haben es bereits installiert:

cd /usr/share/games/ut2003/System
mv libSDL-1.2.so.0 libSDL-1.2.so.0.contrib
ln -s /usr/lib/libSDL-1.2.so.0


Error of failed request: BadValue (integer parameter out of range for operation)

Das ist manchmal aber nicht genug. Zwar kommt man nach dem Spielstart nun ein wenig weiter, doch stirbt UT2003 mit einer Meldung dieser Art an anderer Stelle:

Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 135 (XFree86-VidModeExtension)
Minor opcode of failed request: 10 (XF86VidModeSwitchToMode)
Value in failed request: 0xb6
Serial number of failed request: 203
Current serial number in output stream: 205

Auch hier ist die Lösung sehr einfach. Viele Spiele nutzen das veraltete Programm “xvidmode” um die Auflösung im Vollbild zu setzen. Dafür wird heutzutage aber nur noch “xrandr” genutzt. Demnach müsste der Befehl “ut2003 –windowed” funktionieren. Klasse, es läuft also im Fenster, aber nicht im Vollbild. Nun habe ich drei Lösungen dafür konzipiert:

  • 1. Quick’n'Dirty

ln -s /usr/bin/xrandr /usr/bin/xvidmode

Als root ausführen. Dabei wird eine symbolische Verknüpfung von xrandr auf xvidmode erstellt. Die Befehlssyntax ist zwar leicht unterschiedlich aber für ut2003 scheint es zu reichen

  • 2. Richtig

xvidmode zum Beispiel von ToCows herunter laden, mit "make" kompilieren und unter /usr/bin installieren.

  • 3. Hack

Dabei editiert man das UT2003 startup script im Spielverzeichnis und fügt folgende Zeilen vor “# Let’s boogie!” ein:

#set proper screenresolution
utINI="$HOME/.ut2003/System/UT2003.ini"
if [ -r "$utINI" ]; then
xwidth=`grep -m 2 FullscreenViewportX $utINI | cut -f2 -d'=' | tail -1`
xheight=`grep -m 2 FullscreenViewportY $utINI | cut -f2 -d'=' | tail -1`
echo "Read $xwidth x $xheight from UT2003.ini"
xrandr `echo "-s "$xwidth"x"$xheight""`
fi

Hier ziehe ich mir die gewünschte Auflösung aus der UT2003.ini im Heimatverzeichnis und setze die Auflösung vor dem Spielstart manuell. Existiert noch keine UT2003.ini kann man das Spiel in dem Fall einmal mit “–windowed” starten. Dabei wird die INI dann erstellt und die Auflösung nach dem Einstellen im Menü unter Settings geschrieben. Ein optionales “xrandr -s 0″ (oder andere gewünschte Auflösung) am Ende des Skripts setzt die Auflösung nach dem Spielen wieder zurück.

..aus diesem xvidmode/xrandr Grund setzt übrigens auch Quake 3 und Enemy Territory die Auflösung nach dem Start nicht mehr richtig


Negative delta time!

Oh, mit dieser Meldung fängt der Spaß erst richtig an:

Negative delta time!
History:
Exiting due to error

In einigen wenigen Fällen (auf Servern) liegt der Hund in der automatischen Zeitkorrektur über den ntpd begraben. Dabei wird die Zeit über das Internet geprüft und bei Bedarf korrigiert. UT2003 reagiert sehr alergisch auf so etwas. Das ist aber leider nur der Idealfall und ein Abschalten des Services schafft Abhilfe. Bei den meisten sollte dieses Problem aber vor allem auf Dual Core Prozessoren (oder mehr) auftreten. Mit solchen sogenannten "SMP-Kerneln" kommt UT2003 nämlich nicht zurecht. Nun kann man entweder beim Booten von Linux die Option "nosmp" mit geben und damit nur auf einer CPU fahren, oder zum Beispiel mit dem nützlichen Tool "taskset" nur einen CPU-Kern verwenden lassen. Für lilo sieht ein nosmp Eintrag in /etc/lilo.conf zum Beispiel so aus (für Grub ganz ähnlich):

image = /boot/2.6.24.5
    label = 2.6.24.5-NOSMP
    append="nosmp maxcpus=0"

Eleganter geht es mit dem Tool "taskset". Dabei weisen wir der Anwendung ut2003 beim Starten nur einen der verfügbaren Kerne zu - im Beispiel die erste CPU:

taskset -c 0 ut2003

Das lässt sich natürlich auch im Startskript von ut2003 anfügen. Und da wir unter Linux arbeiten ist es natürlich nur eine von vielen Möglichkeiten.


Spielgeschwindigkeit ist zu hoch und variiert

Ebenfalls ein Nebeneffekt der schnellen Prozessoren (ob auf der Grafikkarte oder die CPU selbst spielt dabei keine Rolle) ist ein zu schnelles Spiel. Unspielbar schnell. Abhilfe schafft zum Beispiel das temporäre Runtertakten - auch im Betrieb, wenn die CPU das sog. Speed Stepping unterstützt. Man sehe sich dazu die folgenden Einträge auf dem eigenen System einmal an:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

und welche "Governor" verfügbar sind:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

Die Werte können manuell mit echo neu gesetzt werden. Das geht zum Beispiel so:

"echo 1000000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq"
"echo 1000000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq"

Was die CPU auf einer Geschwindigkeit von 1G fest nageln sollte. Alternativ kann man das ganze komfortabel über den powersaved oder cpufreqd steuern lassen. Hier ein Beispiel mit den cupfreq-set tools:

root@deadalus ~ # cpufreq-set -u 1000 -c 0
root@deadalus ~ # cpufreq-info
cpufrequtils 0.4: cpufreq-info (C) Dominik Brodowski 2004
Bitte melden Sie Fehler an linux@brodo.de.
analysiere CPU 0:
  Treiber: powernow-k8
  Folgende CPUs können nur gleichzeitig ihre Frequenz variieren: 0 1
  Hardwarebedingte Grenzen der Taktfrequenz: 1000 MHz - 3.00 GHz
  mögliche Taktfrequenzen: 3.00 GHz, 2.80 GHz, 2.60 GHz, 2.40 GHz, 2.20 GHz, 2.00 GHz, 1.80 GHz, 1000 MHz
  mögliche Regler: ondemand, performance
  momentane Taktik: die Frequenz soll innerhalb 1000 MHz und 1000 MHz.
                    liegen. Der Regler "ondemand" kann frei entscheiden,
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
  momentane Taktfrequenz ist 1000 MHz  (verifiziert durch Nachfrage bei der Hardware).
analysiere CPU 1:
[...]

Mangels passenden Governor, der mit -g gesetzt werden könnte, habe ich die erlaubten Werte einfach zwischen 1000Mhz und 1000Mhz gesetzt und damit die CPU auf eine Geschwindigkeit fest genagelt.


Spiel ist unspielbar schnell

Trotz Anpassung der Taktung kann das Spiel noch immer viel zu schnell sein. UT2003 zeigt standardmäßig so viele FPS (Bilder pro Sekunde) wie es kann. Auf modernen leistungsstarken Maschinen ist das schlichtweg zu viel. Eine Ausnahme bilden die Netzwerkspiele, da hier die FPS nach der verfügbaren Bandbreite gerichtet werden. Da man aber nicht seine eigene Bandbreite beschneiden mag, was in den Spieleinstellungen durchaus möglich ist, kann man stattdessen einen Blick in die Datei $HOME/.ut2003/System/UT2003.ini werfen. Folgende Werte haben Auswirkung auf die maximal möglichen Bilder pro Sekunde:

[OpenGLDrv.OpenGLRenderDevice]
[...]
SwapInterval=1
RefreshRate=85
FrameRateLimit=85

Die Werte haben folgende Bedeutung: SwapInterval schaltet auf 1 den VSync Begrenzer ein und reglementiert dabei die FPS auf die eingestellte Bildwiederholungsrate des Monitors (0 steht für aus und -1 für Systemeinstellung). Die RefreshRate versucht dabei die Bildwiederholungsrate des Monitors auf den gewünschten Wert zu setzten ("xrandr" zeigt euch eine schöne Übersicht möglicher Werte für euren Monitor)

FrameRateLimit hingegen setzt die maximale Anzahl der Bilder pro Sekunde fest. Dabei ist UT2003 aber etwas großzügig und lässt auch (minimal) höhere Werte mal durch. Nutzt man FrameRateLimit zusammen mit dem VSync Wert wird der niedrigere Wert genommen.

NVIDIA Nutzer können VSync übrigens auch komfortabel systemweit über das Tool "nvidia-settings" aktivieren:

nvidia-settings --assign="SyncToVBlank=1"


Weiteres

Unreal Tournament 2003 wurde in Deutschland mit FSK 16 frei gegeben. Da es allerdings sehr einfach war die originalen "Gewalteffekte", wie rotes Blut, auch in der deutschen Version frei zu schalten wurde das Spiel nachträglich indiziert.


Screenshot

Installationsprogramm
Unsere Flagge
Deathmatch Highscore
Hier ist alles erledigt
Wir haben die Flagge
Gegner im Visier
Oh noeees!
Bombing Run
Hauptmenü

-- Beko 15:02, 30. Jun. 2008 (UTC)