Who am I...
My name is Ranjeet "Rungy" Singhal, it is pronounced "run-jee". During the course of my 36 year career I have been a Technology Director...a Tech Artist...a Lead Animator...a Character Artist...and a Pixel Pusher. I've worked on many games with big name name publishers. Additionally, I have spent a few years working with the United States federal government providing simulated training and instructional materials. (Resume.doc here)
The goal of my products is to provide extensive experience and expertly created content to developers helping them get a better understanding of how games are properly made with maximum performance and productivity in mind.
Example...let's talk about performance...
Lag sucks....if your game has frame rate lag, and can't run @ 60 fps, odds are since your frame rate lags...so will your game...and lag sucks : )
There are many character models and avatar systems for sale out there, but are they really right for you? How many characters does your game design require to be on screen at any given time?
Do you really know and understand the performance cost of an 80,000 triangle character vs. a 5,000 triangle one?
Nothing will have as great an impact on your game as resource and min spec limitations because they define what you can.... and cannot do.
In order to accurately estimate performance....
you need to know two vital pieces of information…
triangle counts and texture memory
estimating your triangle budget for a given platform is fairly easy…
Total Triangles = ( chars + environment ) @ 60 FPS
Intel GMA 21k iPhone 21k iPad 30k iPad 2 48k iPad 3 100k GeForce 8800 300k of static, with 70k of rigged triangles GTX 590 30,000,000 triangles @ 60 fps, and oddly enough, only about 90k of rigged triangles (engine optimizations will change this UP)
Ok, so if you're on anything but a Steam Game average system...you're looking at 20-50k triangles visible on screen at any given time.
"Posing" characters are typically well over 80k so they are completely out of the picture...as are most other models over 20k, that is if you want anything on the screen besides ONE character
Let's say 30k is your limit...half is going to be used for level geometry so that leaves you with around 15k.
Divide that by how many characters (and/or vehicles) and you'll get a good idea of how your triangle budget will look on a per character basis.
Still interested in those 20+k characters? You should not be.
Here's a shot of the entire All Star Character Library at over 90 FPS...
Texture memory is fairly easy to compute for too …
Available Texture Memory by platform:
iPhone 24 megs iPad 100 megs iPad 2, Intel GMA 300 megs iPad 3 512 megs Desktop ATI/NVidia 1 gig+
Characters should use about 1/3 of an applications given texture min spec at any given time as a general rule of thumb because the screen's visible area has characters and environments, with the environment usually taking up more of the visible screen space and therefore requiring the greater share of the texture memory resources.
This 1/3 of texture memory for chars must also include calculation of mip maps ( which almost doubles your base total )
A diffuse map at 2048x2048 requires 16 megs
when mipped it is closer to 30 megs
So you would get one diffuse map for characters for that project and that sucks.
With that min spec you actually need to drop your resolution way down.
That number of 128 megs is indeed small…and looking at the hardware, we can see that 300 megs is a more realistic estimate.
Especially given the fact that most systems that run our stuff is at least Intel GMA capable.
At runtime, compression does not exist.
All textures need to be uncompressed when being used, compression is utterly useless for characters.
Mip map texture LOD’s do work and can automatically be applied at run time by the engine.
Be aware of what that does to the quality levels though, it is not a magical “I get the same result for half the price” solution. Mips actually lose almost all normal mapping details.
These reasons are why I chose to be at 1024x512 for a 1 draw call character. This gives us good quality with lots of room for gameplay innovation for even the lowest of performance platforms. If you start there...you can only do better !