Adding Gamepad Support to Your BlackBerry 10 Game

Game Development

BlackBerry10_GamepadSupport

I’ve heard a lot of people claim that the gamepad is dead – doomed to be replaced by touch screens. I disagree with this sentiment.  There’s nothing wrong with mobile games using cool new control schemes that make good use of touch screens – but if I’m playing a game that was designed with gamepads in mind, like Shadowgun, why can’t I just use a real controller?

Well, now I can – and so can you. Check out gamepad support now being added in upcoming Unity 4 for BlackBerry 10:

TITLE_IMAGE

After years of being frustrated by touch screen gamepads, I’m excited about bringing physical gamepad support to the Native SDK for BlackBerry 10. By making use of the new Gamepad API features developers can make their games work with physical controllers, giving their players the tactile responsiveness they’re used to from consoles and desktop PCs. When this is combined with BlackBerry 10’s built-in HDMI connectivity, you end up with a console experience in your pocket!

Here is another video showcasing gamepad pairing instructions and a racer sample on GamePlay3D that now supports not only desktop gamepad support but also BlackBerry 10:

GamePlay3D_GamepadSupport

Before you get started implementing this in your own game, I want to answer a few of the most common questions people ask me about the API.

  1. What gamepads are supported right now?
    1. The MOGA Pro. (as of BlackBerry 10.1)
    2. The SteelSeries Free.
    3. The Gametel.
    4. The Wii Remote.  Note that currently only the core buttons on the remote itself are supported – that means no attachments and no motion controls, just the D-Pad and other buttons.
  2. If new gamepads come out, do I have to update my game to support them?
    1. No, you don’t!  When new controllers become available, we’ll update the mappings in a system update and your game will start receiving gamepad inputs from the new hardware.  Because the Gamepad API is an abstraction above HID, and because we map each gamepad’s unique HID report format to the Gamepad API, you don’t need to write any code that’s specific to a single controller.
  3. Do users need to install anything to set up or configure their gamepads?
    1. No.  The Gamepad API is integrated into the Screen library, the same library you are already using to handle touch, keyboard, and other input events.  All users have to do is pair their device through the Bluetooth settings screen for it to start sending inputs to your game.

We realize there are other gamepads out there and continue to work towards supporting as many devices as possible. If you know of a Bluetooth, HID-compatible game controller that’s not supported yet, please let us know in the comments. Meanwhile, the fact that you won’t have to change your code when we add more devices to the list means you only help yourself (and your users) by starting to use this new feature right away.

Here’s a tutorial that should get you up and running. It includes plenty of code snippets and is based on this open-source sample project, which started as a little app I whipped up to test the new API. It eventually turned into a demo of two-player connectivity and a configuration screen.  I hope you find it useful.

Please, for the sake of everyone who’s ever been frustrated by touch controls, try this new feature and leave your feedback – I’m eager to do what I can to help if you have any trouble.  Most of all, I’m looking forward to playing your games with a real gamepad!

Links:

About seanpaultaylor

With over 15 years of industry experience, Sean is an expert in advanced rendering using OpenGL and Direct3D . Sean is gamer and is very passionate about game development including advanced 3D graphics, audio, physics, animation. Sean is the co-founder and lead architect and developer of the cool new 3D gaming project called gameplay, a new open-source, C 3D game framework supporting both mobile and desktop platforms.

Join the conversation

Show comments Hide comments
+ -
blog comments powered by Disqus