Haze/IGN Blogs/Progression

As we all know, improving and developing new technology is dangerous. After all, that’s how The Terminator, ED-209, and the evil version of Mr. Data came to be. So, on the one hand it’s great that we’ve been whipping our technical guys into a development frenzy, because they’re making Haze look and play better than ever, but on the other hand we’re steering mankind towards its inevitable destruction at the hands of robots.

That introduction fails to bring me neatly to talking about our engine, lighting, physics, particle effects and explosions – nonetheless, that’s exactly what I’m going to do.

For starters, the lighting solution in the game combines a radiosity-based lightmapper with high dynamic range realtime lighting and adaptive scene luminance adjustment, which is a large part of the reason why HAZE looks so damn sweet - but not entirely responsible, of course.

The atmospheric effects are thanks to our great particle system, which was designed to provide flexibiltiy through the use of programmable pixel and vertex shaders. To enable us to throw around the tens of thousands of particles that fill every frame of gameplay in HAZE we're also utilizing a multi-core implementation for our particle simulation and rendering front end.

Physics-wise, we're also using Ageia PhysX middleware, which has been integrated into the game engine from day one, and can support hundreds of simultaneous rigid body and ragdoll objects at any one time.

Now, if you read the last paragraph and went cross-eyed, let me break it down for you:

Right from the very beginning, one of the biggest challenges on Haze was the fact that we were going to need to show the visual differences between being On Nectar, and being Off Nectar. We wanted Haze to be two games in one box, with two very different gameplay and visual experiences as a Mantel soldier, and as a Promise Hand rebel. This meant developing our own engine from scratch that could handle all that crazy technical stuff I was talking about, and could support multiple rendering capabilities.

Nectar Withdrawal Sequence
This engine was also developed with another feature in mind: streaming. We wanted Haze to be completely immersive, meaning that we didn’t want the player to have to sit and watch a loading screen. We wanted them locked inside Shane Carpenter for the entire journey. So, the engine is able to compress data on-the-fly, allowing us to keep you inside the world of Haze from the moment you load the game until you finish it.

Of course, one of the most important tools in making a game immersive is making sure that the characters fit the world. In the case of Haze, we needed our characters to look extremely realistic.

As well as realistic characters, it’s important that the characters move and react in a believable way. So, we’re using a combination of motion capture and keyframe animation.

We decided early on that there should be a notable difference between the two sides feel about being in the war. We wanted Mantel to look highly trained, so we used a former SAS soldier. Meanwhile, to make sure that the Promise Hand looked less experienced in combat, we used someone with absolutely no military sense whatsoever – me. And, I can assure you, I really do look like I had no idea what I was doing. Perfect.

Whilst motion capture is a great thing, it’s not the solution to all problems. For instance, using it for facial movement can be problematic. Y’see, because all of Haze is in first person – even the dramatic scenes – we don’t have the luxury of cutting to a close-up, like we could if it were a cutscene. So, in order for a character’s emotions to be visible on their face, sometimes you need to exaggerate their expressions a little bit. So that means doing it by hand. In my totally unbiased opinion, it looks awesome.

Well, that’s about it for this week. Take care of yourself – and each other.