I stumbled across a very cool iPhone game and loved how it felt, played and looked. I did some research and managed to get one of the team to write this blog post! Here is what Christian Buettner, from A Local Chaos Project, had to say about their creation:
A Local Chaos Project is a group of talented people based in Dortmund, Germany, specialized in the production of entertainment software, computer graphics, sound and animation.
On November 8th 2011, we've released our first iOS game BallAHolic which (according to early reviewers) introduces several new features, yet unseen on Apple's iDevices. These features include an ambient occlusion lighting system as well as innovative 360 degree gyro controls. The following report shows how we've brought this project to life!
We started to work on BallAHolic in March 2010 and in the beginning there was nothing but a vague idea of how a game could uniquely be controlled using these new Apple iDevices. By combining an iPhone 3GS' accelerometer and compass, it should've been possible to acquire its orientation in 3D space, and our early tests were promising.
So we continued and came up with the idea to let our game take place on the surface of 3D balls, where a hero character (called Uberhero) is walking around. The player should explore those balls by turning and tilting around his iDevice in 360 degrees, giving him the impression of holding a window to a virtual reality world directly in his hands. Months later, Apple released the iPhone4 featuring a very precise gyroscope sensor which became really helpful for us!
In the course of this project we wanted to evaluate new innovative ideas for streamlining the content creation process and reduce the amount of time-consuming, ever repeating work. We achieved this by developing several procedural modelling and animation techniques which we integrated into our level editor (non-realtime) as well as into the actual game engine (realtime).
The video demonstrates how we created the static elements of each of our 59 balls. First of all, a rough spherical 3D surface is generated. Secondly, a labyrinth is generated and mapped onto this surface, and finally the space, not covered by the labyrinth, is filled with obstacles. The level designer is able to control each process indirectly by specifying several different parameters, leading to an interesting modelling workflow. It more or less mimics the work of feature film location scouts - the level designer creates many different balls (locations) in a very short period of time and sticks with the one which looks best. Usually, this process only takes about 30 minutes, and thus saves a lot of time!
After a ball's static elements have been generated, an ambient occlusion lightpass is applied which gives BallAHolic's game world a very stylish, soft shadow look. The calculations, needed to give a ball its lighting, are distributed over our entire network using proprietary Linux and OSX client software. During production up to 100 CPU cores were used simultaneously which reduced rendering times to just 1-2 minutes per ball.
A fully lit ball consumes up to 4000 MB of data which we reduce to roughly 3 MB - without using any texture mapping techniques!
Apart from just baking this lighting information onto a ball's static elements, they are also stored in an efficient data structure. This is later on used by the engine to apply lighting in realtime to Uberhero and its counterpart monsters, during the game.
The engine itself is stuffed with all kinds of procedural animation routines, which fuel its dynamic assets in order to create an illusion of never repeating agility. Those assets include energy shields, tesla generators, monsters as well as Uberhero.
Energy shields automatically realize their surrounding static game elements (ground/obstacles), and adjust their animation accordingly so that no disturbing intersections take place. This simplifies and thus speeds up human level design work.
Most of Uberhero's and all of the monster's base animations were pre-animated using a proprietary animation editor. However, Uberhero's running and collision animations are created by the engine in realtime.
Due to the fact that every ball has got a different ground structure, it was necessary to permanently map those (base) animations to the ground in realtime. The resulting Uberhero/monster animations look stunning, because they seamlessly integrate into the game world and seem to be different with every of their steps.
All in all, we worked on BallAHolic for about 1.5 years, doing software engineering (proprietary level/animation editors, game engine) and level/sound/animation design as well as music composition work.
The outcome of this "adventure" remains to be seen, but early results are already promising!