読者です 読者をやめる 読者になる 読者になる

Poppin Games Engineer Blog

ポッピンゲームズジャパン株式会社のエンジニアのブログ。弊社製品やcocos2d-x、AWSに関する情報を中心に発信しております。

Cocos2d-x JavaScript Bindings がまだ実用的でない5つの理由

ポッピンゲームズの小林です。

最近注目のcocos2d-xですが、Javascript Bindings での開発はどんなもんでしょうか。調べてみました。
結論としては、完全にJavaScriptのみでゲーム作り始めるのはまだ少し課題があるが、もう少し経てばいい感じになるかも!というところです。

以下、ver2.1.3現在での話です。cocos2d-xは開発・コミュニティともに活発なので、以下の内容も半年後には過去の話となりJavascriptBindingsが天下とってるかもしれません。



理由1:JavaScriptから通信ができない

どうしても通信したい場合、自前でバインディングを用意する等の解決をする必要があります。


オフィシャルでは、次のバージョンである2.1.4にて XMLHttpRequest を実装予定のようです。また、websocketも使えるようにするとか。楽しみですね!

http://www.cocos2d-x.org/issues/1647
http://www.cocos2d-x.org/issues/2092
https://github.com/cocos2d/cocos2d-x/pull/2561
http://www.cocos2d-x.org/boards/20/topics/27777

理由2:JavaScriptコードを暗号化できない

難読化は可能ですが、暗号化はできません。現時点では、2.1.2→2.1.3→この次で…と対応が後回しになってますのでいつ実現するかわかりません。アプリ内を見れば(難読化されてるとはいえ)コード見えちゃうのは嫌だ、という方はこの機能を待ちましょう。

http://www.cocos2d-x.org/issues/1732

理由3:JavaScriptから使えないAPIがある

こちらもいつ対応されるか分からないものがチラホラ。TouchDispachterが取得できないのはちょっと困りますね。

http://www.cocos2d-x.org/boards/20/topics/24687?r=28054
http://www.cocos2d-x.org/issues/1835
http://www.cocos2d-x.org/issues/1690

理由4:Xcodeでコード補完が効かない

XcodeJavaScriptに対して優しくないので、快適に開発するには、自分でエディタ等をセットアップするしかありません。

cocos2d制作者のriq氏もフォーラムで「Xcode as a JS editor sucks.」と述べたあと、sublimeやmac vimを使う事を推奨してました。(http://www.cocos2d-iphone.org/forum/topic/31640/page/5#post-182470

「cocos2d javascript bindingsの環境構築」(http://blog.seasons.cc/entry/2012/12/15/031517)でid:Seasons氏がSublime環境構築について紹介されてます。

デバッグ・テストについても例えばid:giginet氏が(Luaバインディングですが)Jenkinsでのチェックを導入した「JenkinsでLuaのSyntaxチェックを自動化してみた」(http://giginet.hateblo.jp/entry/2013/05/03/175830)等が参考になるのではないでしょうか。

理由5:テンプレートからのプロジェクト作成があまり手軽でない

Xcodeからプロジェクトを新規に作ると、何故かCocosBuilder使うのが前提のテンプレートになっています。なんで?

各プラットフォーム対応のプロジェクトを作ってくれるスクリプト create_project.py (cocos2d-xのフォルダ内、tools/project-creator に入ってます) を使った場合、もう少し軽めのテンプレートを作ってくれますが、こちらはこちらでターミナルから実行する必要があってやや手間です。

まとめ:

というわけで、cocos2d-xでJavaScriptを使ってのゲーム開発はまだ多少の課題を残してると言えるでしょう。

2.1.4で通信関係の機能が揃い、セットアップが簡単で使いやすい開発環境が整えばJavaScript時代が幕を開けるかもしれません。

カヤック@Gemmbu氏の「#20 まさか、Cocos2d-x 使っているのに C++ 書いてるわけないよね?」(http://tech.kayac.com/archive/20_snmp.html)の記事あるいは、CocosBuilder + CocosPlayer (http://www.youtube.com/watch?v=WrLjsV_GulQ)のような手法も使えるのがいいところです。

上記以外にも出来ない事・対応してないもの色々ありますが、 http://www.cocos2d-x.org/projects/native/roadmap のロードマップを見て「○○の機能はいつ実装されるのかな~」と楽しみにするのも一興かもしれません。

JavaScript Bindings については22日に TechBuzz (HatchUp社)のイベント 第8回Shinjuku.cocos2d-x(http://atnd.org/events/38640)にて清水氏(http://tks2.net/memo/)によるハンズオンが開催されますんでご興味のある方は参加してみてはいかがでしょうか。


さて、現在ポッピンゲームズジャパン株式会社では人材募集も随時行っております。
http://poppin-games-japan.com/recruit/career/

少しでも興味がありましたらお気軽にお問合せ下さい。