Post on 23-Feb-2016
description
Get your iPhone game to 2,000 handsetsMikko UromoDirector, Developer Relations & OutsourcingGameHousemuromo@real.com
This session A little background What’s our approach Development details Hopefully time for some Q&A
Who we are
What we look like
What we do
So, you’re developing for the iPhone!
Smartphones in 2009Vendor Units ShareNokia 67.7 38.9%RIM 34.5 19.8%Apple 25.1 14.4%HTC 8.1 4.6%Samsung 5.7 3.3%Others 33.1 19.0%Total 174.2 100%
http://www.cellular-news.com/story/41792.php
Mobile sales in 2009Vendor Units ShareNokia 440.9 36.4%Samsung 235.8 19.5%LG 122.1 10.1%Motorola 58.5 4.8%Sony Ericsson 54.9 4.5%Others 299.2 24.7%Total 1,211.2 100%
http://www.gartner.com/it/page.jsp?id=1306513
Mobile is challenging Expensive Fragmentation Carriers Backfills
What’s our approach? Target the whole market Hide fragmentation Cost effective development & QA Support new devices from day one
No magic tricks …but close to a silver bullet Scalability is key EMERGE™ Guidelines
Choose your battles Low-end, old devices, coverage
requirements… Good game experience! Touch vs. keys Connectivity & social gaming Future benefits
How do we do it?
Develop the best version Best possible experience Don’t branch development Focus on touch & high-end No limitations!
Target the Other Devices Finish assets Optimize & fix bugs Make sure everything is scalable Get the game down to 64k Help automate post-production
Our tools
EMERGE™ A cross-platform game
development framework Used in 70+ titles 2,000+ devices supported iPhone, Android, J2ME, BREW,
Flash, DSi, Windows Mobile…
The framework Abstraction layer Native implementations of core API Pluggable modules Customizations Improvements help all games
Sample code#include “common.cjavai”#define FP 10
global int_array tileMap;
global void loadLevel() {tileMap = data_getIntArray_TILEMAP();for (int i=0; i<array_length(tileMap); i++) doSomething(tileMap[i]);
}
global void game_paint() {renderBackground();gfx_drawImage_SPACESHIP(shipX>>FP,
shipY>>FP, ALIGN_LT, 0);
}
Handset profiles One for each supported device Contains benchmark data Games and EMERGE adapt
automatically SKU can work on multiple devices
Resolution classes
Large source art
R6 / WVGA / MOTOROLA DROID
R5 / 480x320 / IPHONE
R4 / 240x320 / SONYERICSSON C510
R3 / 176x208 / MOTOROLA RAZOR
R2 / 128x128 / NOKIA 3200
Scalable layouts
Porting
The default build
Next stop: 64k
Interpolate!
In practiceStep 1:
SP3_DISABLE_CUTSCENE_BACKGROUNDSP3_DROP_LARGE_EVENT_ICONSSP3_DROP_BG_PROPS
Step 2:SP3_DROP_HIGHLIGHT_FONTSP3_DISABLE_KANJI_GRAPHICS
SP3_DROP_LARGE_TROPHY_ICONS
Step 3:SP3_DISABLE_INTROSP3_DROP_AUDIENCESP3_DISABLE_CAPTIONFONT
...
What our QA does Adjust three numerical “sliders” Possible to tweak SKUs manually
Porting as QA sees itDevice memory <= 300k:
SP3_DROPFEATURES_MEMORY = 10
Benchmarked FPS < 10:SP3_DROPFEATURES_SPEED = 8
Nokia N96:SP3_DROPFEATURES_MEMORY = 1
Samsung ZX20:SP3_DROPFEATURES_SIZE = 8
Porting as devs see it#ifdef USE_LESS_PARTICLES
#define MAX_PARTICLES 20#else
#define MAX_PARTICLES 400#endif
global void drawBackground() {#ifdef DISABLE_BACKGROUND
gfx_setColor(BG_COLOR);gfx_fillRect(0, 0, X_RES, Y_RES);
#elsegfx_drawImage_BACKGROUND(X_CEN, Y_CEN,
ALIGN_HCVC, 0);#endif}
The logistics QA takes less than 1h per handset Over 10,000 SKUs per game Build farm Track submissions & coverage Large-scale DB solution
The benefits Cheaper dev and post-production Better game quality 100% handset support Day one backfills & full back
catalogue support Customizations
The big takeaway? There’s more than the iPhone You can target the entire market
That’s it!
Questions? muromo@real.com