Porting your iOS game to Blackberry Playbook (and future BB10 phones)

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.

The basics

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. Continue reading

Porting my game engine to the Playbook

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

Getting Started Again… True Megatexture

Greetings everybody!

It been a long time since this blog was updated, I know! Well I was kind of busy lately. Looking for a job, finding a job, then doing the job and finally trying to get some free time for summer vacation and free time projects. You know that getting a new job always makes things a bit harder until you get comfortable. The good thing is that now work has stabilized and I finally start to have some free time.

I’m not going to write a lot here at this time. I just wanted to let you know that I’m well and good. I’m also planing to start working on Sylphis3D again in a more committed and persistent manner.

Regarding Sylphis3D I would also like to inform you that I’m working on something big! You probably know my opinion on megatexture on terrain. Well I managed to think of an algorithm to apply megatextures on any kind of geometry. Yes you heard correct! The new Sylphis3D will have totally virtual texturing.

You will be able to apply any size texture on any kind of mesh with no impact on performance! Would you like to apply a 4096×4096 texture on that talisman the player wears just in case someone gets so close to see it? It ok! It doesn’t hurt! Go ahead! It’s up to you! At the moment I am at implementation stage and things seem that will work out just fine! Stay tuned…

The wait is over… Sylphis3D is open source!

I just release the source to Sylphis3D! Check out the story at the Developer Network.

The wait is over! Sylphis3D is officially released under the GNU GPL ver.2 (with the classpath exception for those that need closed source solutions). The engine weights at around 45000 lines of source code written in C++ and Python. The source code can be obtained from the download page of the [sourceforge.net project page](http://www.sf.net/projects/sylphis3d). Latter on the source will be added to the subversion repository for easier access. The source code compiles under Microsoft Visual Studio .NET 2003. The makefiles and sconsturct files, for compiling with GCC, are out of date. However the mapcompiler is up to date. The source would compile out of the box. Continue reading

HDR Procedural Skies

The under development branch of Sylphis3D is going to support high quality terrain rendering. At the moment the terrain rendering code is in place and produces some very nice views! However the sky support was limited to skybox rendering. At first I thought I would just go for some HDR textured skybox. This was good until I reallized that it would be stupid to have an engine support realtime shadowing and lighting and have the outdoor areas with static lights, because of a static skybox. It was obvious that a dynamic sky was needed, so that day/night cycles can be simulated.

After a lot of experimentations and book studing about light scatering and stuff, we had results! Continue reading

How to do good bloom for HDR rendering

One thing that makes HDR rendering impressive is the bloom effect. In fact even if bloom is in a sense decoupled from HDR rendering, it is often confused with HDR. There are 3d engines out there that advertise bloom for HDR rendering, which is nonsense. You can have HDR rendering without bloom, and you can have bloom without HDR rendering. What makes the sweet, sweeter is the combination of the two. Actually if you present the average gamer HDR rendering without bloom, it will be hard for her to understand the difference between LDR and HDR rendering…

This means that you are going to need good blooming in your engine to really have that “WOW” thing coming out of peoples mouths. Before writing the Sylphis3D HDR rendering implementation I had read some articles about blooming but the results were never satisfactory. I’m going to present you here the method I used and that really makes a perfect bloom that is also faster to perform and uses less memory. Continue reading