<div class="p1">最近は、仕事の中心はWeb系なものの、スマホ系のお話を頂くことが増えている。今年の4月に初めてスマホアプリを作った新参者ながら、この3ヶ月弱の間に Titanium Mobile (iPhone/Android)で1本、Objective-C + cocos2d (iPhone)で1本、Objective-C(iPhone)で1本を作っている。来月も1本、Objective-C の案件が決まっていて、ありがたい限りだ。</div><div class="p2">
</div><div class="p1">cocos2d は、2Dゲーム向けのゲームエンジンで、2Dゲームの世界でデファクトスタンダードになり得る、高品質、高機能のフレームワークである。ゲームに限らず、OS の標準UI(iPhoneでいうUIKit)をあまり使わず、フルカスタマイズした UI が求められるようなアプリに向いている。その代表格がゲームというわけだ。</div><div class="p2">
</div><div class="p1">とはいえ、同じような立ち位置にあるように見える Corona SDK との使いわけポイントが、自分の中ではっきりと定まっていない。Corona は簡易言語 Lua で書けて、iOS/Android 両対応のクロスプラットフォームアプリが書ける素晴らしい2Dゲーム向け開発環境だ。大まかな違いとしては、簡単なアプリなら Corona SDK、本格的なものなら cocos2d、遅くても構わないゲームなら Corona SDK、機敏な反応を求められるアクションゲームなどであれば cocos2d、あとは、OSの機能をとことん使いたいなら cocos2d、という気がしているが、実感を持ってそう語っているわけでもないし、Corona SDK はちょこっと触った程度の経験度である。</div><div class="p2">
</div><div class="p1">cocos2d でパズルゲームを作った勢いで、今日(2012/06/20)、六本木ヒルズのグリー内で開かれた cocos2d 勉強会に参加してきた。一年前に第一回が開かれていて、今回で二回目とのこと。</div><div class="p2">
</div><div class="p1">要点だけメモ。講演してくれた人ごとではなく、テーマごと。</div><div class="p2">
</div><div class="p1"><h4> cocos2d-x</h4>中国では cocos2d for iPhone よりも cocos2d-x の方が使われている。iPhone アプリだけ出すとクラックされて海賊版がすぐに出るので、初めからクロスプラットフォームの cocos2d-x で iPhone版とAndroid版を同時に出す傾向にあるとのこと。</div><div class="p2">
</div><div class="p1">cocos2d-x は中国人の Wlzer Wang が founder。それが中国で広く使われる要因の一つなのかもしれない。開発チームを法人化していて、サポートなどのレスポンスが早い。Wang は、インターネット経由で、講演もしてくれた。英語での講演だったが、日本語への逐次通訳が付いていた。無料セミナーに通訳を付けてくれるなんて、グリーの懐具合が透けて見えるようだ(ありがとうございます)。

通訳の問題で話のロジックが通らず、かなりわかりづらかったのではないかと思うが、cocos2d-x 固有の歴史的、技術的なバックグラウンド無しであれをリアルタイムに通訳するのは無理なので、通訳のお姉さんには拍手を贈りたい。僕なら頭真っ白で汗びっしょりだろう。技術系イベントでの同時、逐次通訳は何回も見てきたが、まともな通訳をするには、コストをかけた数日間にわたる事前準備が必要と思う。ちょっと手伝って、レベルでは無理。

</div><div class="p2"><h4> 最もDLされたゲーム</h4></div><div class="p1">cocos2d で開発されたことが明らかとなっている中で最も有名なものの一つが Fishing Joy。勉強会の中のお話では4000万ダウンロードとのことだったが、いま AppStore を確認したら7000万ダウンロード達成とのこと。cocos2d でどのようなアプリが可能かの参考になる。とはいえ、cocos2d で作れない2dアプリというのは、AppStore にも上がっていないと思う。つまり、cocos2d で作れない2Dゲームは、他の方法でも作れないに違いない。

</div><div class="p1"><h4> 開発ツール</h4>開発ツールいろいろ。知らないものがたくさん出てきた。というか全部知らなかった。Xcodeよりも高機能なIDEであるAppCode、スプライトアニメを作る Spriter、テクスチャを軽量化する TexturePacker、コリジョンの実装を楽にする PhysicsEditor、リファレンスの参照を便利にする Dash、勉強用に本格的なサンプルソースが見れる StarterKit、ゲームのプレイを動画にできる Kamcord などが紹介された。早速 Dash をインストール。おお、これは良さそうだ。他のやつも少しずつ試してみよう。</div><div class="p2">
</div><div class="p1"><h4> シェーダー</h4>cocos2d でシェーダーを使う方法の解説。シェーダーがなんなのか理解しておらず、話の出だしから終わりの方まで全てコードや内部構造の話だったので困惑した。そんな面倒くさいこと、なんのためにやるの? なにが嬉しいの? と。会場内でそう思っていた人は少なからずいたようで、最後の最後にデモを見せてもらったときに、おお、という感嘆の声がそこかしこから聞こえてきた。

何ができるかというと、2次元なのに、3次元的な光の効果が出せるのである。光源の位置や種類に応じて、2次元の絵の見え方が動的に変わる。とはいえ、こう書いただけではその価値が伝わらないと思う。残念だ。とにかく、2次元データなのに3次元のように見える。なぜそんなことができるかというと、通常のテクスチャの他に、法線ベクトルを持つテクスチャも使う、2枚重ねのテクスチャだからだ。細かいことはわからないが、3次元情報を取り込んでいるのが法線ベクトルのテクスチャということだろうと理解した。このテクスチャ自体は、3Dモデリングツールで作るらしい。そうじゃなきゃいけないわけではないが、それが最も簡単。</div><div class="p2">
<h4> OpenOfficeで絵本</h4></div><div class="p1">OpenOffice の Impress(パワポ類似ツール)から絵本を作るお話も面白かった。OpenOffice で絵本の絵やシナリオを作り、それをコンバーターで変換したものを iPadアプリに読み込ませると、アニメーション付きの絵本ができあがる。主に日販からの受託で作る絵本が多いとのこと。絵本のコンテンツを作る仕事と、プログラミングを分離して作業できるのは嬉しい。

</div>