Bringing a game from PC to iOS
This is my first post to http://idevblogaday.com/, I’ve been waiting since November so I’m pretty excited about writing to a broader audience =P. Even though I only have one product on the App Store I have gathered some knowledge on how stuff works to get there.
I’ll start by talking a bit about how we made our PC game Vizati to iPhone.
When we started, this represented our chance of making games and putting ourselves into test. Without any pre determined rules and/or a major company dictating what to do we were able to have full creative control to try and do something a bit different.
Vizati is a casual puzzle game with a story as a background. The game is now available for Windows, Mac, iPhone, iPad and Windows Phone 7. Developed by only two people, it thankfully received several good reviews.
Launching for Windows
We started out building for Windows and Xbox360 because it was a very well known platform for us; we had tools and knowledge from other games so it felt right.
We launched the game on June 6th; and got some very positive reviews, being its freshness, graphics and music the most acclaimed features.
Right away we started making plans for bringing the game to iOS devices, iPhone, iPad etc. The mobile devices felt like a great platform for such a game.
First speed bump
For the PC we had built the game engine using XNA framework as a base, it is DirectX based but it uses .Net languages which are a no go for iOS devices of course. It was stable enough to ensure a high compatibility with all the different machines out there, and we never thought at start to make it for any other platforms. This was our first mistake.
For the next 3 months I had to rewrite all the game codebase to C++ including building the engine itself using render API OpenGLES. [Dedicated Post]
During these 3 months we also had to adjust the game to the iPhone screen size. Just out of curiosity the native resolution on PC is HD, 1280×720 and the iPhone native is 640×426. [See more on iOS hardware]
At first we considered using the same images and using the same feature we used on PC to automatically scale the game to the screen size. But doing that would be a tremendous effort to the device since the iPhone screen size was almost 3 times smaller; memory and CPU cycles are more limited in mobiles so we had to make a smarter approach.
One of the problems was the game being extremely slow on older devices. The amount of particles and animations on some parts was a total killer. I eventually had to rewrite my primitive drawing code to batch stuff as much as possible
Another problem was the aspect ratio, which would lead to either stretching the game vertically thus distorting the images or making it letterboxed.
The screen is already small so it would be a mistake not to take advantage of all the area. Rita had to redo some of the art to fit a different aspect ratio.
Fortunately touch felt a very natural way for controlling the game, even more than a keyboard. Using the fingers to rotate, shake and flip the cube feels right and natural.
The iPad version was easy once we had the iPhone version made, basically we just had to bundle high-resolution images since its screen resolution is 1024×768. This version features the HD graphics that so many loved in the PC version.