Nothing ruins a good mobile game like a bad user experience. Just because a mobile developer has written their game in MIDP and had success on other MIDP platforms, doesn’t mean they can throw it on another smartphone platform and expect good things. Certain aspects of the game will need to be tweaked in order to make it follow the UI paradigms that individual smartphone users are accustomed to. If developers don’t adjust for these nuances, they should expect to get slammed with negative reviews. On that note, let’s look at how to best develop a game in MIDP for BlackBerry® smartphones.
First things first: it’s important to note that unless you use a BlackBerry smartphone regularly, you’re unlikely to understand how your users are accustomed to interacting with applications on the smartphone. In this two-part post, I’ll try to help you understand the nature of the BlackBerry smartphone user and the impact that has on your game development.
Tip 1: Physical Device Keys
There are certain keys on BlackBerry smartphones that users will always expect to perform specific actions.
A) The Send key. This key will always cause the phone screen to be displayed. No special handling required here; the platform will perform this task automatically.
B) The End/Power key. This key will either end the current call, or if no call is in progress, will send the currently foregrounded application to the background. The backgrounding is handled automatically by the platform, but it’s important to note that the BlackBerry platform supports applications running in the background. This feature means that just because you’ve received a MIDlet.pauseApp() event, there’s nothing in the platform that explicitly suspends execution of the game; it’s your responsibility to go dormant when in the background.
C) The Menu key. In most applications for BlackBerry smartphones, this will bring up a menu with the default look and feel. Since many games have implemented their own in-game menu system, you should use this key as a trigger to display your menu. If you do not capture this key, the default menu will be displayed. The expected design pattern here is that you will implement a KeyListener, capture this key, using it as a trigger to pause the game and display your menu. If you wish to use the default menu system of the device, you can add menu items via CommandActions.
D) The Escape key. This key should always have the following behavior:
Tip 2: No Soft Keys
The concept of soft keys does not apply to BlackBerry smartphones. That is, you should not use any of the display area at the bottom of the screen for attempting to infer different meaning onto the keys listed in Tip 1. Those keys should always produce the behaviour listed in Tip 1.
Tip 3: Navigation
There are three primary input types particular to BlackBerry smartphones: the trackball, trackpad, and touch screen. Older BlackBerry smartphones supported a trackwheel on the right-hand side of the device, but that input mechanism will not be discussed here.
For game developers, the trackball and trackpad can effectively be treated as the same input mechanism: 4-way navigation (up/down/left/right) that will click / fire when pressed. This input mechanism is similar to the D-pad featured on many MIDP phones, making it pretty straight-forward and easy to work with; the aforementioned events are mapped to Canvas.UP, Canvas.DOWN, Canvas.LEFT, Canvas.RIGHT, and Canvas.FIRE.
BlackBerry smartphones with touch screens are different than the typical touch interface seen on other smartphones in that the screen is clickable, allowing for differentiation between the touching of the screen and clicking the screen. To ignore the clickable interface is in most cases a mistake. I.e. based on the learning the user has from all other applications on the smartphone, if your application responds to tap events instead of click events, the user will be confused.
Today we covered the basics of interaction and navigation. In part two of this post, we’ll dig a little deeper into the nature of the BlackBerry user and reveal the expectations they’re going to have for your game.