Archive for November, 2011

BlackBerry PlayBook NDK Command Line Advanced Quickstart Guide

Saturday, November 26th, 2011

Phil keeps telling me I need to document what I do. After all, I’ve worked on a ridiculous number of platforms, and with many SDK’s.

So alright, I’m going to record and share my notes here. I’m going to assume you have your own build system figured out, and cover the highlights and key things you need to know and do to get native code up and running on the PlayBook.

Device Summary

Just a few highlights about the platform.

  • Dual Core 1 GHz ARM Coretex-A9 w/ Neon, 7″ 1024×600 IPS LCD (drool), PowerVR SGX 540 GPU
  • NDK Available. Work either through a custom Eclipse IDE, or entirely from the command line
  • Command line is a typical GCC cross compiler setup, with custom tools for packaging/deploying
  • Linux-like platform. EGL and GLES1/GLES2 available. OpenAL available (Notes)
  • BlackBerry packages are BAR files, which are actually JAR files, which are actually ZIP files
  • Was on sale for just $199 during the weeks surrounding “Black Friday”.

Step 1. Request Signing Keys

This is step 1 because how long it takes is entirely outside your control.

Go to (ALT) and make your request. Typically within a few hours you will get a series of e-mails containing .csj files, so if you’ve previously downloaded the SDK, you’ll be waiting a while before you can test on device. More details here.


For times like these, I like to create a text file containing the signing code, and put it alongside the signing keys. Yes, technically that partially defeats the security purpose of the keys, but keys and signing is usually such-a-pain.

Step 1b. Apply for a Blackberry AppWorld Vendor account

This also takes a while, so do this early to get in the queue sooner.

You will eventually get an email asking for a scan of government issued ID such as a drivers license, or business related documents (to prove you are real). If you have these ready, you can respond to the request quickly.

Payments are via Paypal, so you will need a valid Paypal account to be paid.

Step 2. Get the NDK

Yeah! You can do it! Click them links and go go go!

Notably, the downloader tries to install some Akamai service thingy. I couldn’t get this working, but that’s okay. There’s an option to say “this did not work” in the popup box, and after the popup closes there’s an option to download directly without Akamai. Use it.



Thursday, November 10th, 2011

Enough of this non-game talk.

The past month has been extremely good for progress. I did not meet my goal for the month, but I’d be silly to complain. Yadda yadda ya.

Against my better judgement, I’m going to stop beating around the bush and show you:

A mish-mash or random objects sitting in some sculpted terrain. Subtle glow. Vignette blur.

That’s cool Mike, but what is it?


Wait Mike, you could have done that in a day using Unity? It would be faster!

So? What’s your point?

I’m a fairly capable (and technical) coder, and something I’ve wanted to do was code the 3D tech for a game. What I have after a month is nowhere near as cool as Unity or UE3, but it is comfortable and capable for me. So yes, I’m working in C++ writing OpenGL rendering code and shaders. Why? Because that’s what I’m comfortable in.

Oh, and it runs on mobile too.

Running on a low cost (~$100) Chinese Android device featuring an ARM MALI-400 GPU

There really isn’t any significance to this above device, aside from the cost, or perhaps its own insignificance. Like what Smiles became, I’m testing my code across a plethora of modern devices as I go along.

I am not particularly targeting this for Moblie. If anything, PC is my primary target. In working on the tech though, I’ve found that by changing the target platform regularly, I find issues with code that I would not have discovered until much later.

My regular test devices include:
– PC (Windows Desktop) with an NVidia GeForce GTS 240 GPU (custom, my workstation)
– PC (Windows Desktop) with an AMD Radeon HD 6670 GPU (custom, my standing desk PC)
– PC (Windows Notebook) with an Intel HD 3000 GPU (Lenovo X220, my laptop)
– Phone (Android) with a PowerVR SGX 540 GPU (Nexus S, and my phone)
– Tablet (Android) with an ARM MALI 400 GPU (Onda VX610W)
– Tablet (Android) with a Vivante GS800 GPU (Window N50 DT)
– Tablet (webOS) with a Qualcomm Adreno 220 GPU (HP TouchPad)

Notably absent are iOS devices and a device featuring a Tegra 2, but as you can see the goal here was to cover every serious GPU vendor today. I’m currently only interested in shader capable GPUs that benchmark equal or faster than an iPhone 3GS (PowerVR SGX 535). At the present time, there are no plans to support fixed function rendering (Intel GMA 945, PowerVR MBX, Wii, PSP).

The thought is by having a device on hand featuring every major GPU, I’ll be able to find the most ideal and cross platform friendly way to render things. I would still like to get my hands on an NVidia Tegra based Tablet, a PlayBook, an Xperia Play, and something with a parallax barrier display. But unless I can find one stupid cheap ($100), I wont be buying them any time soon.

Though I have all these devices and am regularly testing against them, I’m not optimizing for mobile yet. Yes, I will eventually do tablet and mobile versions, but I am starting with the PC. The variety of devices are here as a sanity test for my code. If it runs everywhere, unplayable framerates aside, then it works.

That’s cool Mike, I see you’re still a porting nerd.

What are you actually making though?

I’ll tell you when you’re older.

Oh come on!

Alright, here’s a mockup I made back in 2009.

Apparently I've been designing and redesigning this game since before I started Smiles

That but better.

What does the post title mean?

Reinventing? Apparently a few things.

The main one is how I typically work. I was going to sit on this, wait and keep working until it was just right, then do a big push. That sucks. It takes forever and I build no buzz/interest prior to the launch of the game. So fine, lets not repeat Smiles’ mistakes.

The other is that I’m building a story driven game. I have a story I want to tell inside a game world, and I still plan to do this. However, it’s going to take me a while to get that far. According to my latest math, the soonest I’d be able to release was going to be early 2013. Yuck.

So let’s change that.

Now this doesn’t mean I’ll be releasing something tomorrow, but the plan is to make something available publicly far sooner. My goal is still to make this story driven game, but I’m going to make another game too, using much of the same content. In a sense, an expanded testsuite for the game I want to create. Less focus on the continuity, but a definite focus on how it plays, how it looks, and in time entertaining in its own right.

This here is the first step. Hello, yes, I am working on something. And over the next few months, it’ll start becoming something.

Smiles for Kindle now Available!

Wednesday, November 9th, 2011

Hey look what finally came out!

Hey look! Somebody liked it! Oh wait, that was me

Here’s a video.

Without spoiling it, I’m very happy with how it’s selling so far. 😀