This article comes to us via Leigh McRae. A veteran game developer working with the PlayBook NDK, it gives an honest look at both some of the pleasant surprises and frustrations experienced while porting a game to the PlayBook for the first time....
Today I found myself with some extra time on my hands so I decided to send Kevin a small email letting him know my initial experience with developing for the Playbook using the NDK. After receiving the email Kevin asked if I would be willing to expand on it. So I opened up my Open Office and wrote a little piece.
Just a little background about myself. I have been in the 3D industry for about 20 years, 15 of which have been in the game industry directly. I worked on PlayStation 2 and Xbox titles such as Oni, Max Payne and The Warriors. I left the big budget console industry to start Lone Dwarf Games Inc and ended up making BlackBerry games in early 2009. The first game I released was Wrath, a retro shooter.
Currently I'm in the process of finishing up porting my first game to the Playbook. Tank Recon 3D initially came out on BackBerry OS6 almost a year ago and the game was written purely in Java. Tank Recon 3D was my fifth game on the BlackBerry platform and I had accumulated enough to put together a suite of tools (game engine) which I called Odin. Odin uses Java to target BlackBerry, Android, PC, Mac and Linux. Since the Playbook was going to be dropping Java and moving on to native development (NDK), I decided to port my game engine Odin to include C/C++. This would open my game development to just about every platform. The initial port took about one month before the game was playable on a PC running Windows. Once the Playbook NDK came out in the summer of 2011 I would be ready to do the port.
Summer came and went. Honestly, I was almost done with BlackBerry at this point. While I waited I decided to improve the game and add more content to it. Later I decided to port the game to iOS. The port to iOS was actually pretty painful as there is so much to learn. The last Apple I did any programming on was the Apple IIe, so I was pretty much out of touch. I had to learn the Mac OS and the development tools and Objective C to boot. It wasn't that any of these things were hard to learn, it's just that there was so much you had to learn at once it could be frustrating.
October rolls around and I get an invite to beta the NDK on the Playbook. On top of that I can get a Playbook for $299! A quick trip to BestBuy and the port is back on. I get home with my new Playbook and check it out. I was shocked as to how good it was. I actually showed my wife how how good it was. I loved just about everything about it except the power button. Seriously, someone needs to be fired over the power button...
Enough of the story. Here is what I found. I had the game loading to the menu in the first day. That is incredible. The game was playable in the first 2 days. I doesn't get any better than that. On top of it, the game looked great and ran so fast without any modifications. I'm considering increasing the quality of the terrain in Tank Recon 3D because I know the Playbook can handle it. Overall I am very happy with the how the port to the Playbook has gone and how well it has performed. Great job RIM.
Here are some of the highlights as to why the port went so well. The tools installed without any problems at all. I was able to get a sample project up an running pretty much right away. The NDK allows you to use a wifi connection instead of a usb. This might not sound like a big deal but most mobile developers will agree that using a usb cable is a real pain. They are never long enough. Since the tools are based on Eclipse, I didn't have to learn a new tool set either. That was huge. There are some bugs with the IDE but all in all it's a very good first release of the tools.
RIM is providing support for C/C++, OpenGL ES, OpenAL and POSIX. Right there you have covered what I would say is close to 80% of the work needed to port a game. It is pretty common practise to develop your game on a PC where the environment is very mature and the work flow is much faster. Then you port it to your different platforms. The amount of code needed to support the Playbook platform was the smallest, even smaller than it was for Windows. Really there wasn't much that needed to be changed to get the PC version to work on the Playbook. The biggest changes I did were with supporting a touch screen and showing a dialog for the user to enter a high score.
RIM has embraced such open source goodies as Lua and Boost. My Lua fu is pretty good and Odin uses it all over. I love that RIM has made no attempts to block me from using Lua and on top of it all has actually done the work to make sure it runs on their platform. Boost also worked without a problem. Great job RIM.
On the down side. The docs are really lacking from what I have seen. Honestly most of the docs I see are QNX bragging about it's OS or low level stuff that most programmer aren't going to be worried about. I keep trying to figure out how it all fits together. Yesterday I tried force myself to read through as much of the docs as I could. Surely all will become clear but eventually I just wanted to throw myself on a butter knife. Seriously. They need to get some better docs with a good high level overview of the platform.
I have had people tell me that they picked up a Playbook and took it back not because they didn't like it but because there were no apps for it. RIM really needs to make sure that developers are taken care of and finally here we come to why I have the time to write about my experience today.
Yes RIM has done a great job getting 80% of my port done for me. It's that last 5% that nailed me. Right now I am having a problem and have spent 2 days working on the problem. I have posted on the Native SDK for BlackBerry Tablet OS and as of writing this I still have no response. I find this shocking. I thought for sure there would be someone from RIM posting within a couple hours with an attempt to lend some level of help. It's not like there is much activity on the forums, there are only two pages of topics! At some point I'm going to put this port aside and finish the iOS port.
I know I am not Electronic Arts or Blizzard and this might sound like a small dev just being bitter. The thing is that if you list all the top games on the mobile platforms, you will have a list of Indie Developers. Yes I know RIM isn't a gaming platform but either was iOS when it came out and now look at all that revenue.
- Leigh McRae, Lone Dwarf Games, Inc.