by Emily , 3:55 pm
In the transition from PC game to iOS, Creavures went though a number of significant changes to meet the hardware requirements of our chosen mobile platform. Programmers and artists alike tackled the difficult task of slimming down our already modest graphics budget to encourage the game to run smoothly on an iPhone. Shaders were modified, UI completely revamped, and hands were rung over the number of “Skinned Meshes” on screen at a time. (Skinned Meshes are polygonal objects animated by joint chains.) The largest of these meshes, both in terms of joints and in terms of mesh density, were the main Creavures themselves. As one of games most appealing elements is the quirky and detailed animated interaction between the little animals of the title, scrapping joints from these fairly heavy characters was a virtual impossibility. There were, however, a few steps that could be taken to mitigate the strain they imposed on the iPad’s processing power, namely cutting down the number of vertices in the animated mesh.
Take a look at Bitey here. He was originally about 4.5K, a mid-range amount for a realtime character.
I was given a budget of 3K. As long as the character still animated smoothly and the silhouette stayed mostly the same, I could cut whatever I wanted to bring the poly count below that number.
The first thing to do, when evaluating the mesh, was to determine areas that were complex for no reason, polys we weren’t using in the existing animations. Originally, Bitey was planned to have a lot more expression within his eye area, and thus had a full eyeball with pupil and many edge loops around the eye socket. This was easy to get rid of. A couple of loops allowing him to blink was all that was needed, and his eyeball, since the eyes are glowing and blank, was reduced to get rid of the complexity that allowed it to rotate. Another thing is the loops around the nostrils, the sharp edges put in place to control the normals. Getting rid of these freed up space, and all we lost was a little definition around the nose and mouth, slight gray shadows caused by the softened normals. Loops in the tummy were merged together, and the knees and elbows were simplified.
So we did this to most things in the game, bound mesh or not, and it seemed to make a big difference! Here’s a plant that I did the same thing to!
Here are three tips when reducing a poly mesh for game performance
1. Keep the silhouette consistant – This is one of the things that make the character recognizable. The outline should stay mostly the same when you cut out polygons.
2. Look at where your character moves the most – Where does your character bend? What part gets animated a lot? Bitey’s tail we left alone because moved so much during the course of gameplay.
3. Don’t rely on automatic Poly Reduce tools – It’s fast to click a button in Maya and have your mesh density drop by 50%, but you need to be in control of what stays in and what gets cut. Often, Poly Reduce gives somewhat iffy results and screws up your edge loops!