Continuing after my latest post about porting existing iOS games written in C/C++ to the Android platform, here I am again writing about my latest porting endeavor that brings Pop Corny to the third platform! Ever thought of porting your iOS game to the Blackberry Playbook? Well, here I will share some insight of what to expect.
If you are like me you will probably think that the Playbook has something to do with the tech that used to run Blackberry’s phones. This misconception was so strong in me that I didn’t even consider a port to it. The truth is however, that the Playbook is based on the new platform that Blackberry is creating based on the QNX operating system, and will also be used on the BB10 phones. Things started to look better on the porting front with these info, but there is always a fear that Blackberry could be Google and force everything to Java and only support native after a long time has passed. It turns out that things are much better than I expected. Not only Blackberry allows you to write native apps, but its Native Development Kit (NDK) is a complete solution for developing on the platform. Not like Android for example, where the NDK is just a crude exposure of the native Android’s build system, supports minimal functionality and requires Java calls for most stuff. On Playbook you can write a full native app and never look at Java again. The NDK will provide C level APIs for all that you are going to need. From screen handling and input, to in-app purchases.
The Blackberry provided development environment is QNX Momentics, which is based on Eclipse, but also you can easily do everything with command line tools if you prefer. I chose to go with Momentics even though I find Eclipse slow and sluggish, because it is very nicely setup for native C/C++ development (with debuggers, profilers, etc) and I wanted to see how far it will get me until I started missing the command line. Surprisingly, it did all the way. Had no problem with it, which is a first for me and Eclipse.
You also get an emulator for trying out your, code which is based on VMWare. This didn’t strike me a good thing because you have to buy VMWare to run it. Sure there is the VMWare Player version that is free, but you can use that only on Windows and Linux. The Mac users, like me, will have to use the 30-day trial of VMWare Fusion, or buy it.
Next I will go through the major porting areas to keep this consistent with my corresponding article for Android.
Since my last post you must already know that I was porting Pop Corny to Blackberry. I can’t hide that I was really impressed by the way the platform is engineered. You know you have done something right when it allows a developer that had never even used the platform, come in and port his game in 2-3 days. But that, coupled with the fact that the game actually runs better than it does on the platform that is was originally written for, makes for something really impressive.
To showcase what I mean, I recorded a video with the game launching in parallel on both my iPad 2 and my Playbook. Since on both platforms the game actually achieves 60fps its hard to notice the difference in game, but the launch sequence really shows the difference. The bottom line is that given 2 devices with almost identical hardware (the same Dual-core 1 GHz Cortex-A9), running the same game, with the game optimized using the iOS device and only later ported to the Playbook, the Playbook manages to launch the app (load all textures, decompress them and upload to GPU, load sound effects, etc) 30% faster! In my book.. this is a huge achievement.
What is also amusing is how that 30% is calculated including the time the Playbook wastes doing “pre-launch” animations like pulling down the other app icons, pushing the app thumbnails left and the launching the actual app. And still managing to launch faster! It looks as it is mocking at the other device…!
Below is the actual video, and if you would like to get Pop Corny it is now available on App World here.
The last few days I am a happy owner of a BlackBerry Playbook. The device was offered to me by RIM (thanks to Luca Filigheddu) in order to port Pop Corny to it. To tell you the truth I never owned a Blackberry device before, not to mention develop for it. It was a totally new experience, where I had no idea what to expect.
It turns out RIM has done an awesome job with Playbook and probably with its upcoming phones (just speculating I don’t know for sure). The system is based on the QNX operating system and it has strong support for standards and open libraries. I found myself right at home with it! I am going to come back with more details about the process (probably with an altdevblogaday article), but by cutting the long story short, I was able to port the engine with only native code (no java glue code like on Android) with OpenGL, OpenAL (even ALUT), freetype, etc all coming bundled with the system. Continue reading
So you created a C/C++ game for iOS that gives joy to iPhone and iPad gamers from around the
world. How can you deny this joy from all loyal Android users? I can’t, so I had to port Pop Corny to the
Android platform. It was a very interesting experience, full of gain as I say, and I think it would be nice to share some information and knowledge on the subject. Continue reading
Yeap it is true! Pop Corny is finaly available on Android devices. It was a huge effort trying to support all those diverse devices, but it is going better than I expected. Pop Corny is available since yesterday and until now I only had one complaint for not running. I consider this a success. 🙂
Successful iOS independent game Pop Corny comes to Android on July 15, 2012
Larissa, Greece – NLOGN today announced that Pop Corny, the greatly successful indie game for iPhone and iPad, will be released for Android devices on July 15, 2012. Free to download, Pop Corny challenges players to test their reflexes, targeting skills and accuracy as they make popcorn by shoot corn kernels to feed Mr. Pop Corny’s eternal hunger. Set inside a theater or outdoors in the countryside, Pop Corny is a simple, yet highly addictive casual game with gorgeous cartoon artwork, and stimulating salsa beat music. Continue reading
Lately I am spending some of my time into porting my game engine to the Android platform. It is a rather refreshing, interesting, rewarding and also frustrating experience. All at the same time. The process helped me learn new lessons and remember some old ones I had forgot.
First of all I realized once again that we people get comfortable. And oh boy we get comfortable! I remember myself a few weeks back being frustrated with XCode 4 and how it was slow and sluggish compared to XCode 3, how I don’t like the new environment, etc. Well, no more! All it took was a few days in Eclipse. Dialog windows popping up behind the main window, >500ms on most clicks on files, kitchen & sink user interface, can go on forever, and all you really basically get at the end of the day is just a smart editor and debugger that only works for the Java part. Compare that to XCode with its memory profilers, time profiles, filesystem profilers, network profilers, battery optimizers, the very helpful OpenGL state inspector and logger, there is really no relation. I had forgot how it was to develop on other platforms, and how amazed I was initially with the special treatment that Apple gives to developers with its tools. What amazed me more is that I don’t come from such a “comfy“ background. The initial version of Sylphis3D was developed in parallel on Linux and Windows, mostly using no IDE at all, and I never found the tools a problem. As it turns out hardship builds character, while comfortness breaks it.
Portable software is good for you
Building portable software is highly valued in my mind, because it helps you be a better software engineer while making better quality software at the same time. You get to learn many different development environments, understand their design decisions, workaround platform differences, think further ahead, etc. All these require you to get a deeper understanding of your code and your dependencies. Always pushes towards a more organized code structure and reveals bugs that would otherwise go unnoticed until Murphy’s laws decides it is the worst time to trigger.
So if you are a software engineer, don’t get too comfortable with your development and target environment. No matter how attractive that environment makes it! Make your code portable, to keep yourself and the code in better shape. After all wouldn’t it be cool to run your code on a future toaster?!
If you follow me online you probably know that the last weeks I have been porting Pop Corny to Android. I can say that it is a great experience and I myself can’t wait to put it out there. I am also going to blog about my experience and will try to provide any valuable information about the process. However the plague of Android that hears to the name “fragmentation” is creeping in, and I need your help to fight it!
Yes that is right, if you have and Android device you can be my soldier. Do you have what it takes? Are you prepared to suffer finger damage from extreme screen swiping? Do you know the history of pop corn? Are you prepared to play a game that will probably crash every 5 minutes and not throw the device out of the window? You do?! Just register on the form and I will contact you with more details:
To tell you the truth this is going to be more of an ALPHA-BETA testing phase as I don’t have an Android device myself. I did try out 2-3 real devices but it is quite likely to take some time until I can have a stable beta running on most devices. This will require patience on your side. If you are not interested yourself, tell a friend. I will need all the help I can get! If you also happen to have an old device (new ones will do too! 😀 ) that you don’t mind sacrificing in the name of game development, I would gladly accept it as a testing device, and you would gain a special place in the game’s credits and more importantly in my heard. For this contact my directly at my email: harkal at gmail dot com.
Today is somewhat an important day, as it is exactly 60 days since the day I can officially call myself a published indie game developer! It was February 3rd when Mr. Pop Corny rushed (actually it crawled thanks to Apple, but I will get to that below) into the AppStore after an 8 month development time, and the dream came true. So it seems now it is a good time to share some of my experiences regarding launching on the AppStore. I will try to provide some insight that I wish I had from other projects prior to launching my own.