Vous êtes sur la page 1sur 41

Introduction to BlackBerry 10 NDK

for game developers


JAM 380
Aaron Ardiri, Julien Donguy, Stefan Diem
5 6 February, 2013
Development Platform Freedom
2
Open Industry Standards
3
Commitment to Open Source
4
http://blackberry.github.org
Code Sample: Main Entry Point
5
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char **argv)
{
fprintf(stdout, Hello World\n);
return EXIT_SUCCESS;
}
BlackBerry 10
6
Integrated Social Beautiful
BlackBerry Platform Services
low level integration with the BlackBerry platform
7
BlackBerry Platform Services
8
overview

the BlackBerry Platform Services (BPS) library provides an application
with a single consistent interface to a number of different services during
the execution of the application.

- universal event management
- user interaction working with the navigator
- input/output (sensors, audio, LED, screen, multimedia)
- device information, locale and payment services
- network status and geo-location


BPS: Event Loop Code Sample
9
for (;;)
{
bps_event_t *event_bps = NULL;
bps_get_event(&event_bps, timeout); // -1, forever
if (event_bps != NULL)
{
event_domain = bps_event_get_domain(event_bps);
if (event_domain == xxx)
{
// request event information within the domain
}
}
}
BPS: Platform Services Template
handling {service} events

{service}_request_events({param}); // request events

then capture the appropriate {service} events

event_domain = bps_event_get_domain(event_bps);
if (event_domain == {service}_get_domain())
{
// handle the {service} event


10
BPS: Navigator
handling navigator events

navigator_request_events(0); // request events

then capture the appropriate navigator events

if (event_domain == navigator_get_domain())
{
e_id = bps_event_get_code(event_bps);

11
BPS: Navigator Events
navigator events of use for game developers

NAVIGATOR_EXIT
NAVIGATOR_SWIPE_DOWN
NAVIGATOR_BACK
NAVIGATOR_WINDOW_STATE
NAVIGATOR_ORIENTATION_CHECK
NAVIGATOR_ORIENTATION
NAVIGATOR_LOW_MEMORY
...
12
BPS: Navigator
invoking other navigator services

navigator_invoke(http://developer.blackberry.com, NULL);
navigator_invoke(camera://photo, NULL);
navigator_invoke(settings://about, NULL);
navigator_invoke(videos://recorded, NULL);
...
13
BPS: Screen and Window Handling
composite window handling

the BlackBerry 10 platform provides a composited windowing
API (low level) which allows the creation of a windows and
defining the appropriate properties (colors, depth, dimensions).

screen_create_context(&scr, SCREEN_APPLICATION_CONTEXT);
screen_create_window(&win, scr);
screen_set_window_property_iv(...);


14
BPS: Screen and Window Handling
creating a 1280x768, 16bpp 565 (RGB) window

int param = SCREEN_FORMAT_RGB565;
screen_set_window_property_iv
(win, SCREEN_PROPERTY_FORMAT, &param);

int rect[] = { 1280, 768 };
screen_set_window_property_iv
(win, SCREEN_PROPERTY_BUFFER_SIZE, rect);
15
BPS: Screen and Window Handling
FrameBuffer

for old skool computer graphics enthusiasts a pixel
FrameBuffer can be easily obtained from the window object
allowing for the development of retro games and emulators.

screen_create_window_buffers(win, 1);
screen_get_window_property_pv(win,
SCREEN_PROPERTY_RENDER_BUFFERS, (void **)&pFB);


16
BPS: Screen and Window Handling
Open GL ES 1.1 or 2.0

to take advantage of the hardware accelerated 3D graphics
(Open GL ES 1.1 or 2.0) simply use the standard eglXXX
API calls to initialize the environment.

#ifdef USING_GL11 #ifdef USING_GL20
#include <GLES/gl.h> #include <GLES2/gl2.h>
#include <GLES/glext.h> #endif
#endif


17
BPS: Screen and Window Handling
handling screen events

screen_request_events(screen_ctx);

then capture the appropriate screen related events

if (event_domain == screen_get_domain())
{
event_scr = screen_event_get_event(event_bps);
screen_get_event_property_iv(event_scr,
SCREEN_PROPERTY_TYPE, &e_id);
18
BPS: Screen and Window Events
screen events of use for game developers

SCREEN_EVENT_POINTER
SCREEN_EVENT_MTOUCH_TOUCH
SCREEN_EVENT_MTOUCH_MOVE
SCREEN_EVENT_MTOUCH_RELEASE
SCREEN_EVENT_KEYBOARD
...
19
BPS: Sensors
handling sensor events

if (sensor_is_supported(sensor_type))
sensor_request_events(sensor_type);

then capture the appropriate sensor related events

if (event_domain == sensor_get_domain())
{
e_id = bps_event_get_code(event_bps);
...

20
BPS: Sensor Events
21
sensors that may be available (check before use)

SENSOR_TYPE_ACCELEROMETER
SENSOR_TYPE_MAGNETOMETER
SENSOR_TYPE_GYROSCOPE
SENSOR_TYPE_AZIMUTH_PITCH_ROLL
SENSOR_TYPE_ALTIMETER
SENSOR_TYPE_TEMPERATURE
SENSOR_TYPE_PROXIMITY
SENSOR_TYPE_LIGHT
...
BPS: QNX Sound Architecture
22
low level audio and multimedia playback libraries

- ALSA (Advanced Linux Sound Architecture)
- low level mixing
- PCM (Pulse Code Modulation) audio

- multimedia renderer
- supporting multiple formats: .mp3 .mp4 .avi and .wmv files

https://github.com/blackberry/NDK-Samples/tree/next/VideoPlayback
https://github.com/blackberry/NDK-Samples/tree/next/PlayWav

BPS: Network Status
23
handling network status events

netstatus_request_events(0);

then capture the appropriate network status related events

if (event_domain == netstatus_get_domain())
available = netstatus_event_get_availability(event_bps);

to check the network status at any time:

netstatus_get_availability(&available);
Scoreloop Integration
24
social integration
user profiles
challenges
achievements
leader boards and high scores
virtual goods and currency
Games
3
rd
Party Game Engines
25
Simple Directmedia Layer
26
GNU LGPL v2 License



FrameBuffer and hardware accelerated Open GL
audio and multimedia playback
threads, timers and endian independence
http://www.libsdl.org
gameplay
27
Apache 2.0 License


hardware accelerated Open GL scene graph
audio and multimedia playback
input, sensors, physics and particle engines
http://www.gameplay3d.org
Cocos2D-X
28
MIT License


hardware accelerated Open GL
scripting support (JavaScript, LUA)

http://www.cocos2d-x.org
Marmalade
29
Commercial License


hardware accelerated Open GL (3D)
audio and multimedia playback
numerous licensing models cross platform
http://www.madewithmarmalade.com
Game Developer Highlights
lets take a look at some regional indie developers
making the most of the BlackBerry 10 platform.
30
Developer: Tactile Entertainment
31
ChasingYellow

Cocos2D-X
Leader boards
Challenges
Achievements (entry point, add friend, rematch)
Fruit Blitz

C++ with Open GL ES 2.0, Open AL
Leader boards
Challenges
Achievements (entry point, add friend, rematch)
Progress Sync
Developer: Tactile Entertainment
32
Dyna Stunts

C with Open GL ES 1.1, Open AL
Leader boards
Custom Profile Image
Achievements (entry point, add friend, rematch)
Developer: Tactile Entertainment
33
Distribution and Marketing
34
how to sell and make your games a success
Application Publishing



Publishing to BlackBerry World

BlackBerry World is the on-device distribution catalogue
a publishing account is required to use BlackBerry World
free to sign up
royalty share between BlackBerry and developer (70% developer)
provide payment details (PayPal, et al)
create product (metadata) and release BAR files
480x480 icon, featured image, screenshots and description




Application Monetization



Pre-mium, free-mium or combination?

many methods to monetize; all options are available to you

paid applications
free applications with in-app purchases
free applications with advertising



Built for BlackBerry
37
Application Certification

recognized high quality
the official stamp of approval
give customers peace of mind
improve visibility in BlackBerry World
For More Information
JAM 307: Tuesday 16:15
promotion and monetization strategies with BlackBerry World
JAM 347: Tuesday 16:15
leveraging BlackBerry services: BBM and Scoreloop
JAM 351: Tuesday 17:30
leveraging BlackBerry services: ad service and in-app payments
JAM 383: Wednesday, 09:30
native application porting and rapid development with Marmalade
JAM 389: Wednesday, 10:45
porting iOS and android native to BlackBerry 10
JAM 382: Wednesday, 12:45
open source game middleware
JAM 390: Wednesday 14:00
BlackBerry 10 games: HTML5 vs Action Script 3
38
For More Information
Native Development Resources
http://developer.blackberry.com/native/

BlackBerry Developer Blog
http://devblog.blackberry.com/

BlackBerry Developer YouTube Channel
http://www.youtube.com/user/BlackBerryDev

39
Dont Forget
Download the Mobile Conference Guide from BlackBerry
World. Search for BlackBerry Jam Europe!
Complete your session surveys in your conference portal
or on your BlackBerry 10 device using the Mobile
Conference Guide.
Join us at the BlackBerry Jam Europe Appreciation event
tonight in the Europa Foyer on the RAIs ground floor.


40
THANK YOU
JAM 380
Aaron Ardiri, Julien Donguy, Stefan Diem
5 6 February, 2013

Vous aimerez peut-être aussi