11. -
UT läuft zu schnell!
Die guten alten Zeiten - die Hardware war zu langsam, und es wurde an allen Ecken getuned, um noch ein paar FPS rauszuholen. Auf aktueller Hardware (Prozessor mit mehrereren GHz, dicke Radeon/GeForce-Karte) muß man sich dagegen nun mit dem gegenteiligen Problem herumschlagen: Das Spiel wird
zu schnell. Offline ist das schon häßlich genug, online muß man außerdem noch mit extremen Lags kämpfen, da der Server die hohe Geschwindigkeit nicht mitmacht und einen ständig einen Meter zurücksetzt.
Es gibt zwei unabhängige Gründe, aus denen
UT zu schnell wird. Der erste wirkt sich durch gelegentliche
Speed-Attacken aus, wenn auf dem Schirm nix los ist (z.B. ein leerer, enger Gang), bei der zweiten Variante läft das Spiel generell mit doppelter Geschwindigkeit.
1. Das FPS-Syndrom
Bei der Programmierung wurde anscheinend von den Codern nicht eingeplant, daß ihr Spiel mal auf entsprechender Hardware mit über 200 FPS laufen würde. Ab dieser Grenze etwa beschleunigt das Game selbst! Dieser Effekt tritt also besonders dann auf, wenn gerade nix los ist (besagter leerer, enger Gang: Die CPU langweilt sich), sobald etwas Action aufkommt, ist alles wieder normal. Mit der eingebauten FPS-Anzeige (Tools -> Timedemo Statistics) kann man das sehr gut nachvollziehen.
Lösung für das Problem: Die maximalen FPS müssen abgeriegelt werden! Dazu gibt es wiederum drei verscheidene Ansätze.
a) Im Online-Modus hängen die maximalen FPS vom sogenannten Netspeed ab. Dieser wird über die Internet-Verbindungseinstellung (Modem&ISDN/DSL/LAN) geregelt und liegt je nach Einstellung bei 5000, 10000 oder 20000 (Byte pro Sekunde). Abfragen kann man den Wert im Spiel per F6-Taste, manuell per
netspeed xyz-Kommando setzen -
netspeed 12000 legt den Wert auf 12000 fest. Viel höher sollte man nicht gehen, falls Lags wegen zu vielen FPS auftreten.
b) Wenn ihr D3D verwendet, müßt ihr die vertikale Snychronisation (VSync) einschalten. Dies begrenzt die FPS auf die Bildwiederholrate des Monitors. (Röhrenmonitor: Meist 75-100, LCD: 60 :/ ). Den VSync kann man einerseits in den Optionen des Grafikkarten-Treibers unter "D3D" einschalten, andererseits auch in der UnrealTournament.ini aktivieren:
[D3DDrv.D3DRenderDevice]
...
UseVSync=False
Zur Abwechslung steht "False" hier für "VSync aktiviert" - die Programmierer haben hier die Werte vertauscht. Im Zweifelsfall überprüft per FPS-Anzeige, ob das Abriegeln klappt.
c) Die dritte (und imho beste) Möglichkeit bietet OpenGL. Genauer gesagt eine inoffizielle OpenGL.dll namens UTGLR. Die gibt es entweder bei unserern
Downloads oder direkt von der
Quelle. Zur Installation muß die DLL ins Systemverzeichnis von
UT entpackt und die alte damit überschrieben werden. Danach muß das Game im Safe-Mode gestartet und das Render-Device auf OpenGL umgestellt werden. (OGL wird übrigens erst angezeigt, nachdem man "Show all devices" angetippt hat!)
Startet man das Spiel und wechselt in die
Advanced Options, so finden sich hier unter Rendering->OpenGL Support die neuen Settings. (Ändert man hier eine der Einstellungen, schreibt die DLL ihre Einstellungen auch in die UnrealTournament.ini.) Unter den vielen neuen Settings befindet sich eine, um die FPS direkt abzuschotten. Die Zeile für die FPS-Begrenzung lautet:
[OpenGLDrv.OpenGLRenderDevice]
...
FrameRateLimit=99
Dies riegelt die maximalen Frames pro Sekunde bei 99 ab.
Wer unter OpenGL lieber per VSync den Maximalwert setzen will, kann das mit folgender Zeile erreichen:
[OpenGLDrv.OpenGLRenderDevice]
...
SwapInterval=1
Mittels a), b) oder c) (Dolly anyone?
) sollten plötzliche Speedattacken der Vergangenheit angehöhren.
2. Prozessor mit variabler Taktfrequenz
Mit obigen Tips kriegt man gelegentliche Speedattacken in den Griff - aber was ist los, wenn das Spiel generell zu schnell läuft? Dies tritt häufig bei Notebooks auf, bzw. bei allen Computern mit Prozessoren, die erst unter Last auf volle Geschwindigkeit hochfahren (z.B. AMD Athlon64 mit aktivierten Cool'n'Quiet). Folgendes passiert:
1)
UT startet und ermittelt den Prozessortakt. Nach diesem Wert wird die generelle Geschwindigkeit des Games eingestellt.
2) Der Rechner stellt fest "Ooops, es wird Prozessorpower gebraucht" und dreht die CPU auf - z.B. von 1200 auf 2000 MHz.
3) Wenn
UT läuft, basiert seine interne Geschwindigkeit auf dem alten Wert, in Wirklichkeit rennt der Rechner jetzt aber mit wesentlich mehr MHz - Ergebnis: Das Spiel läuft nonstop zu schnell.
Wie soll man
das jetzt hinkriegen? Zum Glück kann man
UT den MHz-Wert, nach dem es die interne Geschwindigkeit regelt, manuell übergeben. Dazu muß man die Verknüpfung zum Spiel anpassen. (Wenn keine da ist: Bauen.
). Dies geht wie folgt: Man macht man einen Rechtsklick auf die Verknüpfung, wählt "Eigenschaften" und schreibt die Zeile "Ziel" wie folgt um (Beispiel):
Aus
C:\Games\UT\System\UnrealTournament.exe
wird
C:\Games\UT\System\UnrealTournament.exe -CPUSPEED=1600
bei einem Prozessor mit 1600 MHz bzw. 1.6 GHz. Es müssen übrigens die "echten" Megaherzen des Prozessors angegeben werden! Bei CPUs, die statt Taktfrequenz ein "Pentium-Rating" o.ä. verwenden (z.B. AMD AtlonXP), kann der angegebene Wert von der echten Frequenz abweichen - hier im Zweifelsfall also erst Erkundigungen anstellen.
(Special Thx @ EraseR für den CPUspeed-Tip.)
Update
Anscheinend sind sehr neue Prozessoren (Athlon64 3500+ und aufwärts sowie die entsprechend dicken Intel-Gegenstücke) mit UTclassic nicht wirklich ausgelastet. Das führt dazu, daß die CPU mitten im Spiel je nach Gegneraufkommen, Action usw. die MHz-Zahl nach oben oder unten ändert. Damit läuft die Methode, die Frequenz vorzugeben, ins Leere - das Spiel orientiert sich an einem festen Wert, und der ist nicht mehr gegeben.
Aus dieser Misere kommt man nur mit einem Trick heraus. Die variable Taktfrequenz ist unter Windows an ein Energieschema gebunden (Systemsteuerung -> Energieoptionen), meist an das Schema "Minimaler Energieverbrauch". Unter einem anderen Schema wie "Desktop" fährt die CPU immer auf Maximalfrequenz. Man kann natürlich das Schema manuell umstellen,
UT starten und danach wieder das alte Schema wiederherstellen; das wird aber auf Dauer lästig. Besser: Eine Batch, die diese Schritte automatisiert.
Batch, wassen das? Kenner skippen diesen Abschitt, Noobs lesen weiter.
Eine Batch ist eine Datei, die ein paar Befehlszeilen enthält. Bei Doppelklick drauf werden diese Befehle ausgeführt. Eine Batch erstellt & editiert man so:
1. Unter Extras->Ordneroptionen->Ansicht den Punkt "Erweiterungen bekannter Dateiypen" abschalten
2. Eine Textdatei auf dem Desktop erstellen und die Endung von .txt auf .bat ändern (das Windows-Gemecker kann weggeklickt werden)
3. Rechtsklick draufmachen, "Bearbeiten" wählen und die Befehlszeilen eintragen
4. Speichern, Editor zumachen, Doppelklicksen
In die Batch kommen folgende Zeilen (Beispiel):
powercfg /setactive "desktop"
C:\Games\UT\System\UnrealTournament.exe
powercfg /setactive "minimaler energieverbrauch"
Die Batch ändert das Schema, startet dann
UT und hängt dann im Hintergrund. Macht einem entsprechend brülligen Prozi aber nix weiter aus.
Beendet man
UT, wird die Batch wieder aktiviert und die letzte Zeile ausgeführt. Somit ist die CPU wieder im Stromsparmodus, und alles ist gut. *g*
"Desktop" und "Minimaler Energieverbrauch" sind die Standardnamen für die entsprechenden Energieschemata. Die können aber auch anders heißen - wenn Windows bei einem der Befehle meckert, selbst in der Systemsteuerung nachschauen.