<ul><li>OpenKODE, Airplay </li></ul><ul><li>and the new reality of </li></ul><ul><li>“ Write Once, Run Anywhere” </li></ul...
Overview   <ul><li>What is OpenKODE? </li></ul><ul><li>What is Airplay? </li></ul><ul><li>OpenKODE - detailed overview </l...
Introduction to Ideaworks3D <ul><li>Founded 1999 </li></ul><ul><li>1999 – 2003: Technology Development (Vecta3D, Optimaze,...
Ideaworks3D recent Studio projects Dirge of Cerberus™ Lost Episode Final Fantasy® VII PGR ™  Mobile (native versions) Need...
What is OpenKODE? <ul><li>An open standard for mobile application portability. </li></ul><ul><li>A Khronos group initiativ...
What is OpenKODE’s problem set? <ul><li>Both embedded software developers and application software developers face fragmen...
OpenKODE fights fragmentation <ul><li>OpenKODE unifies interface to OS and drivers, and increases driver interoperability....
What is Airplay? <ul><li>A complete development and deployment environment for rich-media mobile applications. </li></ul><...
How does Airplay differ from OpenKODE? <ul><li>Airplay is an implementation of OpenKODE for every platform you’ll ever wan...
OpenKODE – detailed overview <ul><li>OpenKODE is actually two things: </li></ul><ul><li>OpenKODE Core  APIs: POSIX-like C ...
OpenKODE – How things fit
Why do we need trans-media APIs? <ul><li>Example: using a video stream as a texture. </li></ul><ul><li>Currently requires ...
Why do we need trans-media APIs? <ul><li>Handheld “GeoBlog” Concept </li></ul><ul><li>(courtesy of NVIDIA) </li></ul><ul><...
Trans-media APIs - detail <ul><li>Previously, EGL was an API for draw-surface management, associated with OpenGL ES. </li>...
OpenKODE Core <ul><li>“ The typical rule of thumb for a developer is that one-third of the total cost of development will ...
OpenKODE Core APIs <ul><li>OpenKODE Core provides source-level abstraction of common operating system services in an event...
OpenKODE Core – who provides it? <ul><li>OpenKODE Core has no implementation dependencies on the media APIs. </li></ul><ul...
OpenKODE Core – implementation // Symbian (assume main game class derived from required base class) TKeyResponse CMyAppCnt...
OpenKODE Core – implementation #include &quot;KD/kd.h&quot; int kdMain(KDint argc, const KDchar* argv[]) { while(1) { // U...
OpenKODE Core – limitations <ul><li>No binary format. </li></ul><ul><li>Still need to build each SKU within OS proprietary...
Let’s OpenKODE!
What is Airplay? <ul><li>A complete development and deployment environment for rich-media mobile applications. </li></ul><...
Airplay programmer workflow Windows  build Project text file (.MKB) Airplay MKB Python Script Programming IDE workspace Ai...
Let’s Airplay!
Metal Gear Solid™ Mobile Metal Gear Solid™ Mobile now released, Verizon and KDDI Winner “Best Game”, IMGA awards, Barcelon...
Thank you! <ul><li>Julian Jones </li></ul><ul><li>VP Business Development </li></ul><ul><li>[email_address] </li></ul><ul>...
Upcoming SlideShare
Loading in …5
×

Open Kode, Airplay And The New Reality Of Write Once Run Anywhere

5,022 views

Published on

A look at OpenKODE, and it's first widespread commercial implementation Airplay. This presentation was given as part of the OverTheAir event on 4th April 08, and included a large portion of "live coding".

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,022
On SlideShare
0
From Embeds
0
Number of Embeds
62
Actions
Shares
0
Downloads
99
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Open Kode, Airplay And The New Reality Of Write Once Run Anywhere

  1. <ul><li>OpenKODE, Airplay </li></ul><ul><li>and the new reality of </li></ul><ul><li>“ Write Once, Run Anywhere” </li></ul>April 2008 Tim Closs, CTO Mark Sheehan, Key Engineer Ideaworks3D Ltd.
  2. Overview <ul><li>What is OpenKODE? </li></ul><ul><li>What is Airplay? </li></ul><ul><li>OpenKODE - detailed overview </li></ul><ul><li>OpenKODE coding </li></ul><ul><li>Airplay - detailed overview </li></ul><ul><li>Airplay coding </li></ul>
  3. Introduction to Ideaworks3D <ul><li>Founded 1999 </li></ul><ul><li>1999 – 2003: Technology Development (Vecta3D, Optimaze, Airplay Online for Nokia) </li></ul><ul><li>2003 – 2005: Mobile Games Studio (N-Gage, BREW, Symbian, PocketPC) </li></ul><ul><li>2005 – 2008: Technology and Games </li></ul><ul><li>65 people today </li></ul><ul><li>Offices in London, Los Angeles, Kyoto </li></ul><ul><li>Co-editors of OpenKODE Core spec, and provided initial API draft to Khronos working group. </li></ul>
  4. Ideaworks3D recent Studio projects Dirge of Cerberus™ Lost Episode Final Fantasy® VII PGR ™ Mobile (native versions) Need For Speed ™ Most Wanted <ul><li>The Sims 2™ Mobile </li></ul>System Rush™ Evolution Metal Gear Solid™ Mobile
  5. What is OpenKODE? <ul><li>An open standard for mobile application portability. </li></ul><ul><li>A Khronos group initiative. </li></ul><ul><li>Royalty-free, cross-platform native APIs. </li></ul><ul><li>Increased source-portability for rich media and graphics applications. </li></ul>
  6. What is OpenKODE’s problem set? <ul><li>Both embedded software developers and application software developers face fragmentation at the device driver level and the OS level. </li></ul><ul><li>Also, device drivers lack interoperability, which limits features. </li></ul>
  7. OpenKODE fights fragmentation <ul><li>OpenKODE unifies interface to OS and drivers, and increases driver interoperability. </li></ul>
  8. What is Airplay? <ul><li>A complete development and deployment environment for rich-media mobile applications. </li></ul><ul><li>Allows a single ARM binary to be deployed to all handsets, irrespective of OS, form factor or chipset. </li></ul><ul><li>Powerful tools and middleware modules including the world’s fastest mobile software renderer, and a scalable graphics pipeline which exploits OpenGL ES if GPU is present, otherwise reverts to SW. </li></ul><ul><li>Provides full real-time desktop emulation and source-level debugging of the ARM binary. </li></ul><ul><li>Conformant with OpenKODE on every commercially-relevant mobile platform. </li></ul>
  9. How does Airplay differ from OpenKODE? <ul><li>Airplay is an implementation of OpenKODE for every platform you’ll ever want; Symbian OS (Series60 and UIQ), BREW, Windows Mobile, Mobile Linux, N-Gage, iPhone, Android… as well as Windows and Linux desktops. </li></ul><ul><li>Airplay supports OpenKODE but also provides a much richer API set, including full C and C++ standard libraries. </li></ul><ul><li>Airplay provides binary compatibility – you don’t even need to install any OS SDKs. Binary portability across devices means you build 1 SKU – huge savings on porting. </li></ul><ul><li>Desktop ARM debugging provides savings for development and testing. </li></ul><ul><li>Advanced 3D graphics tools and middleware. </li></ul>
  10. OpenKODE – detailed overview <ul><li>OpenKODE is actually two things: </li></ul><ul><li>OpenKODE Core APIs: POSIX-like C APIs for OS portability. </li></ul><ul><li>Trans-media APIs: C APIs for driver interoperability. </li></ul>Chipset vendors (who also tend to be the providers of reference device drivers) tend to emphasise (2), also called “Trans-APIs”. Their hardware can accelerate multiple things (2D, 3D, video, audio) and they would like to see this exploited. Application developers or middleware providers (like Ideaworks3D) tend to emphasise (1). Their main concern is reducing the cost of deploying to half a dozen platforms and a couple of hundred handsets.
  11. OpenKODE – How things fit
  12. Why do we need trans-media APIs? <ul><li>Example: using a video stream as a texture. </li></ul><ul><li>Currently requires client-side data copying. </li></ul><ul><li>In future, OpenKODE trans-media APIs remove this critical step. </li></ul>
  13. Why do we need trans-media APIs? <ul><li>Handheld “GeoBlog” Concept </li></ul><ul><li>(courtesy of NVIDIA) </li></ul><ul><li>Navigation using 2D maps, satellite, terrain and 3D city data. </li></ul><ul><li>GPS phone captures and uploads images, audio and video. </li></ul><ul><li>Location tagging inserts media correctly into the map. </li></ul><ul><li>Blog can be viewed on handheld or PC. </li></ul>
  14. Trans-media APIs - detail <ul><li>Previously, EGL was an API for draw-surface management, associated with OpenGL ES. </li></ul><ul><li>EGL is now also the home for the OpenKODE Trans-media APIs. These are a small number of new APIs which allow different media drivers to interoperate. </li></ul><ul><li>What this essentially boils down to is a shared concept of an image buffer (EGLImage). </li></ul><ul><li>OpenKODE 1.0 mandates an implementation of EGL 1.3 plus defined extensions. These allow OpenGL ES 1.1 and OpenVG 1.0 to interoperate. </li></ul><ul><li>However, it will take a while for the required versions of EGL, OpenGL ES, OpenVG, OpenMAX etc. to appear in handsets (first devices end ’08). </li></ul><ul><li>Generally, chipset providers (e.g. NVIDIA) will provide the trans-media API implementations. </li></ul>
  15. OpenKODE Core <ul><li>“ The typical rule of thumb for a developer is that one-third of the total cost of development will go towards porting, one-third towards development of the game itself and one-third to quality assurance (QA). Since most of the QA costs are related to porting, the costs associated with this issue equals two-thirds of the total cost of game development .” </li></ul><ul><li>Informa, Mobile Entertainment: The Future of Wireless Content 4th Edition </li></ul>Fragmentation is a killer. Here’s an example from an analysis of costs involved in mobile game development/deployment: OpenKODE Core offers a royalty-free open standard which aims to reduce fragmentation and therefore greatly reduce cost.
  16. OpenKODE Core APIs <ul><li>OpenKODE Core provides source-level abstraction of common operating system services in an event-driven environment. </li></ul><ul><li>Based on POSIX and also draws on the C89, C99 standards. </li></ul><ul><li>Carefully designed to be implementable over any mobile OS; none of the C std library is assumed. </li></ul><ul><li>APIs cover the following areas: </li></ul><ul><ul><li>Threads – however an implementation could provide only a single thread. </li></ul></ul><ul><ul><li>Events – either loop-in-application, or loop-in-framework. </li></ul></ul><ul><ul><li>Utility – e.g. string, random, memory, assert. </li></ul></ul><ul><ul><li>Math – analogs of much of the C std math library. </li></ul></ul><ul><ul><li>Timer – analogs of much of the C std math library, plus timed events. </li></ul></ul><ul><ul><li>File – virtual file system, providing option of file-sandboxed apps. </li></ul></ul><ul><ul><li>Networking – similar to BSD, but uses events to notify send/receive. </li></ul></ul><ul><ul><li>IO – e.g. keypad input, vibration output – very extensible. </li></ul></ul><ul><ul><li>Windowing – however an implementation could support only full-screen. </li></ul></ul>
  17. OpenKODE Core – who provides it? <ul><li>OpenKODE Core has no implementation dependencies on the media APIs. </li></ul><ul><li>Therefore OpenKODE Core can be deployed onto a platform independently from the media APIs. </li></ul><ul><li>Middleware vendors (e.g. Ideaworks3D with Airplay) will include OpenKODE Core implementations within their products to provide portability even if OpenKODE Core is not made available by the platform vendor. </li></ul><ul><li>It is hoped that platform vendors will provide OpenKODE Core as part of a complete OpenKODE implementation to enable easy porting of OpenKODE applications to their products. However, there is no direct evidence yet that this will happen. </li></ul>
  18. OpenKODE Core – implementation // Symbian (assume main game class derived from required base class) TKeyResponse CMyAppCnt::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType) { if (aType == EEventKey && aKeyEvent.iCode == SYMBIAN_KEY_CODE) { // Do whatever } }   // Brew (assume main game class derived from required base class) void GameMainCanvas::keyPress(uint16 key) { if (key == BREW_KEY_CODE) { // Do whatever } }   // Windows Mobile - standard window message handler LRESULT CALLBACK s3eWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (uMsg == case WM_KEYDOWN && wParam == WINMOBILE_KEY_CODE) { // Do whatever } }
  19. OpenKODE Core – implementation #include &quot;KD/kd.h&quot; int kdMain(KDint argc, const KDchar* argv[]) { while(1) { // Update events, including keyboard. kdPumpEvents();   // Poll the state of 'Game key A' and put the result in // res. Game key A should be mapped onto whatever is the // device's normal fire button, so the game developer doesn't // have to worry about what that is. int res = 0; kdInputPollb(KD_IO_GAMEKEYS_A, 1, &res); // Now see if our key is pressed. if (res) { // Do whatever. kdAssert((&quot;It's been pressed&quot;, 0)); } } } In OpenKODE Core, the keypress example above reduces to the following:
  20. OpenKODE Core – limitations <ul><li>No binary format. </li></ul><ul><li>Still need to build each SKU within OS proprietary environment. </li></ul><ul><li>If OpenKODE appears for iPhone, you’ll still need a Mac! </li></ul><ul><li>Vendors can claim conformance through a single platform instance, i.e. handset... how much effort will go into ensuring absolutely consistent behaviour across all handsets? </li></ul><ul><li>Will OpenKODE ever appear as embedded software, or will developers have to continue to pay middleware providers? </li></ul>
  21. Let’s OpenKODE!
  22. What is Airplay? <ul><li>A complete development and deployment environment for rich-media mobile applications. </li></ul><ul><li>Allows a single ARM binary to be deployed to all handsets, irrespective of OS, form factor or chipset. </li></ul><ul><li>Conformant with OpenKODE on every commercially-relevant mobile platform. </li></ul><ul><li>Provides full real-time desktop emulation and source-level debugging of the ARM binary. </li></ul><ul><li>Powerful tools and middleware modules including the world’s fastest mobile software renderer, and a scalable graphics pipeline which exploits OpenGL ES if GPU is present, otherwise reverts to SW. </li></ul>
  23. Airplay programmer workflow Windows build Project text file (.MKB) Airplay MKB Python Script Programming IDE workspace Airplay Windows Simulator ARM build ARM Real Time System Model (RTSM) <ul><li>Single text file (.MKB) describes all project settings. </li></ul><ul><li>Windows Explorer integration means double-clicking this file creates the IDE (Microsoft Visual C++) workspace. </li></ul><ul><li>Workspace is provided with Windows and ARM, Debug and Release configurations. </li></ul><ul><li>Programmer starts development using Windows Debug configuration, testing using Airplay Windows Simulator. This performs identically to a handset. </li></ul><ul><li>Programmer then uses ARM Debug configuration and tests actual ARM binary in ARM RTSM tool, on the desktop. </li></ul><ul><li>Finally programmer builds using ARM Release configuration, and is ready to deploy. </li></ul>Device
  24. Let’s Airplay!
  25. Metal Gear Solid™ Mobile Metal Gear Solid™ Mobile now released, Verizon and KDDI Winner “Best Game”, IMGA awards, Barcelona Feb 08 Winner “Operators’ Choice”, IMGA awards, Barcelona Feb 08
  26. Thank you! <ul><li>Julian Jones </li></ul><ul><li>VP Business Development </li></ul><ul><li>[email_address] </li></ul><ul><li>Jeremy Adams </li></ul><ul><li>VP Business Development, EMEA </li></ul><ul><li>[email_address] </li></ul><ul><li>Tim Closs </li></ul><ul><li>CTO </li></ul><ul><li>[email_address] </li></ul>

×