I've been busy the last month improving Reliabit's game engine. The focus this time has been dae file import and animation.
The first phase of this development process has been to read an alternative format to .obj . I initially chose .obj / mtl because it was commonly supported and easy to parse. All of the modeling tools I have support it. Newer file formats I considered reading are fbx or dae files. I did not feel comfortable with fbx -- Seems to crash lots of my tools. Also, dae is a xml format and by default the Mac operating system displays these files. ( albeit without animation ) So, I feel modeling tool developers will be compelled to support the dae format. Anyhow, the point of importing from dae is I can get at joints ( called nodes ), weights and animation data. This is something that the old .obj format did not support. The new version of Cheetah 3D supports dae export. I used the Alien Walk model as a test case. The dae file format is really extensive -- it describes an entire scene. dae was developed at Sony and is an open standard. Though, I wish they could improve their official documentation because the vertex skinning portion of the pdf document is confusing.
Another interesting development is iOS 5. iOS 5 will only support devices capable of OpenGL ES 2. Hurrah! So, this is important for compatibility with vertex shaders that will need to process the weight information for use with animation. The focus of my last game Emerald Run was to bring everything upto speed with OpenGL ES 2 and OpenGL ES 1 at the same time. But going into the future, things will be exclusively OpenGL ES 2. Note that Lion now supports OpenGL 3.2 too on better video cards.
Another challenge has been getting use to Cheetah's animation tools and binding weights to a mesh. Not to mention setting up bones and inverse kinematics. But the nice part is once this is done, its just saved to the dae or fbx file. I think the most important thing to note is that one should have the bones and inverse kinematics all set up first before binding it to the mesh. Also, make sure the mesh is exactly the proportions you want before binding. Messing around with the bones after binding seems to create a lot of problems in the program. One thing that stumped me was to move the IK joints you need to be in object mode … otherwise the joints don't move as expected. After the rig is all setup, then its just a matter of keyframe animating the character. Viola!
I've improved the soft shadows too. Now the fragment shader does a 5 sample percent closer filtering. Still a little heavy for the iOS device but I might just make soft shadows another option. Probably develop this time around on the iPad 1. The fill rate seems slower with the larger screen. In the long run, its a more forgiving situation developing on the slower device -- you are already handling the worst case scenario.
The scene background is jut a Sky Box with a cube mapped texture. I'd opt for this because you want less offscreen verticies. GLKit has SkyBoxes too but its not that hard to implement.
My next goal is to create some simpler character models and more background props. Looks like I've completed the heavy programming phase.

