Google+ もご覧ください
ユーザーアイコン

cocos2d javascript bindingsでマルチプラットフォーム開発

第一回 cocos2d javascript bindingsってなんだ?

Seasons

第一回 cocos2d javascript bindingsってなんだ?

cocos2dとは?

2Dゲームオープンソース ゲームフレームワークとして、国外問わず、cocos2dは非常に人気があります。cocos2dは、iPhone版をベースに各プラットフォームに対応するためのバージョンがそれぞれ存在します。

  • cocos2d

cocos2dロゴ
cocos2dロゴ

Objective-Cで記述。iOS版、Mac版のアプリケーションを制作することが可能。1.xと2.xのバージョンの2種類が存在し、最新版は、2.1。フレームワークとしては安定期に入っており、今後は新しい機能よりもメンテナンス期に突入していく。

  • cocos2d-x

cocos2d-xロゴ
cocos2d-xロゴ

C,C++で記述。iOS版、Android版、WindowsPhone8版、PC版のアプリケーションを制作することが可能。 現在最もマルチプラットフォームの対応が進んでいるバージョン。 先日は、cocos2d-x 3.0α版がリリースされたりと今後最も勢いが増していくバージョン。iPhone版の制作者である、@ricardoquesadaも今後は、xをベースにcocos2dを強化していくことを宣言している。

  • cocos2d-html5

HTML5ロゴ
HTML5ロゴ

HTML5, JavaScriptで記述。ブラウザ用のアプリケーションを制作することが可能。cocos2d-xのチームがスピンアウトして制作しているため、cocos2d-xとのAPI互換性が最も高い。つまり、xで開発することでhtml5版の移植が容易になるようになっている。

cocos2d javascript bindingsとは?

cocos2dといえば、先ほどの3つをおさえておけばまず問題ないでしょう。特にcocos2d-xは、最近日本でも人気を集めているフレームワークです。xは中国で開発されており、国内のユーザーのシェアの都合もありAndroid, iOSのマルチプラットフォームでのリリースするために生まれたマルチプラットフォーム対応バージョンです。 ここまでの話で、C,C++での開発に抵抗がなければ基本的にcocos2d-xをメインに開発すれば良いように聞こえますが、cocos2d-iphoneでもマルチプラットフォームへの取り組みとして生まれたのがcocos2d javascript bindings(略称 cocos2d jsb)となります。

cocos2d jsbの技術
cocos2d jsbの技術

この図を見て分かる通り、共通のJavaScript APIを用意し、実行するプラットフォームに応じて実際に呼び出されるフレームワークのAPIを変えることでJavaScriptだけで全てのプラットフォームに対応しようというコンセプトです。 既に同じような仕組みはモバイル業界ではUnityやCorona, moai, impactなどといった形で存在しますが、cocos2dでは、JavaScriptという言語を選択し、その実装を行っています。

これらが生まれた背景として、cocos2d-xの影響が大きいように筆者は思います。様々なデバイス、OSが搭載されたものが続々と登場するなかで全てのプラットフォームごとにプログラムを作ることはプログラマーにとっては非常に負担です。できれば、既存の資産をうまく活用してマルチプラットフォームに対応できないかと考えたのでしょう。cocos2dなりのエコシステムとしてAPIの互換性を保ちつつ、jsbのプロジェクトはスタートしました。

そして、cocos2d-iphone版だけでなく、cocos2d-xでも同様のbindingsが実装されています。

SpiderMonkey

cocos2d jsbは、JavaScriptで記述したプログラムをアプリ内に内包するJavaScript VMエンジンによって実行時解析、処理を行い、バインディングされたネイティブのAPIを呼び出して描画などを行います。もちろん通常のJavaScriptの計算は、VMで行われます。cocos2d jsbで採用されているVMエンジンは、SpiderMonkeyです。 こちらで公開されているソースコードを用いて、モバイル用にそれぞれビルド1したものをcocos2d jsbでは利用しています。ですのでオリジナルのソースコードとは少々異なる可能性があります。

同じVMのエンジンをAndroidでもiOSでも利用しているため、同じJavaScriptのソースコードを実行できるわけです。これが異なるVMをプラットフォームごとにわけていた場合、JavaScriptという言語で統一したとしても実行できない可能性が出てきます。

次のページではcocos2d jsbについてさらに掘り下げて紹介します。


  1. モバイル用のビルドは、ricardoquesadaによるリポジトリにて公開されています。 

Cocos2d jsb
タグ:

記事をリクエストする

関連記事

コメント