Tech Analysis: Halo: Reach

Noble.

The long wait is finally over. It's been three years since the mighty Master Chief bowed out in 2007's epic Halo 3, and while last year's ODST exhibited plenty of minor tweaks and improvements to the base tech, there was little doubt that the vast majority of the Bungie engine had remained untouched. While the gameplay delivered, core gamers spoiled by the cutting-edge graphical techniques seen in titles like Killzone 2 really wanted to see what a next-generation Bungie game could deliver.

Halo: Reach is that game, an enormous technical leap over its predecessors and competitors on 360 and an exciting example of a first-party exclusive that genuinely pushes the console into new technological territory - something we don't see so often on the Microsoft platform.

First things first - let's cover the basic building blocks of the game's visuals. Native resolution for the game remains as per the alpha and beta code we previously analysed - 1152x720, with just a mild horizontal scaling up to 1280 pixels wide that is extremely difficult to detect by eye in most circumstances.

This setup, along with the lack of hardware anti-aliasing support (Bungie goes for a custom solution) should mean that the entire framebuffer can sit within the 10MB onboard eDRAM attached directly to the 360's Xenos GPU, allowing Bungie mammoth amounts of bandwidth without the need to tile the framebuffer out to the main RAM - a sometimes performance-sapping operation.

In producing Halo 3, Bungie opted for a number of technical decisions that defined the very look of the game, leading to both good points and bad points in the overall presentation. The game implemented HDR lighting by rendering the whole scene twice at different light levels and combining the two images (a process similar to some forms of proper HDR photography). This meant that the lighting in the game was absolutely sublime for its time, but it also meant that the game itself operated at a sub-HD resolution in order to fit those two render processes into the eDRAM, plus there was no room for hardware MSAA support.

Reach manages to up the resolution to nigh-on full 720p, while retaining HDR and employing an inordinate amount of dynamic lights - every needle from the needler is a bespoke light source, for example. It strongly suggests that another major innovation is the implementation of some form of deferred rendering - something we can confirm for certain if our planned tech interview with the Reach team comes to fruition.

In the meantime, let's drill straight down into the performance. Similar to the previous Halo engine, Reach double-buffers - it displays one frame while rendering the next before flipping the framebuffer. It's also effectively v-synced, though on the odd occasion some frames go over-budget very slightly, resulting in a small, unnoticeable tear at the very top of the screen. The upshot of this is that so long as each frame is rendered in less than 33ms or thereabouts, you have a super-smooth 30FPS shooter.

Problems arise when the rendered frame is significantly over-budget. In this case, the game waits for the next vertical refresh before flipping the framebuffer. The upshot of this is that if the frames are consistently over-budget you get a sustained 20FPS frame-rate. It's most noticeable during the cut-scenes, but it can happen during gameplay too, numbing response. That's the unfortunate disadvantage of sticking to v-sync, the plus point being that the game doesn't tear in any noticeable way whatsoever.

In this 10-minute montage of action vignettes from across Reach's single-player campaign, you can get some idea of the overall performance level. The occasional frame-drop doesn't impact the experience at all (there's a slight pause when you cross a checkpoint for example), but fill-rate seems to be the culprit when a particular scene consistently exceeds budget. Masses of smoke and explosions all competing for GPU resources can occasionally cause issues.

Multiple Halo: Reach combat scenes analysed with Digital Foundry tools.

In comparison with Halo 3 and ODST, there's the sense that for the vast majority of the duration, Reach is the smoother game. While frame-rates in optimal conditions are identical, the new game's implementation of motion blur - both camera and per-object based - is markedly superior to what we saw in the old engine. Put simply, the game just looks that much more fluid in motion.

However, on the odd occasion where frame-rate drops, there's the definite sense that performance lags behind both Halo 3 and ODST at their worst. The question is why? Fill-rate is the likely culprit, as opposed to bandwidth or geometry concerns.

Bungie is really pushing out the boat with Reach, featuring scenes that are crammed with enemy opponents. The Legendary Edition developer documentary targets the shipyard scene as one of the most intensely packed firefight scenes in the entire game, which allows us the opportunity for an interesting experiment - we can measure performance in his sector to ascertain whether this mammoth AI load maxes out the CPU and slows the game down. The video below is the result of that experiment, and it seems that the game holds its own extremely well in these conditions, suggesting that any frame-drops are more likely down to the graphics load.

Analysis of Reach's most AI-intensive campaign firefight area.

With a framebuffer setup ideally suited to living entirely within the GPU's attached eDRAM, Bungie can enjoy optimal processing conditions, allowing it to really go to town. The very first campaign level is an effective showcase for the key revolutions that Bungie has made on a technical level. As Noble Team first touches down, you're treated to the richness of the terrain, and the sheer scale offered by the mammoth draw distance - which Bungie reckons to be four times higher than Halo 3.

Comments (150)

Comments for this article are now closed, but please feel free to continue chatting on the forum!