There are 3 2048x2048 maps associated with each character type [ color map, normal map, specular map]. For the civilians I made a slight modification and packed a mask into the alpha channel of the normal map that modulates the color of the character's texture by a shader constant representing the desired color.
For instance here is how the final texture color is calculated in the pixel-shader for a civilian character...where NormalSampler contains the character's normal map w/ the mask packed into the alpha channel. i.Tex0 are the vert's UV coords, and DiffSampler contains the character's diffuse/color texture. g_InstanceColor is a global shader constant containing the desired color.
float ColorMod = tex2D(NormalSampler,i.Tex0).a;
float4 Tex = (((1-ColorMod)*tex2D(DiffuseSampler,i.Tex0))+(ColorMod*g_InstanceColor));
So let's try it out with 7500 characters in the world...heavily CPU limited by DrawPrimitive calls in most situations. Very simple AI, they just chase the camera. The whole system falls apart when they all congregate like this, but it looks cool 8)
By having more "actual" models to "instance" I can increase the variety. I have 4 more character types to implement, I can seed their animation controllers with a much different time to remove the lock-step appearence of the characters.
Since the game is completely multiplayer based your next question is probably: how the hell are you going to sync all these civilians across the 18 potential clients per-game server. Over the last few years I've been playing with several techniques to optimize the network traffic in the game...but there is still no way something like this would fly in the real world.
What I've done is made the crowd density a server-side parm with a much lower default value than the client's. Also if you're playing on a LAN it might be possible to sync the characters no problem, so I'll make it completely adjustable.
//1000s of SWAT characters all @ full detail...
//Older tests with SWAT model....
//Here is some more fckin around with an Irish Gangster