Zum 3DCenter Forum
Inhalt




Max Payne Benchmarking

20. August 2001 / von Leonidas / Seite 1 von 6



      Die Vorgeschichte

Das "Max Payne Benchmarking" ist eine wilde Kooperation von Thilo Bayer von der deutschen Hardware-Zeitschrift PC Games Hardware, Turrican, dem Webmasters der Site´s Max Payne Zone und 3DActionZone, des genialen Mod-Programmierers SirElvis, Raphael auf der Maur von 3D Concept und natürlich des 3DCenter in meiner Gestalt - und dies teilweise ohne voneinander zu wissen :-).

Max Payne Screenshot

Doch der Reihe nach: In Max Payne ist leider per default keine echte Benchmark-Möglichkeit enthalten. Die Programmierer des Spiels zeigten sich zudem unwillig, daran etwas zu ändern und weisen lieber auf 3DMark als zu benutzenden Benchmark hin. 3DMark in allen Ehren, aber wir wollen die Realität benchmarken und kein synthetisches Programm.

Die erste Idee zum Max Payne Benchmarking war Fraps. Damit wollte ich einfach die Endsequenz des Spiels ausmessen, was auch erst einmal problemlos funktionierte. Im Laufe der Kontrolle dieser Tests stellte sich jedoch heraus, daß Fraps wesentlich niedrigere Zahlen anzeigte, als die interne fps-Anzeige von Max Payne. Im konkreten Beispiel wurden aus ca. 25 fps der internen fps-Anzeige nun nur noch ca. 15 fps bei einer Messung mit Fraps! Die Fraps-Zahlen sind damit für einen echten Benchmark unbrauchbar, da Fraps die Ergebnisse um bis zu 40 Prozent senkt.

An dieser Stelle tausche ich mich recht rege mit Thilo Bayer von der PC Games Hardware aus. Diese hatten haargenau diesselbe Idee - Endszene mit Fraps benchmarken. Wie gesagt war dies aber kein guter Weg, also unterhielten wir uns über weitere Ideen. Im Gespräch mit Thilo ergab sich die für mich zu diesem Zeitpunkt neue Tatsache, daß Max Payne neben der normalen internen fps-Anzeige, welche nur die aktuellen fps anzeigt, auch noch eine erweitere fps-Anzeige besitzt, welche auch minimal-, maximal- und average-Frameraten anzeigt.

Der Nachteil dieser erweiterten fps-Anzeige war, daß sie laut Thilo Bayer seltsam schwankende Frameraten anzeigte. Ich sah mir dies an - und in der Tat, die zu sehenden Zahlen konnten niemals die Durchschnitts-Framerate sein, dafür schwankten sie regelrecht extrem. Also bitte auf keinen Fall einfach so mit dem Befehl "showextendedfps" herumexperimentieren, die dort angezeigten "avg fps" sind (ohne unseren Benchmark-Mod) keine durchschnittlichen fps!

Ich habe mir diese Anzeige nun sehr genau angesehen, um herauszufinden, was denn nun dort genau angezeigt wird. Nach meinem Dafürhalten zeigt diese Anzeige die durchschnittlichen Frames der letzten ein bis zwei Sekunden an - und dies war der Schlüssel zur Lösung des Problems. Denn - so lautete meine Überlegung - wenn es gelänge, diese Zeitspanne der ein bis zwei Sekunden auf volle Demo-Länge (je nach Demo 30-100 Sekunden) zu verlängern, dann könnte man diese average Framerate des showextendedfps-Befehls durchaus zum Benchmarken verwenden.

An dieser Stelle war ein guter Programmierer gefragt, der in den vielen Optionen der Max Payne Engine durchsieht und die entsprechende Variable ausfindig machen konnte. Ich befragte also Turrican (meinen Bruder), seines Zeichens Webmaster und Editor der 3DActionZone in seiner Zweitfunktion als Webmaster der Max Payne Zone, ob er mir nicht einen guten Mod-Programmierer für Max Payne emfehlen könne.

Wenig später war ein ICQ-Kontakt mit SirElvis hergestellt und die ganze Sache kam ins Rollen. Nach einigen Irrwegen fand SirElvis tatsächlich eine Variable, welche die Anzahl der bei der Durchschnittsbildung hinzugezogenen Frames bestimmte: Es waren keine ein bis zwei Sekunden, wie von mir vermutet, sondern die letzten 120 Frames. Ergo zeigt der Befehl "showextendedfps" nur den Durchschnitt der letzten 120 Frames an - solange man ihn nicht verändert.

Genau das tat SirElvis aber nachfolgend: Er veränderte diese Variable auf 10 Millionen Frames, was todsicher ausreichend sein sollte :-). Die ganze Sache wurde als Mod für Max Payne geschrieben, da eine direkte Veränderung von Max Payne natürlich nicht möglich ist. Der Rest war dann reine Optimierung - der entgültige Mod greift auf bestimmte Savegames zu, welches im Hauptverzeichnis von Max Payne liegen und damit keinen der wertvollen Savegame-Slots blockieren. Wir haben hier im übrigen ursprünglich das Savegame der PC Games Hardware zur Endsequenz von Max Payne benutzt - es ist zwar identisch zu meinem eigenen derselbigen Szene, aber aus unerfindlichen Gründen um ca. 1 MB kleiner ausgefallen.

Zur weiteren Optimierung des Benchmark-Geschehens aktiviert der nun entstandene "Benchmark-Mod" auch automatisch die Funktion "showextendedfps", so daß bei Aktivierung der fps-Anzeige in Max Payne immer gleich die erweiterte fps-Anzeige angezeigt wird und nicht die normale. Eine automatische Akivierung der fps-Anzeige haben wir allerdings bewusst nicht eingebaut, da man diese erst nach Einladen des jeweiligen Savegames aktivieren sollte - und nicht schon beim Einladen des Benchmark-Mods.

Nachdem dieses geschafft war, habe ich diese erste Version des Benchmark-Mods dann an Thilo Bayer von der PC Games Hardware und an Raphael auf der Maur von 3D Concept geschickt, und dann mit diesen über den Benchmark-Mod diskutiert. Es kam heraus, das es wohl sinnvoller wäre, mehrere Demo-Sequenzen in den Benchmark-Mod zu integrieren, damit der geneigte Benchmarker mehr Wahlmöglichkeiten besitzt. In Folge dessen steuerten also Thilo Bayer und Raphael auf der Maur je ein weiteres Savegame bei, welche SirElvis beide nachträglich integrierte. Zusätzlich hatte ich die Idee, es ganz perfekt zu machen und bat SirElvis noch um die Integration der von AnandTech genutzten Demo-Sequenz. Danach war der Benchmark-Mod endlich fertig.

Damit schließen wir die Vorgeschichte, welche unseren Weg zum Max Payne Benchmarking skizzierte und kommen damit zum reinen, unkommentierten Ablauf des eigentlichen Benchmarks.



Kommentare, Meinungen, Kritiken können ins Forum geschrieben werden - Registrierung ist nicht notwendig Weiter / Next

Shortcuts
nach oben