470 likes | 659 Views
Get your iPhone game to 2,000 handsets. Mikko Uromo Director, Developer Relations & Outsourcing GameHouse muromo@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.
E N D
Get your iPhone game to 2,000 handsets Mikko Uromo Director, Developer Relations & Outsourcing GameHouse muromo@real.com
This session • A little background • What’s our approach • Development details • Hopefully time for some Q&A
Smartphones in 2009 http://www.cellular-news.com/story/41792.php
Mobile sales in 2009 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
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
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_arraytileMap; global void loadLevel() { tileMap = data_getIntArray_TILEMAP(); for (inti=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
In practice Step 1: SP3_DISABLE_CUTSCENE_BACKGROUND SP3_DROP_LARGE_EVENT_ICONS SP3_DROP_BG_PROPS Step 2: SP3_DROP_HIGHLIGHT_FONT SP3_DISABLE_KANJI_GRAPHICS SP3_DROP_LARGE_TROPHY_ICONS Step 3: SP3_DISABLE_INTRO SP3_DROP_AUDIENCE SP3_DISABLE_CAPTIONFONT ...
What our QA does • Adjust three numerical “sliders” • Possible to tweak SKUs manually
Porting as QA sees it Device 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); #else gfx_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
Questions? • muromo@real.com