Gorkon
Senior Member
UT classic auf moderner Hardware zum Laufen kriegen
Aus aktuellem Anlaß - einige haben bereits aufgerüstet und Ärger mit UTclassic gehabt, andere planen ein Hardware-Upgrade. Deshalb jetzt die, äh, Zusammenfassung.
Vorwort
Auf relativ neuen Rechnern hat man mit UT99 keine Probleme, genug FPS zu produzieren. Im Gegenteil, es werden so viele, daß UT ein merkwürdiges Geschwindigkeitsverhalten an den Tag legt. Diverse andere Eigenheiten moderner Prozessoren sorgen außerdem für einen Satz ganz eigener Probleme.
Dieser Guide beschäftigt sich damit, UT stabil und mit konstanter Geschwindigkeit auf einem modernen System (ab P4/AMD64 mit entsprechender Grafikkarte) zum Laufen zu bekommen. Er zielt primär auf UTclassic ab, ist aber zu großen Teilen auch auf andere Games mit der Unreal-Engine übertragbar (z.B. Rune, Deus Ex). (Einige der Tips funktionieren vermutlich auch bei anderen Spielen, die mit ähnliche Problemen kämpfen.)
Im Artikel wird der Hinweis auf OpenGL auftauchen. Damit ist nicht das Standard-OpenGL von UT gemeint, sondern der erweiterte Renderer UTGLR. Vom selben Programmierer ist außerdem ein DirectX8-fähiger D3D-Renderer verfügbar. Dieser ist von den Einstellungsmöglichkeiten und von der Performance her weitgehend identisch zur OpenGL-Variante. Von beiden Renderern existieren weiterhin Versionen für Rune und Deus Ex. Alle Renderer sind verfügbar auf der UTGLR Homepage.
Mehr zum Thema OpenGL steht im OpenGL-FAQ.
Wer im Spiel FPS-Werte überprüfen möchte, kann eine entsprechende Anzeige im Spiel über Tools->Timedemo Statistics aktivieren oder über den Konsolenbefehl timedemo 1.
Die Konfigurationsdatei UnrealTournament.ini befindet sich im Systemverzeichnis von UT und kann mit einem einfachen Textprogramm wie dem Windows Editor bearbeitet werden.
Der Guide geht einzelne "Symptome" durch und beschreibt, wie sie sich abstellen lassen.
Speedattacken
Symptom:
In ruhigen Situationen (keine Gegner, leerer Gang) wird das Spiel sprunghaft zu schnell. Sobald Gegner auftauchen und/oder ein großer Teil des Levels zu sehen ist, normalisiert sich die Situation. Online führt ein solcher "Anfall" zu starken Lags.
Ursache:
Normalerweise sollte UT mehr Leistung in mehr FPS umsetzen. Dies klappt aber nur bis zu einem Grenzwert von ca. 200 Frames. Ab diesem Wert wird das Spiel selbst schneller! Online macht der Server die erhöhte Geschwindigkeit nicht mit und setzt die Spielfigur ständig einen Meter zurück, was zu ziemlichem Geruckel führt. Bei mehr Action im Game gehen die FPS runter, und die Situation normalisiert sich.
Lösung:
Die FPS müssen begrenzt werden. Dies kann auf verschiedene Arten geschehen.
1) Online richten sich die maximalen FPS-Werte nach dem eingestellten Netspeed. Die FPS werden begrenzt auf (eingestellten Speed)/64, beispielsweise bei netspeed 10000 auf 10000/64 ~= 156. Aber man sieht schon, um einen einigermaßen sinnvollen Wert wie 100 zu erreichen, muß man dan eigenen Netspeed deutlich reduzieren. Das begrenzt die eigene Bandbreite, und man riskiert Lags. Also eher suboptimal.
2) Vertikale Synchronisation (VSync) in den Grafiktreibern aktivieren. Dies kann getrennt für Direct3D und OpenGL eingestellt werden, je nach verwendetem Renderer muß man das passende wählen. "Immer an" begrenzt dann die FPS für alle Spiele auf die Refreshrate des Monitors. Diese beträgt bei TFT- und LCD-Monitoren 60 Hz, bei Röhrengeräten meist 75, 85 oder 100.
3) VSync in der UnrealTournament.ini aktivieren. (Damit dies funktioniert, müssen die Grafiktreiber bei VSync auf "Anwendungsgesteuert" oder "Standardmäßig aus" stehen!) Je nach verwendetem Renderer müssen unterschiedliche Stellen der Ini editiert werden.
Direct3D:
Angeblich muß dies auf False gesetzt werden, um den VSync zu aktivieren. Ich konnte das nicht ausprobieren, da bei meinen Tests weder True noch False Wirkung zeigten. Ob es funktioniert, kann man am Einfachsten mit der FPS-Anzeige ermitteln - bleibt diese fast konstant an einem Wert kleben (60, 75, ...), so greift die Methode.
OpenGL (auch D3D8, Überschrift in der Ini dann [D3D8Drv.D3D8RenderDevice]):
SwapIntervall auf 1 schaltet den VSync ein, 0 schaltet ab, -1 verwendet Systemeinstellungen. Mit RefreshRate kann man die gewünschte Bildwiederholrate des Monitors vorgeben. 0 verwendet die Windows- bzw. Treiber-Einstellung. Gibt man eine Rate vor, sollte diese unbedingt zum Monitor und der Auflösung passen!
4) Maximale FPS im Renderer vorgeben
Im Gegensatz zum Standard-Renderer von UT läßt sich bei UTGLR und D3D8 die Framerate direkt begrenzen. In der Ini an folgender Stelle zu finden:
Die FPS werden dann auf die angegebene Anzahl begrenzt. Die Grenze wird dabei nicht exakt eingehalten, bei 85 kann man durchaus 87 FPS erreichen. Für unsere Zwecke ist das aber egal.
Hinweis: Benutzt man FrameRateLimit zusammen mit der VSync-Methode, so "gewinnt" der niedrigere Wert.
Manchmal Zeitlupe, manchmal Speedattacke
Symptom:
Das Spiel läuft in actionreichen Sequenzen normal und in Ruhephasen in Zeitlupe, teilweise auch andersherum (ähnlich wie beim FPS-Problem). Die falsche Geschwindigkeit kann online zu Geruckel führen.
Ursache:
Ein Prozessor mit variabler Taktfrequenz (Intel SpeedStep, AMD Cool&Quiet, beide Technologien müssen im jeweiligen BIOS aktiviert sein). UT bestimmt lediglich beim Start die Geschwindigkeit des Prozessors und richtet seine Geschwindigkeit nach diesem Wert. Sollte der Prozessor aber jetzt mitten im Spiel heruntertakten, weil wenig zu berechnen ist, oder andersherum die Megaherzen erhöhen, weil viel los ist, kommt es zum beschriebenen Problem.
Lösung:
Die Taktrate vor Spielstart auf einen konstanten Wert bringen. Dies klappt am einfachsten, indem man Windows unter Systemsteuerung->Energieoptionen das Energieschema "Desktop" verpaßt. (Die variable Geschwindigkeit ist standardmäßig an das Schema "Minimaler Energieverbrauch" gekoppelt.)
Blöd natürlich: Entweder liegt nun die schöne Stromsparfunktion brach, oder man muß ständig per Hand umstellen. Netterweise läßt sich sich der Vorgang auf verschiedene Arten automatisieren.
1) Batch. Diese erstellt man z.B. im UT-Verzeichnis, packt eine Verknüpfung auf den Desktop und verpaßt letzterer der Optik halber das Icon der UnrealTournament.exe. Der Inhalt der Batch sieht etwa wie folgt aus:
Der Befehl powercfg setzt das jeweilige Energieschema aktiv. Im Beispiel wird es auf "Desktop" gesetzt und UT gestartet. Die Batch hängt so lange im Hintergrund, bis UT beendet wird, danach wird der letzte Befehl ausgeführt und das Stromsparschema wieder aktiviert. (Die Schemata müssen natürlich vorhanden sein und der Pfad zur UnrealTournament.exe ggf. angepaßt werden!)
2) UT Power-Config. Dieses von Brummelchen geschriebene Programm macht im Prinzip nichts anderes als die Batch, ist aber wesentlich anfängerfreundlicher.
Spiel läuft konstant in Zeitlupe oder zu schnell
Symptom:
Trotz FPS-Begrenzung und kostanter Taktrate gibt es Geschwindigkeitsprobleme. Das Spiel läuft zu langsam oder zu schnell, jedoch immer gleich, völlig unabhängig von der laufenden Action.
Ursache:
In diesem Fall hat die im letzten Abschnitt erwähnte Geschwindigkeitsermittlung Mist gebaut. Sie hat einen zu hohen oder zu niedrigen Wert ermittelt, entsprechend läuft das Spiel. Dieses Problem scheint sporadisch bei bestimmten Hardware-Kombinationen aufzutreten, der Grund ist unbekannt.
Lösung:
Man kann UT den Wert, nach dem es seine Geschwindigkeit ausrichtet, manuell vorgeben. Dazu muß man die MHz-Geschwindigkeit seines Prozessors möglichst genau ermitteln. Angaben wie "4200+" sind irreführend, die CPU läuft meist deutlich langsamer. Tools wie CPU-Z oder WCPUID liefern genaue Werte (sofern man sie unter dem Energieschema "Desktop" ausführt ). Die ermittelte Geschwindigkeit kann man UT mit Hilfe des Parameters cpuspeed vorgeben:
Startet man UT über eine normale Verknüpfung zur UnrealTournament.exe, muß man deren Ziel ändern. Bei einer ermittelten Geschwindigkeit von z.B. 2415 MHz wie folgt:
Benutzt man die oben erwähnte Batch-Variante, kann man den Parameter anhängen:
Ob die Vorgabe der Geschwindigkeit akzeptiert wurde, kann man nach Spielende in der UnrealTournament.log sehen. Das ist eine Textdatei, zu finden in \UT\System\. Hier sollte ca. bei Zeile 17 folgendes zu sehen sein:
CPU Speed gibt den vom Spiel erkannten Wert an. Im Fehlerfall steht hier ein deutlich abweichender Wert (z.B. 1500 oder 3200). CPU Speed Overridden ist unsere Vorgabe und wird stattdessen genommen.
Extremruckeln bei DualCore
Symptom:
Trotz 2GHz-Dualcore-Prozessor und Einhaltung der hier beschriebenen Methoden ruckelt das Spiel furchtbar.
Ursache:
Es existiert ein Bug in Windows XP, durch den bei Dualcores manchmal die Kerne mit unterschiedlichen Geschwindigkeiten laufen. Dieser Bug wird in einem Artikel der MS Knowledge Base beschrieben. UT reagiert darauf bei bestimmter Hardware mit einer Art Schluckauf.
Lösung:
Es muß ein Fix installiert werden - Surprise, Surprise.
Für AMD-Prozessoren existiert eine eigene Lösung, der sogenannte DualCore Optimizer. Dieser behebt den Bug für AMD64-X2-CPU's. Zu bekommen ist er auf der AMD64 Tools&Treiber-Seite.
Alternativ kann man den zum MS-Problembericht passenden Hotfix installieren. (Intel-Besitzer haben afaik nur diese Möglichkeit.) Merkwürdigerweise rückt MS den Fix nur auf Anfrage heraus. Wer darauf keinen Bock hat, kann aber nach dem Hotfix namens WindowsXP-KB896256-v3-x86-DEU.exe googeln. Da solche Downloadquellen möglicherweise nicht 100%ig vertrauenswürdig sind sind, sollte man zur Sicherheit
a) die Datei nach Viren scannen
b) die Größe vergleichen (bei mir 2,47 MB oder 2.590.960 Bytes).
Der Hotfix setzt Windows XP (Home oder Professional Edition) mit installiertem Service Pack 2 voraus. Ob er mit der Mediacenter Edition zusammenarbeitet, weiß ich nicht.
Update: MS bietet den Hotfix in der Version 4 jetzt auch offiziell zum Download an.
>>Klick mich<<
Achtung: Da sowohl der AMD- als auch der MS-Fix an der gleichen Stelle schrauben, sollten AMD-User nur einen davon benutzen!
Leichtes Ruckeln bei DualCore
Symptom:
UT läuft fast flüssig, aber nur fast. Ein dezentes Ruckeln stört das verwöhnte Spielerauge.
Ursache:
Windows versucht, beide CPU-Kerne gleichmäßig auszulasten. Deshalb wird der UT-Prozeß ständig zwischen beiden Cores hin- und hergeschoben. Jeder "Schiebevorgang" macht sich als leichter Ruckler bemerkbar.
Lösung:
Man muß Windows beipulen, UT gefälligst nur auf einem Core laufen zu lassen. (Es wird dabei übrigens keine Leistung verschenkt, da UTclassic schlichtweg nicht in der Lage ist, zwei Prozessorkerne gleichzeitig zu nutzen.)
Das geht zum Beispiel manuell: Man switcht UT in den Fenstermodus und öffnet den Task-Manager (Strg-Alt-Entf). Dort sucht man bei den Prozessen die UnrealTournament.exe, macht einen Rechsklick drauf und wählt "Zugehörigkeit festlegen". Im aufpoppenden Fenster sind nun die zwei Cores angehakt (bzw. vier bei einem Quadcore usw.). Nun nimmt alle Haken bis auf einen heraus, dann läuft UT nur noch auf diesem einen Kern.
Problem an der Choose: Sie wird nicht abgespeichert, d.h. man darf bei jedem Start von UT alles von vorne machen. Deswegen möchte ich zwei Programme vorstellen, mit der sich die Sache automatisieren läßt.
1) Der THG Task Assignment Manager. Dieses Tool nebst Beschreibung gibt es in einem Artikel bei Tom's Hardware Guide.
Interessant ist die Möglichkeit, Profile anzulegen, indem man unter "Application Profiles" zunächst eine EXE-Datei wie die UnrealTorunament.exe in eine Liste aufnimmt und ihr per Rechtsklick eine Prozessorkern zuordnet. Läuft das TaskAssign-Programm und wird die entsprechened EXE gestartet, erfolgt die Kern-Zuordnung automatisch.
Um nicht immer TaskAssing per Hand starten zu müssen, kann man dies z.B. in die schon vorgestellte Batch aufnehmen und diese so schreiben, daß das Programm automatisch mit UT beendet wird:
Das Programm TaskKill ist allerdings nur in Windows XP per Default integriert. Besitzer der Home-Edition müssen sich PsKill von Microsoft herunterladen (ist Teil der PsTools) und nach C:\Windows\System32\ verfrachten. (Wenn Windows rumzickt, reicht auch der Ordner, in dem die Batch selbst liegt.) Der Befehlsaufruf unterscheidet sich nur leicht von der TaskKill-Variante. (Beim 1. Aufruf von PsKill muß übrigens ein Lizenzabkommen bestätigt werden, danach ist aber Ruhe.)
Die TaskAssign-Variante ist schon leichter Overkill, hat aber ihre Vorteile: Will man ein zweites Programm gleichzeitig mit UT, aber dem anderen Kern laufen lassen, muß man lediglich ein zweites Profil anlegen. Legt man beispielsweise UT auf Kern 1 und Fraps auf Kern 2, so lassen sich ruckelfrei UT-Videos aufzeichnen. Oder man zockt und läßt im Hintergrund von Programm X auf Core 2 ein Video nach DivX umrechnen. Oder...
2) Das c't Launch-Utility. Das c't-Magazin bietet ein kleines Kommandzeilentool an, mit dem sich andere Programme direkt mit einer Prozessor-Zuweisung starten lassen.
Download Launch.exe
Die schnuckelige EXE kommt entweder nach C:\Windows\System32\ oder zur Batch. Diese muß folgendermaßen geändert werden:
Die Parameter bedeuten folgendes:
/p - Parameter-Liste, die dem zu startenden Programm mitgeliefert wird. Bei UT hier die CPU-Speed-Angabe. Kann weggelassen werden, wenn das Game ohne die Angabe läuft.
/a - Kern, auf dem die Applikation läuft. 1 = Core 1, 2 = Core 2, 4 = Core 3, 8 = Core 4 undsoweiter. Diese Binärzuweisung erscheint auf den ersten Blick merkwürdig, erlaubt aber interessante Kombinationen. Ein Wert von 12 läßt z.B. ein Programm auf Kern 3 und 4 laufen, da die 4 für Core 3 steht, die 8 für Core 4, und 4 + 8 = 12.
/w - Launch.exe bleibt aktiv, bis das gestartete Programm seinerseits beendet wird. Wichtig, da sonst die Batch sofort durchläuft und das Energieschema zurückgesetzt wird!
So, das war es "schon". Hoffe, es nützt. Kommentare, Fehler usw. plz posten.
Aus aktuellem Anlaß - einige haben bereits aufgerüstet und Ärger mit UTclassic gehabt, andere planen ein Hardware-Upgrade. Deshalb jetzt die, äh, Zusammenfassung.
Vorwort
Auf relativ neuen Rechnern hat man mit UT99 keine Probleme, genug FPS zu produzieren. Im Gegenteil, es werden so viele, daß UT ein merkwürdiges Geschwindigkeitsverhalten an den Tag legt. Diverse andere Eigenheiten moderner Prozessoren sorgen außerdem für einen Satz ganz eigener Probleme.
Dieser Guide beschäftigt sich damit, UT stabil und mit konstanter Geschwindigkeit auf einem modernen System (ab P4/AMD64 mit entsprechender Grafikkarte) zum Laufen zu bekommen. Er zielt primär auf UTclassic ab, ist aber zu großen Teilen auch auf andere Games mit der Unreal-Engine übertragbar (z.B. Rune, Deus Ex). (Einige der Tips funktionieren vermutlich auch bei anderen Spielen, die mit ähnliche Problemen kämpfen.)
Im Artikel wird der Hinweis auf OpenGL auftauchen. Damit ist nicht das Standard-OpenGL von UT gemeint, sondern der erweiterte Renderer UTGLR. Vom selben Programmierer ist außerdem ein DirectX8-fähiger D3D-Renderer verfügbar. Dieser ist von den Einstellungsmöglichkeiten und von der Performance her weitgehend identisch zur OpenGL-Variante. Von beiden Renderern existieren weiterhin Versionen für Rune und Deus Ex. Alle Renderer sind verfügbar auf der UTGLR Homepage.
Mehr zum Thema OpenGL steht im OpenGL-FAQ.
Wer im Spiel FPS-Werte überprüfen möchte, kann eine entsprechende Anzeige im Spiel über Tools->Timedemo Statistics aktivieren oder über den Konsolenbefehl timedemo 1.
Die Konfigurationsdatei UnrealTournament.ini befindet sich im Systemverzeichnis von UT und kann mit einem einfachen Textprogramm wie dem Windows Editor bearbeitet werden.
Der Guide geht einzelne "Symptome" durch und beschreibt, wie sie sich abstellen lassen.
Speedattacken
Symptom:
In ruhigen Situationen (keine Gegner, leerer Gang) wird das Spiel sprunghaft zu schnell. Sobald Gegner auftauchen und/oder ein großer Teil des Levels zu sehen ist, normalisiert sich die Situation. Online führt ein solcher "Anfall" zu starken Lags.
Ursache:
Normalerweise sollte UT mehr Leistung in mehr FPS umsetzen. Dies klappt aber nur bis zu einem Grenzwert von ca. 200 Frames. Ab diesem Wert wird das Spiel selbst schneller! Online macht der Server die erhöhte Geschwindigkeit nicht mit und setzt die Spielfigur ständig einen Meter zurück, was zu ziemlichem Geruckel führt. Bei mehr Action im Game gehen die FPS runter, und die Situation normalisiert sich.
Lösung:
Die FPS müssen begrenzt werden. Dies kann auf verschiedene Arten geschehen.
1) Online richten sich die maximalen FPS-Werte nach dem eingestellten Netspeed. Die FPS werden begrenzt auf (eingestellten Speed)/64, beispielsweise bei netspeed 10000 auf 10000/64 ~= 156. Aber man sieht schon, um einen einigermaßen sinnvollen Wert wie 100 zu erreichen, muß man dan eigenen Netspeed deutlich reduzieren. Das begrenzt die eigene Bandbreite, und man riskiert Lags. Also eher suboptimal.
2) Vertikale Synchronisation (VSync) in den Grafiktreibern aktivieren. Dies kann getrennt für Direct3D und OpenGL eingestellt werden, je nach verwendetem Renderer muß man das passende wählen. "Immer an" begrenzt dann die FPS für alle Spiele auf die Refreshrate des Monitors. Diese beträgt bei TFT- und LCD-Monitoren 60 Hz, bei Röhrengeräten meist 75, 85 oder 100.
3) VSync in der UnrealTournament.ini aktivieren. (Damit dies funktioniert, müssen die Grafiktreiber bei VSync auf "Anwendungsgesteuert" oder "Standardmäßig aus" stehen!) Je nach verwendetem Renderer müssen unterschiedliche Stellen der Ini editiert werden.
Direct3D:
Code:
[b][D3DDrv.D3DRenderDevice]
...
UseVSync=True[/b]
OpenGL (auch D3D8, Überschrift in der Ini dann [D3D8Drv.D3D8RenderDevice]):
Code:
[b][OpenGLDrv.OpenGLRenderDevice]
...
SwapInterval=1
RefreshRate=85[/b]
4) Maximale FPS im Renderer vorgeben
Im Gegensatz zum Standard-Renderer von UT läßt sich bei UTGLR und D3D8 die Framerate direkt begrenzen. In der Ini an folgender Stelle zu finden:
Code:
[b][OpenGLDrv.OpenGLRenderDevice]
...
FrameRateLimit=85[/b]
Hinweis: Benutzt man FrameRateLimit zusammen mit der VSync-Methode, so "gewinnt" der niedrigere Wert.
Manchmal Zeitlupe, manchmal Speedattacke
Symptom:
Das Spiel läuft in actionreichen Sequenzen normal und in Ruhephasen in Zeitlupe, teilweise auch andersherum (ähnlich wie beim FPS-Problem). Die falsche Geschwindigkeit kann online zu Geruckel führen.
Ursache:
Ein Prozessor mit variabler Taktfrequenz (Intel SpeedStep, AMD Cool&Quiet, beide Technologien müssen im jeweiligen BIOS aktiviert sein). UT bestimmt lediglich beim Start die Geschwindigkeit des Prozessors und richtet seine Geschwindigkeit nach diesem Wert. Sollte der Prozessor aber jetzt mitten im Spiel heruntertakten, weil wenig zu berechnen ist, oder andersherum die Megaherzen erhöhen, weil viel los ist, kommt es zum beschriebenen Problem.
Lösung:
Die Taktrate vor Spielstart auf einen konstanten Wert bringen. Dies klappt am einfachsten, indem man Windows unter Systemsteuerung->Energieoptionen das Energieschema "Desktop" verpaßt. (Die variable Geschwindigkeit ist standardmäßig an das Schema "Minimaler Energieverbrauch" gekoppelt.)
Blöd natürlich: Entweder liegt nun die schöne Stromsparfunktion brach, oder man muß ständig per Hand umstellen. Netterweise läßt sich sich der Vorgang auf verschiedene Arten automatisieren.
1) Batch. Diese erstellt man z.B. im UT-Verzeichnis, packt eine Verknüpfung auf den Desktop und verpaßt letzterer der Optik halber das Icon der UnrealTournament.exe. Der Inhalt der Batch sieht etwa wie folgt aus:
Code:
powercfg /setactive "desktop"
C:\Games\UT\System\UnrealTournament.exe
powercfg /setactive "minimaler energieverbrauch"
2) UT Power-Config. Dieses von Brummelchen geschriebene Programm macht im Prinzip nichts anderes als die Batch, ist aber wesentlich anfängerfreundlicher.
Spiel läuft konstant in Zeitlupe oder zu schnell
Symptom:
Trotz FPS-Begrenzung und kostanter Taktrate gibt es Geschwindigkeitsprobleme. Das Spiel läuft zu langsam oder zu schnell, jedoch immer gleich, völlig unabhängig von der laufenden Action.
Ursache:
In diesem Fall hat die im letzten Abschnitt erwähnte Geschwindigkeitsermittlung Mist gebaut. Sie hat einen zu hohen oder zu niedrigen Wert ermittelt, entsprechend läuft das Spiel. Dieses Problem scheint sporadisch bei bestimmten Hardware-Kombinationen aufzutreten, der Grund ist unbekannt.
Lösung:
Man kann UT den Wert, nach dem es seine Geschwindigkeit ausrichtet, manuell vorgeben. Dazu muß man die MHz-Geschwindigkeit seines Prozessors möglichst genau ermitteln. Angaben wie "4200+" sind irreführend, die CPU läuft meist deutlich langsamer. Tools wie CPU-Z oder WCPUID liefern genaue Werte (sofern man sie unter dem Energieschema "Desktop" ausführt ). Die ermittelte Geschwindigkeit kann man UT mit Hilfe des Parameters cpuspeed vorgeben:
Startet man UT über eine normale Verknüpfung zur UnrealTournament.exe, muß man deren Ziel ändern. Bei einer ermittelten Geschwindigkeit von z.B. 2415 MHz wie folgt:
Code:
C:\Games\UT\System\UnrealTournament.exe -cpuspeed=2415
Code:
powercfg /setactive "desktop"
C:\Games\UT\System\UnrealTournament.exe -cpuspeed=2415
powercfg /setactive "minimaler energieverbrauch"
Code:
Init: CPU Speed=2418.029344 MHz
Init: CPU Speed Overridden=2415.000000 MHz
Extremruckeln bei DualCore
Symptom:
Trotz 2GHz-Dualcore-Prozessor und Einhaltung der hier beschriebenen Methoden ruckelt das Spiel furchtbar.
Ursache:
Es existiert ein Bug in Windows XP, durch den bei Dualcores manchmal die Kerne mit unterschiedlichen Geschwindigkeiten laufen. Dieser Bug wird in einem Artikel der MS Knowledge Base beschrieben. UT reagiert darauf bei bestimmter Hardware mit einer Art Schluckauf.
Lösung:
Es muß ein Fix installiert werden - Surprise, Surprise.
Für AMD-Prozessoren existiert eine eigene Lösung, der sogenannte DualCore Optimizer. Dieser behebt den Bug für AMD64-X2-CPU's. Zu bekommen ist er auf der AMD64 Tools&Treiber-Seite.
Alternativ kann man den zum MS-Problembericht passenden Hotfix installieren. (Intel-Besitzer haben afaik nur diese Möglichkeit.) Merkwürdigerweise rückt MS den Fix nur auf Anfrage heraus. Wer darauf keinen Bock hat, kann aber nach dem Hotfix namens WindowsXP-KB896256-v3-x86-DEU.exe googeln. Da solche Downloadquellen möglicherweise nicht 100%ig vertrauenswürdig sind sind, sollte man zur Sicherheit
a) die Datei nach Viren scannen
b) die Größe vergleichen (bei mir 2,47 MB oder 2.590.960 Bytes).
Der Hotfix setzt Windows XP (Home oder Professional Edition) mit installiertem Service Pack 2 voraus. Ob er mit der Mediacenter Edition zusammenarbeitet, weiß ich nicht.
Update: MS bietet den Hotfix in der Version 4 jetzt auch offiziell zum Download an.
>>Klick mich<<
Achtung: Da sowohl der AMD- als auch der MS-Fix an der gleichen Stelle schrauben, sollten AMD-User nur einen davon benutzen!
Leichtes Ruckeln bei DualCore
Symptom:
UT läuft fast flüssig, aber nur fast. Ein dezentes Ruckeln stört das verwöhnte Spielerauge.
Ursache:
Windows versucht, beide CPU-Kerne gleichmäßig auszulasten. Deshalb wird der UT-Prozeß ständig zwischen beiden Cores hin- und hergeschoben. Jeder "Schiebevorgang" macht sich als leichter Ruckler bemerkbar.
Lösung:
Man muß Windows beipulen, UT gefälligst nur auf einem Core laufen zu lassen. (Es wird dabei übrigens keine Leistung verschenkt, da UTclassic schlichtweg nicht in der Lage ist, zwei Prozessorkerne gleichzeitig zu nutzen.)
Das geht zum Beispiel manuell: Man switcht UT in den Fenstermodus und öffnet den Task-Manager (Strg-Alt-Entf). Dort sucht man bei den Prozessen die UnrealTournament.exe, macht einen Rechsklick drauf und wählt "Zugehörigkeit festlegen". Im aufpoppenden Fenster sind nun die zwei Cores angehakt (bzw. vier bei einem Quadcore usw.). Nun nimmt alle Haken bis auf einen heraus, dann läuft UT nur noch auf diesem einen Kern.
Problem an der Choose: Sie wird nicht abgespeichert, d.h. man darf bei jedem Start von UT alles von vorne machen. Deswegen möchte ich zwei Programme vorstellen, mit der sich die Sache automatisieren läßt.
1) Der THG Task Assignment Manager. Dieses Tool nebst Beschreibung gibt es in einem Artikel bei Tom's Hardware Guide.
Interessant ist die Möglichkeit, Profile anzulegen, indem man unter "Application Profiles" zunächst eine EXE-Datei wie die UnrealTorunament.exe in eine Liste aufnimmt und ihr per Rechtsklick eine Prozessorkern zuordnet. Läuft das TaskAssign-Programm und wird die entsprechened EXE gestartet, erfolgt die Kern-Zuordnung automatisch.
Um nicht immer TaskAssing per Hand starten zu müssen, kann man dies z.B. in die schon vorgestellte Batch aufnehmen und diese so schreiben, daß das Programm automatisch mit UT beendet wird:
Code:
powercfg /setactive "desktop"
start C:\Programme\Tools\TaskAssign.exe
C:\Games\UT\System\UnrealTournament.exe -cpuspeed=2415
powercfg /setactive "minimaler energieverbrauch"
taskkill.exe /F /IM TaskAssign.exe
Code:
powercfg /setactive "desktop"
start C:\Programme\Tools\TaskAssign.exe
C:\Games\UT\System\UnrealTournament.exe -cpuspeed=2415
powercfg /setactive "minimaler energieverbrauch"
pskill.exe -t TaskAssign.exe
2) Das c't Launch-Utility. Das c't-Magazin bietet ein kleines Kommandzeilentool an, mit dem sich andere Programme direkt mit einer Prozessor-Zuweisung starten lassen.
Download Launch.exe
Die schnuckelige EXE kommt entweder nach C:\Windows\System32\ oder zur Batch. Diese muß folgendermaßen geändert werden:
Code:
powercfg /setactive "desktop"
launch.exe C:\Games\UT\System\UnrealTournament.exe /p="-cpuspeed=2415" /a=1 /w
powercfg /setactive "minimaler energieverbrauch"
/p - Parameter-Liste, die dem zu startenden Programm mitgeliefert wird. Bei UT hier die CPU-Speed-Angabe. Kann weggelassen werden, wenn das Game ohne die Angabe läuft.
/a - Kern, auf dem die Applikation läuft. 1 = Core 1, 2 = Core 2, 4 = Core 3, 8 = Core 4 undsoweiter. Diese Binärzuweisung erscheint auf den ersten Blick merkwürdig, erlaubt aber interessante Kombinationen. Ein Wert von 12 läßt z.B. ein Programm auf Kern 3 und 4 laufen, da die 4 für Core 3 steht, die 8 für Core 4, und 4 + 8 = 12.
/w - Launch.exe bleibt aktiv, bis das gestartete Programm seinerseits beendet wird. Wichtig, da sonst die Batch sofort durchläuft und das Energieschema zurückgesetzt wird!
So, das war es "schon". Hoffe, es nützt. Kommentare, Fehler usw. plz posten.
Zuletzt bearbeitet: