Any word on the new project?
HC: Our project right now is at a very exciting stage. For the first time we're now shipping on multiple platforms, and then the new consoles are at least not far on the horizon. We have a brand new game, a brand new IP. But all of these things actually present a lot of challenges. We already have a very strong graphics team, but because our ambition is so much bigger, we're also looking for very talented graphics people.
Where do you generally find your people?
HC: Most of the graphics people I have on our team [joined] because they heard our talks at SIGGRAPH or GDC. So people will come up after the talk and say, "Hey, that's a pretty cool place to work, because they push the envelope but still work on very interesting problems and come up with practical techniques."
We get approached by these people, and then the majority of the graphics people we have on our team are hired that way.
What for you have been the challenges on the graphics side, going multiplatform?
HC: We re-architected our graphics engine, and the primary reason is the need to go multiplatform and get ready for the next gen. The first challenge to abstract out the platform differences and still be efficient for each platform.
The other challenge is to have a good architecture for multi-threaded, multi-core designs that allow us to distribute work across different hardware threads, and have as many things execute in parallel as possible. We found out that even for Xbox 360, we were grossly under-utilizing the CPU, mostly due to our multi-threading design that doesn't allow us to spread the work and execute them in parallel. So we redid the whole architecture in the new engine.
An even bigger challenge is to future proof the engine so when the next generation of consoles is here, we are already pretty good at squeezing the performance out of it. For example, we want the ability to have a particle system to run on the GPU for the 360, SPU on the PS3, and compute shaders on the future hardware, and this requires good design up front.
How much can you really know about the next platforms aside from the fact that they will generally be multi-threaded? Is it difficult to predict, or do you have some insight into it already?
HC: There is some confidence we can have from where the hardware is trending toward. You make educated guesses on the things that you can, and then you have isolated, potentially-binding decisions on things where you have no idea what's going to happen.
The worst thing you can do is design something that prevents you from being efficient on the future platforms. So on the things where we have sketchy details, we'd rather leave that isolated decision open until later than make the wrong decision. But there are plenty of things we know already, so we try to design an engine that's very efficient based on our knowledge.
From your perspective as a graphics engineer, what part do you play in the look of Halo? Halo has a unique universe, and I'm wondering how much the art director is actually involved with the graphics programmers on your side.
HC: All graphics features in our game are the result of collaboration between engineers and artists. In the Halo engine, we place great importance on making things physically correct. For example, we used a photon mapping process to compute our global illumination, so in that sense, technology plays a critical role in the realism of our games.
On the other hand, our games are never just a re-creation of the physical world, and art direction plays the dominant role in the look of our games. For example, our worlds are more colorful than most FPS games; we have fantastic skies that you can't find in reality; the shapes of our structures and objects conform to a consistent visual language depending on which faction they belong to.
In the new engine, we place even more emphasis on giving artists direct control over how the game appears, and the majority of our R&D time was spent making technology that makes artist work more efficiently while lowering the technical requirements.
We play sort of a collaborative role with the art director. Typically, any graphics feature is a combination of the graphics engineer providing the possibilities of what can be done, and then the art director gives their preference against our vision of what should be done. So, the combination of these two typically results in a graphics feature that gets made in our engine. So our role is not necessarily to be the visionary, but we provide the possibility and educated guess of what can be done, and how their vision is best translated in terms of technology.
What do you see as the benefits of using your own engine, since you all still do that?
HC: First of all, it's a lot more fun to write your own engine than licensing someone else's, right? But that's more of a joke. The real benefit is the flexibility, because a lot of things as we develop the game will change in the course of the game. A lot of early design decisions will turn out not to be true. A lot of things we didn't anticipate before will become big problems.
So having our own engine, where we are intimately familiar with every aspect of that engine, allows us to have the flexibility to change, first of all. Second of all, nowadays we're also using a good mix of middleware to do a lot of the nitty gritty functionality that typically would take a lot of time. So it makes even more sense for us to focus on the ones we consider to be the bread and butter, and things that give us competitive advantage. And if you adopt an engine wholesale, you lose that competitive advantage.