狠狠撸

狠狠撸Share a Scribd company logo
ngCore Enginefor mobage platformToru Yamaguchi <zigorou@dena.jp>DeNA,co.,ltd
My Profile Identity @zigorou, =zigorou, d:id:ZIGOROu Community Perl, Shibuya.pm, Yokohama.pm Japan Perl Association 理事 Company Social API Developer
Abstract What is ngCore? Architecture of ngCore  ngCore Social APIs Development and Performance Conclusion
1. What is ngCore?ngCore Engine for mobage platform
Cross devices ngCore とはソーシャルアプリ向けの SDK です devices Android, iOS, Flash Development Language? Java でもなければ Objective-C でも C++ でもありません実際のコードはJavaScriptで記述しますそして同じコードで全てのデバイスに対してアプリケーション開発が出来ます
Cross platform日本にも海外にも挑戦出来るモバゲータウン (Japan)mobage (English speaking countries)ngmocoの platform をベースにしたもの appsDeveiceごとの一般的なダウンロード (App Store, Android Market)但し会員のベースは上記のプラットフォームがベースとなる
Features (1) Live updatingアプリケーションロジックは JavaScript なので通常の native app とは違い動的な更新が可能開発時はnode.jsで出来た配信サーバーと ngCore native app が通信して動的に更新可能
Features (2) For Social Apps API designs is based on OSAPI (OpenSocial 1.1) c.f.) social.common.people.get(params); For Social Games Push notification Game recommendation  User to user challenge対戦申し込み Geo Location
Features (3) Game developments (1) 2D Sprite Engine, 2D Geometry Engine特に2Dのゲームに特化している Native UI Bindings Android Widget (Android), WebKit (iOS), Flash PhysicsBased on Box2D物理演算は各デバイスのネイティブコードで行われるため、高速に動作する
Features (4) Game developments (2) Audioマルチチャンネル、ミキシング Multi touch Motionアクセロメータ、ジャイロスコープ、コンパス、GPS Text and Fonts rendering
Features (5) Standards (1) JavaScript の Module システムはCommonJS Modules 1.0 に準拠 Libraryexports.add = function() { /* impl */ }; Usagevar add = require(‘math’).add;
Features (6) Standards (2)デバイスごとの JavaScript Engine はECMAScript 3rd準拠 V8 Engine (Android), JavaScriptCore (iOS)部分的に ES Harmony の機能も使えます! getter/settervarobj = { get a() { /* getter */ },  set a() { /* setter */ } }Array.prototypeforEach, map, reduce …https://github.com/ry/node/wiki/ECMA-5-Mozilla-Features-Implemented-in-V8
Case of successngmocoによる豊富な成功例http://www.ngmoco.com/games.php
2. Architecture of ngCorengCore Engine for mobage platform
Common Architecture (1)デバイスごとに共通なことコンポーネントは3階層 Game (開発者が書く JavaScript)NgWebEngine (開発者が使う JavaScript Library) NDK (JavaScript と Native Component との bridge 部分)NgWebEngineは共通のインターフェースを持つが、NDK はデバイスごとに存在する
Common Architecture (2)ngCore EngineGame Implementation(JavaScript)Native UIComponentNative App(NDK)GameJavaScript(Library + Engine)Native BrowserComponentPrivilegedJavaScript(Library Engine)Native GraphicComponentPlatform Implementation(Privileged JavaScript)NgWebEngineNativeNDK
Android EnvironmentngCore Engine for AndroidGame Implementation(JavaScript)AndroidWidgetNative App(NDK)GraphicsPhysicsXHRGameJavaScript(V8)WebKitPrivilegedJavaScript(V8)OpenGLPlatform Implementation(Privileged JavaScript)NgWebEngineNativeNDK
iOS EnvironmentngCore Engine for iOSGame Implementation(JavaScript)UIKitNative App(NDK)LocationXHRGameJavaScript(UIWebView)WebKitPrivilegedJavaScript(UIWebView)OpenGLPlatform Implementation(Privileged JavaScript)NgWebEngineNativeNDK
Application building Android記述した JavaScript コードをサーバーに上げるだけで済む端末に ngCore がアプリとしてインストールされていれば OKiOS技術的には Android と同じ事が可能が、しかしiOS license terms の制約により要パッケージング
Android applicationApplication ( JavaScript ) Application code をサーバーにアップするだけでコードの配信やバージョンの更新が可能Live updatingPlatform Web ServerApplicationApplication ( JavaScript ) Application ( JavaScript ) ngCore Engine for Android
iOS applicationiOSの場合はiOS license terms の制約によって、パッケージングしなければならない。Application ( JavaScript ) Platform Web ServerApplicationApplication ( JavaScript ) Application ( JavaScript ) ngCore Engine for Android
3. ngCore Social APIsngCore Engine for mobage platform
颁补耻迟颈辞苍!まず始めにこのセクションの话は将来の话ですここで説明した内容がそのままリリースされるかを保障する内容ではございませんので予めご了承下さい
Overview (1) Based on OpenSocial OSAPI like な interfacesocial.common.people.get(params)people, appdata, profanities (NG Word) は共通APIとして使える予定です
Overview (2) Platform dependencies APIs Activity, Avatar, BlackList (モバゲーのみ)Leaderboards (mobageのみ?)この辺りはまだだいぶ未確定
People出来る事ユーザーのプロフィール取得 (nickname など)ユーザーの友達一覧取得ユーザーの”ゲーム内での”友達一覧取得ゲームの中だけでの友達と言う概念
Appdata Key-value persistent storage application-user ユニークなデータを platform 側に保存出来ますデバイスを変更したとしても同一ユーザーであればデータを引き継げる
Activity (モバゲー) Friends Activity Timeline現在はアプリケーションに関連する友達の状況がタイムラインとしてリアルタイムに表示されます API としてはこれらの Activity を post する事が出来ます
Leaderboards (mobage)リアルタイムランキングランキングの為のスコア送信現在のランキングを取得実はアプリケーションを横断したリアルタイムランキングはとてもコストが高い処理platform 側で引き受けます!この機能はモバゲーでもいずれ?
Others今後の Social API OpenSocial に無い独自のAPIを platform (WAP/PC/Smart Phone)として色々出す予定です位置情報やゲーム特化系コミュニティ系既存の OpenSocial base の API も機能拡張していきます
4. Development and PerformancengCore Engine for mobage platform
Development (1)基本的な流れ SDK にnode.jsで出来た配布サーバーが添付されてます基本は環境ごとの ngCore app が既にあるので、配布サーバーにある JavaScript を編集し保存してから、アプリのリロードをすればすぐに確認出来ます
Development (2)CheckEditandSaveNativeBuildBuildCreate apkInstall apkRun appAndroidwithNDKCheckEditandSaveBuildCreate apkInstall apkRun appAndroidStandardEditandSaveCheckReloadAndroidwithWebViewEditandSaveCheckReloadngCoreforAndroid
Performance (1)特に気になる描画まわり以下の実装で比較 ngCore + JavaScript JavaScript + Canvas Java OpenGL ES 1.0実行環境 HTC Desire / Desire HD Android OS 2.2 ngCore SDK 1.0
Performance (2) 64x64 の Tank を動かすアプリ Tank の数に応じた fps を計測Java OpenGLngCoreJavaScript + Canvas
Performance (3)HTC Desire の場合fpsJava OpenGL60ngCore50JavaScript + Canvas403020101101002005001000Tankの数
Performance (4)HTC Desire HD の場合fpsJava OpenGL60ngCore50JavaScript + Canvas403020101101002005001000
Performance (5)ベンチマーク結果より概ね Canvas < ngCore < Java 但し Tank の数によってはまだまだ ngCore に改善の余地ありまだ開発中なので今後改善していきます遅くなってしまっている原因としては JavaScript <-> ngCore のやりとりがオブジェクトごとに発生しているからと思われるこの辺りはまとめてハンドリング出来れば速度の向上が見込まれる
5. ConclusionngCore Engine for mobage platform
Cross devices and platform Cross devices ngCore + JavaScript Cross platformゲーム好きなユーザーの集まるモバゲータウン世界へのチャレンジとしてのmobage
ngCore features Game 特化 We rule など既にヒットしているタイトルで実際に使われている安心感これを platform として出すメリットは、パートナーからの feedback でよりゲーム開発しやすい SDK に成長する可能性があると言う事
JavaScript Web 系開発では必須言語今までの経験をそのまま活かせる Standard ES Harmony, Common JS, DOM like な UI, OSAPI like な Social API極力覚える事が少なくなる様に
ngCore Development Live update Android では Web development のような感覚での application 更新が可能これは開発時に実装し、確認すると言う try and error が素早く繰り返せる慣れれば2, 3ヶ月に1本開発くらいの事は出来そうです。
Dive into ngCore! Please visit DeNA developer sitehttp://developer.dena.jp/mbga/こちらで順次お知らせしていきますまずは法人登録を!我々とともに世界をビジネスの舞台にしていきましょう。ご清聴ありがとうございました

More Related Content

ngCore engine for mobage platform