What were your artistic goals for this project?
There were two major targets for this project. The first was to respect as closely as possible the art direction from the franchise’s history. We had very accurate concept art I wanted to respect, as well as the visual of the released game. We decided not to go in a photorealistic direction, but more stylized. At the beginning we went for something very stylized, getting close to cartoon-like but it didn’t work well in 3D. Especially in real-time! So we had to turn it down a bit. It’s somewhat similar to Burne Hogarth drawings in that it’s accurate anatomically but some edges of the facial structure are accentuated and sharper.
The second goal was technical. We had very hard technical constraints. We have quite expansive city streets where we can talk to any character. So we had to be able to display a lot of characters, which meant they should be optimised to the maximum amount possible.
You've said that you had two production pipelines. Could you elaborate on this?
We had two major types of characters: main characters (dialogue/story characters, bosses) and general NPC’s (non-player characters).
Main characters are rarely seen together in the game and usually in closed environments. This allowed us more freedom in terms of memory. They can be much more complex and unique.
For the NPC’s, you are able to see many characters plus enemies of different classes, all in big environments with long distance display. That meant very high memory restrictions to get everything in the scene.
In order to be efficient, we decided to make multiple faces reusing the same base textures (diffuse/normal). Variations were made in the shape, the hair and in the shader. This allowed skin tone variations, decal variations (like the possibility to add scars) and different types of eyebrows including adjustments in their position.
For the body, outfits were made of kits. With only one 512 normal map, you must be able to produce a huge diversity of outfits. This texture contained a base model -- let’s say a jacket -- and a small collection of pouches, straps, collars, etc. So when you make a model, you can add different pouches, change the length of the sleeves etc.
In addition, we have very powerful shaders. We use tiny textures that tile to add fabric patterns and normal map details.
This technique has a few disadvantages. It’s a bit tricky to handle. Faces look more generic; you have less freedom than when you make a custom unique head. And for the clothing, since we often cut and combine normal map parts, it makes sharp edges around those details.
But despite that, the advantages are huge. It’s extremely memory efficient. It also allows almost infinite diversity and once you’ve made the base normal map kit it’s much faster to produce new outfits. Also the use of detail maps allows having micro details on characters when you see them from close up.