Cross-platform Game Development for Mobile & Web CODY NGUYEN Mobile Game Developer Vinova Pte Ltd [email protected]
May 13, 2015
Cross-platform Game Development for Mobile & Web
CODY NGUYEN
Mobile Game DeveloperVinova Pte Ltd
cross-platformwrite once, run on multiple platforms
Benefits of
cross-platform game development
Less skills required
• Native game development for different devices requires different skill sets.
• Less skills means more focused & efficient
More gaming devices, less code
• Gaming devices are more and more diverse
• More devices means more audience
Fast development & maintenance
• Game requirements change every day
• One effort covers all platforms
An overview of
video gaming platforms
Video gaming platforms
• PlayStation• XBOX• Wii
• Native game clients
• iOS• Android• Windows
Phone
• Flash• Native Client
(Chrome Only)
• HTML5
Web Mobile
Console
Desktop
Video gaming platforms
• Flash• Native Client
(Chrome Only)• HTML5
• iOS• Android• Windows
Phone
• PlayStation• XBOX• Wii
• Native game clients
Web Mobile
ConsoleDesktop
Why
WEB & MOBILE ?
Web & Mobileis
ONE
cross-platform game
approaches
HTML5
• Run on PC & mobile browsers
• Run as wrapper apps on mobile
Native Mobile
• Write in C/C++ for mobile, compile to JS to run on browsers
• Write JS bindings for mobile and browsers
Browsers are improving
• 2D & 3D rendering• WebSocket• Web workers• Audio
JavaScript is improving
• Race among JS engines (V8, SpiderMonkey, Nitro) is good for JS performance
• JS runs large code faster
JavaScript meets C/C++
• Compile C/C++ to JS with Emscripten• Compiled code is faster than
handwritten code
Even faster with asm.js
• Strict subset of JS, optimized for compiled code
• Without asm.js, 10x slower than native C/C++
• With asm.js, half as fast (comparable to Java, C#)
• Will get even faster
Even faster with asm.js
Source: http://kripken.github.io/mloc_emscripten_talk/#/28
HTML5 is an
observable trend
Everybody is shifting to HTML5
• Google, Microsoft, Apple & Mozilla are pushing for HTML5
• Game pioneers (Epic & Unity3D) too
Native mobile
Cross-platform game engines
and more
Why 2D?
• Target mobile devices• 3D camera is not effective on small
screens• Reduced development effort & time.
The Cocos2D Ecosystem
Cocos2D
• 2D game ecosystem• Open source (MIT lisence)• Great community
What’s in there
What’s in there
Who’s in there
Why is Cocos2D good for cross-platform game
development?
Cocos2D-x / -iphone• C++ / ObjC API• JavaScript bindings• Runs on iOS &
Android
Cocos2D-html5• JavaScript API• Runs on WebGL-
enabled browsers
JavaScript = common language
The 2 approaches
1. Start with Cocos2D-html5
• Write JS code, for browsers• Re-use JS code as JS bindings, for mobile
Re-use as JS bindings for C/C++ API
JS code access Cocos2D-html5 API
2. Start with Cocos2D-x
• Write C/C++ code, for mobile• Compile to JS, for browsers
C/C++ code for mobile first
Compile to JS via Emscripten & asm.js
Emscripten in Cocos2D-x is new
• Audio is not supported yet• Cocos2D-x lib is not yet validated with
asm.js• Screen resolution need to be hardcoded
for now
It’s getting better everyday
• The Cocos2D-x team are improving Emscripten support
• Mozilla, Unity3D are working on asm.js & Emscripten improvement
To sum up
Thank you