Half-Life 2: Performance Testing
Introduction and Testing Half-Life 2
Without getting into all the debates around Steam and the selling and buying of HL2 early, it would be absurd to say that Half-Life 2 was not one of, if not THE, most anticipated game for the PC ever. The excitement grew over the span of 4 years as Valve teased fans with videos at E3 and announced and then retracted release dates. But all that is in the past now, as the game is on the shelves, available for download, and you can play it.
But with that comes the problems of performance. Much like the Doom 3 release in August, a lot of people are curious as to how their hardware is going to hold up against this new game engine and if they need an upgrade to play. To help with these issues, I have compiled a detailed performance test on HL2 using 9 video cards, 6 resolutions for each card and 4 demos for each resolution. Using our standard 2-graph method (one in real time and one with min/max/avg data) that brings us to 144 graphs for your viewing. That's right, a gross of graphs!
Half-Life 2 Benchmarking
Benchmarking in HL2 is pretty straight forward if you haven't ever done anything like this before. You can create demos, by using the console and the record mydemoname command. You then have two methods of playing back that demo. Using the timedemo mydemoname command, the demo is played back in the form of the recorded frames as quickly as possible, resulting in an average framerate reported to the console. The other method uses the playdemo mydemoname command where the demo is played back in the form of user commands and actions. This means that the demo will be played back at the same length in time each run, but the frames generated per second will vary depending on the resolution and quality settings.
In my testing, I used the playdemo method as it most accurately portrayed a users gaming experience, and allowed me to use FRAPS to record the frame rate over time without the hassle of getting varying data lengths. Because I was able to do this accurately, we could provide two graphs, one with FRAPS framerate-per-second data and one with the minimum FPS, maximum FPS, and average FPS. I think you'll find this method to provide you with the most comprehensive data on the performance of HL2 as you are not only able to see the average and minimum FPS, but also any general performance variances as well.
Our Custom Demos
There has been a lot of talk already about the ATI supplied timedemos that some sites used in initial testing. Others have forgone using them at all. I created completely new demos for my benchmarks as well, though the levels that ATI used are the same that I decided on. The reasoning for this was pretty simple: with the X800 XT Platinum Edition card in the test system, I played through every level for at least 5 minutes and found parts in the level that showed a big variance in performance and basically caused the GPU to strain. After slowly going through the process of elimination, I found that certain parts of these 4 levels were particularly hard on the ATI X800 XT PE card. So, I recorded demos on them and used these for our benchmarks.
Some of you will question the use of the same levels as ATI chose, saying that it shows a bias towards ATI. I disagree. In fact, I see it as the opposite. In my level testing before I chose the demos to record, I was running on the X800 XT PE card looking for slow down points. Without ever looking at performance on a 6800 card at all, I chose the parts that ATI did poorest at in the level, there by giving NVIDIA the chance to one-up them on the sections that ATI slowed down on. I didn't run the demos on each card before choosing them to see the outcome, as ATI and NVIDIA no doubt do in their internal testing before sending out level samples or demos, so our benchmarks are a fair and reliable way of comparing HL2. And since we chose 4 different demos, the results show a wide range of results from different parts of game.
You can now get a copy of our HL2 demos here, via anonymous FTP download. Thanks goes to Josh Grebe for helping us out.