07-02-2009 CAGE grows up, marries iPhone
BeastWorks is now fully ported to and running on the iPhone. It didn't take too
long since I had previous experience with another code base. Most of the time was
spent doing little code cleanups and adding support for other libraries.
For example, I switched to DX9 a couple of years ago and let the OpenGL renderer
fall from grace. It had to be resurrected and updated, then duplicated and stripped
to comply with OpenGL ES 1.1. All three are now fully interchangeable. OpenAL completely
replace FMOD. Newton Game Dynamics had been my physics engine of choice for a while.
iPhone static libraries were released but they had several bugs. To expedite my
port, I read about and added support for Bullet Physics, which seems to be what
everyone else is doing and worked well aside from timing issues. However, Newton
coexists and can be selected via data. Once all of my GCC compliance issues were
resolved, I was able to get some existing scenes running poorly on the iPhone.
The rest lead to the release of my first product, "Pocket Warrior." While it doesn't
seem like much and has some issues with audio (that'd be resolved if the App Store
review process wasn't taking weeks), Pocket Warrior demonstrates a firm milestone
that workflow and most trivial components, as well as audio, animation, graphics,
asset loading, UI, touch, accelerometer, event processing, and more function soundly.
It did require some extra work, writing utilities to convert vartious model formats
to my own (to improve load times), strip key frames from skeletal animations, reorder
triangle lists, convert arbitrary images to TGA with appropriate dimensions, force
lower case file names, and build my space partioning data offline.
Aside from that additional work, porting, optimization, and issue resolution, it
only took a couple of days to click together in the editor, write and test glue
code, and a ridiculous amount of time to record awful audio. While Lua is supported,
the glue code for responding to the UI was written in C++. It took more time, exactly
7 days, for Apple to review and add it to the store.
I also submited another project around the same time, "Liquid Gold." It's an electronic,
bass, drum machine, with additive and explosive visual effects. It also allows you
to draw with lava and scratch with the background track. This project revealed some
issues with rotating my projection matrix for landscape projects while trying to
consistently preserve the original screen coordinates across platforms without testing
specific cases. I use raycasts for UI interaction which might be overkill but works
well and generically for 2D and 3D objects.
Interesting or not, both are 2-3 day project that were pieced together in the CAGE,
effects and all. I just need to get a few smaller projects done to support the larger
ones in development, as well as the tools and engine that I'd love to sell after
putting it through more rigorous trials.
|