Creating an iPhone Game, the Developer's view

matho01I personally enjoy game development very much since every game is a challenge to program, an exciting experience unique by nature unlike those boring database applications that as it seems constitute the majority of custom software market. Many of the games will use your hardware up to the limit and require thorough optimization in fight for higher frame rate.

From the technical point of view… a successful iPhone game needs to look attractive and be very playable in terms of performance and UI reaction. The primary challenge an iPhone game developer faces is to make sure those beautiful characters, objects, effects (or whatever else game designers invent) work fast and smoothly on a portable device with limited CPU power and even more limited battery capacity. Fortunately the iPhone and iPod Touch do very well by supporting hardware graphics acceleration via OpenGL ES. Thanks to this the iPhone platform probably has more graphics rendering capabilities then an average desktop computer had about a decade ago or at least comparable to that. This is quite a serious technology and eventually it is OpenGL ES what made iPhone game development grow up into a big industry.

In spite of OpenGL ES being mainly intended to be used in 3D games it is still possible to benefit from it greatly when rendering 2D graphics. In fact if we look at the App Store the vast majority of the games are 2D or pseudo-3D (i.e. they pretend to be 3D still using flat scene objects aka “sprites”). They all use OpenGL ES as the core of their game engines.

The game we at Surgeworks worked on lately was a 2D puzzle game called MATHO. The game was already selling on App Store in its first version. It was implemented by using standard UI controls — buttons and sliders. The gameplay was amazing and addictive but our client also wanted to make it look beautiful. After the graphic redesign, our choice was to write a new UI engine using OpenGL ES, add social features like global high scores and suggest other small improvements and tweaks to the overall already successful gameplay.

In the new game engine we removed all the standard UI controls and replaced them with custom drawn screens. A new event handling system has been implemented to make OpenGL sprites responsive to user actions. That way it became possible to bring alive all the great design concepts created by our artists.

For some screens we still needed to combine OpenGL ES graphics with some non-OpenGL stuff. After some tweaks this worked quite smoothly. In particular this allowed to integrate a scrollable web view into the game that shows useful “How to play” informations.

One important thing we needed to do to build a community of gamers has been to implement a global high score table. We decided to use a proven solution rather then develop it from scratch and after thorough evaluation we’ve chosen OpenFeint as a social platform. Integrating OpenFeint into MATHO was surprisingly easy. After inserting just a dozen lines of code we had a leaderboard and a friends list integrated. OpenFeint platform is customizable and includes even more features like public chat that can be also integrated easily. However we disabled some of them to better fit the game concept.

As a result we have a brand new, nicely designed version of the original game and we hope this new game will drive its success as well as being a pleasant surprise for players of the first MATHO edition.