CoffeeScriptcocos2d-JSを使えば、JSでiOS・Androidアプリがつくれると聞きつけ試してみました。Andoirdのみですが作ったアプリをリリースしましたのでcocos2d-JSと合わせて紹介したいと思います。アプリ相も変わらず音ゲーです。音源はクリエイティブ・コモンズのものを使用しています。flavabeatsのAndroid版です。PC版はenchant.jsで、Android版はcocos2d-JSで作成してます。実はcocos2d-JSの方を先に作り始めたんですが、ハマりにハマって先にPC版の方ができてしまいました。拙作ですが、隙間時間で遊べると思うのでぜひ遊んでみてください。ちなみにPCに版の記事は以下。blog.bokuweb.mecocos2d-JSって?cocos2dはオープンソースの2Dゲームフレームワークです。メジャーなのはcocos2d-xでC++でiOS、Android、Windowsなど様々なプラットフォームに対応しています。Keeperなど採用実績も非常に多いようです。cocos2d-JSはその名の通りJavaScript版です。JavaScriptでiOS、Androidの両方に対応したアプリが作れます。JavaScriptですので、WEB用にビルドすることでブラウザ上で動作するアプリを作ることも可能です。以下は公式のデモですが、スマホのブラウザ上でもヌルヌル動くことが確認できると思います。MoonWarriors今回はcocos2d-JSのv3.3を使用しています。(現時点での最新は3.5)蛇足ですが、cocos2d-JSにはiOSやAndoirdに対応したFullとブラウザ上での動作のみに限定したLiteが存在します。LiteであればjQueryなどの既存のフレームワークが使用できます。PhoneGapと組み合わせればアプリ化もできるでしょうし、enchant.jsのような立ち位置になります。bokuwebにまとめています。)どんな風に書くんだってばよ?上記のパフォーマンステストで使用したコードですが、以下のような感じです。『シーン』という単位に『スプライト』を追加していき、一定周期で『スプライト』を移動させたり、音楽を鳴らしたりフレーム処理を行います。enchant.jsを触ったことがある人は、記述量は増えるものの基本概念は同じです。上記のコードは"test1.png"という画像(この場合グレーの正方形)を貼り付けたスプライトを7500個作成し、ランダムに動かすサンプルです。以下が実際の動作です。Cocos2d-JSスプライト数が7500だとさすがに処理落ちするので上記リンクはスプライト数を1000に減らしています。環境構築・HelloWorldまでは以前記事にて紹介しています。blog.bokuweb.me環境構築からアプリ完成までの流れや詳細は余力のあるときに記事にしたいと考えています。今回は感じを掴んでいただければと思います。参考になった書籍とか残念ながら古いバージョンなんですが、参考になる箇所も多いです。Kindle版この商品を含むブログを見るフニゲの開発日記、著者ブログでは新刊準備中とありますので期待したいです。英語ですが、3.x系に対応しています。こちらも参考になります。Kindle版この商品を含むブログを見るこちらはcocos2d-JSではなくてcocos2d-xなんですが、共通の部分も多く参考になりました。説明もわかりやすいのでオススメです。cocos2d-JSでも使用できそうなツール類の紹介も充実しています。大型本この商品を含むブログを見るこの本のサンプルをJSで実装した方がいるようです。こちらも合わせて参考になります。qiita.com開発工数どんなもんよ?管理していたわけではないのでざっくりですが50〜60時間くらいでしょうか?大半がレイアウトやアニメーション調整、譜面作成だったのでゲーム自身の実装は(enchant.js版が先行したこともあり)10〜20時間ってとこです。あと、レイアウト調整などに差し掛かると一気にモチベーションと効率が下がります。大枠のロジックを組んでるときが一番楽しいよね。感想とか、困ったこととか以下羅列します。cocos2d-JSはまだまだ情報が少ない。アップデートも頻繁でAPIも結構カオスなことになっている。cc.point(x,y)だったのにいつの間にかcc.p(x,y)になってたりってことがよくある)IDEが用意されているけど使いかたがよくわからん。1ソースで様々なプラットフォームに対応しようとすると結局プラットフォーム判定して処理を分けるということが必要になる。それでもWEB技術でここまでできるのは利点。プラットフォーム非依存部のテストはmocha-pantomJSとかでできそう。(今回はテストのテの字もないですが・・・。)JSでレイアウト調整すんのしんどい。なんか稀に音がずれる気がするけど見てみないふりしとくわかったら治す。ソースGitHubで公開しています。MITライセンスで公開しますのでご自由にどうぞ。音楽ファイルはCreativeCommonsライセンスですのでご注意ください。