Max Payne Benchmarking
This Max Payne benchmarking guide originates through the cooperation of Thilo Bayer from the German hardware magazine PC Games Hardware, Turrican the webmaster of the sites Max Payne Zone and 3DActionZone, the genius MOD programmer SirElvis, Raphael auf der Maur from the Swiss site 3D Concept and me, Leonidas from 3DCenter. The funny thing is that most of these were not fully aware of this cooperation :-)
Now lets go on and see how the story began. On default Max Payne delivers no benchmarking function itself and the programmers of the game were not willing to include such a function, but recommended using 3DMark instead. Not to say anything bad about 3DMark, but we prefer a real life game benchmark. A game that we can buy and play.
The first idea on how to get any benchmarking results was to use the program Fraps. My idea was to measure the end sequence of the game with Fraps. And for sure I got a result, but it was by far not accurate enough. Fraps was showing me much too less fps values than the internal fps-counter of Max Payne shows for the same game scene. That was 25 fps from Max Payne and about 15 fps from Fraps. Overall there were differences up to about 40%.
At this time I got in touch with Thilo Bayer from PC Games Hardware. The guys from PC Games Hardware had exactly the same idea as I did: to use Fraps on the end sequence of Max Payne. We both very soon came to the conclusion that Fraps is not the right tool here to benchmark the game. Thilo told me that Max Payne has a bunch of other fps values to show a minimal fps, a maximal and an average fps.
Umm average fps? Isn´t that exactly what we wanted to have? No, after we´ve done a deeper look onto the average fps counter, we found that these "average" values were very unstable, therefore this couldn´t be a real overall average framerate. So be warned, don´t just use the parameter "showextendedfps" for benchmarking issues. Max Payne shows you an "avg fps", but in real it isn´t one.
I played around some time with this "avg fps" to find out, what this value could mean. As far as I can tell this value shows an average value for the last one or two seconds only - and this led me to the following idea: If it would be possible to expand this short timespan to a fully length of a demo (about 30 - 100 sec), then we would be able to use the "showextendedfps" command to get a meaningful average fps value.
This was the time to find an expert, who could be able to find out what engine variable we must change to get what we want. I asked my brother Turrican, webmaster from 3DActionZone and May Payne Zone, whether he could help me to get me in touch with a talented MOD programmer.
After a short while I had an ICQ contact with SirElvis and the things were moving on. Finally SirElvis found this engine variable to extend the time for achieving a meaningful average fps value. It was not one or two seconds (like I assumed) what the in-game avg fps value is counting but the average value of the last 120 frames.
With this engine variable we had the key for a real average framerate counter. SirElvis changed the variable´s value to 10 million frames. That could be enough :-). He implemented our idea as a MOD for Max Payne. Finally we´ve done some optimization for practical benchmarking issues. The MOD uses save games from the root directory of Max Payne, therefore it don´t blocks savegame-slots. By the way we use a saved game from PC Games Hardware - it shows the same game sequence as my own savegame, but was a whooping Megabyte smaller than mine. Don´t ask me why as I won´t be able to answer this question anyway.
The next thing we´ve done was to let the MOD automatically use the extended fps indication when choosing the command "showextendedfps" instead of the default one. But we have not integrated an automatically activation of the fps indication, since that should only be activated after the savegame is loaded and not before.
I sent the first version of the Benchmark-MOD to Thilo Bayer from PC Games Hardware and Raphael auf der Maur from 3D Concept. It didn´t take us too long to come to the idea to add some more game scenes to the MOD, so that the benchmark can be run with different scenes. Finally SirElvis included three more savegames into the MOD, one from Thilo Bayer, one from Raphael auf der Maur and also the demo sequence from AnandTech. Now our Max Payne benchmarking MOD was done.
Now let´s finish this introduction and go on with the benchmarking procedure itself.