【cocos2dx】新作「わたしの動物園」の技術的な話

昨日配信をした「わたしの動物園」の技術的な話をブログに書いて行こうと思います。 ほとんどcocos2dxで用意されているクラスを利用しています。 そう考えると、cocos2dxはとても便利なゲームエンジンですね。

cocos2dx v3.x

今回のアプリは、開発当初からcocos2dxのv3.xを利用しました。 12月まではv3.1を利用して、最終的にはv3.3を使っています。

良かった所1 : autoが楽

まずは、変数の型を指定する時に[auto]が利用できるのがとても楽でした。 最初は、型がないとコードが増えるごとにわかりにくくなるのではないかと思いましたが、そんなことは無かったです。 [c]

auto _sprite = Sprite::create("button.png");

[/c]

良かった所2 : コールバック関数

objective-cでいうところの「Block」に当たるのが、コールバック関数です。 この利用方法は、cocos2dxの本で知ったのですが、とても便利です。これが使えることで表現の幅が広がりました。

【参考】 【cocos2dx C++】コールバック関数を実装する | albatrus.com

良かった所3 : ラムダ式

v3.xから利用ができるのがラムダ式です。 v2.xでは、メニューやCCCallFuncクラスで別途関数を設定しなくてはいけないのがとても面倒でしたが、このラムダ式が利用できることでコードもわかりやすくなりました。

【参考】 【cocos2dx入門】「ラムダ式」と「コールバック関数」のまとめ。 | albatrus.com

ドラクエ風文字表示

これは私は、一文字づつ文字が表示されることを「ドラクエ風文字表示」と読んでいます。 本当は、BOOK QUESTの時から実装をしたかったのですが、なかなか難しく、今回のアプリで初めて利用しています。 とはいいましても、下記のサイトの方法をほぼ頂いて利用をしています。

LWF

前作の「わたしのパン屋さん」では、レベルが上がった際などの演出が弱いと感じていました。 もっとゲームをしている人にわかりやすく、そして派手に伝える手段を「LWF」を使って試してみました。 「LWF」は、Flashで作成をしたエフェクトを、cocos2dxのプロジェクトで利用ができるデータ形式です。

実際に利用する前は、Flashなので「読み込みが遅い」とか「CPUに負荷が多くなる」など心配していましたが、特に何もなく利用ができました。 実装も簡単でした。 「LWF」は、cocos2dx3.2から対応をしています。

2015-2-10--f.PNG

スクロール

図鑑やゲストブックで利用しているのが、スワイプでレイアーが移動する「スクロールレイアー」です。 これは以前から利用していたものを今回流用して使っています。 ただ、cocos2dxのバージョンが3になったことで、実際に利用できるようになるまでにかなりの時間をとられてました。

2015-2-10-d-f.PNG

ソーシャルメディア投稿

以前はTwitterのみだったのですが、FacebookとLINEにも投稿できるようにしています。 これはどちらもTwitter投稿のコードを真似て実装しました。

そこでわかったのが、以下の2点です。

  • LINEは「画像」「文章」のどちらかしか投稿ができない
  • Androidfacebookには文章を送ることができない

この辺りに関しては、今後、画像を上手く使わないといけないと感じました。

2015-2-10-df-f.PNG

最後に

面倒くさくても、色々と試行錯誤をして使っていくと逆に便利に利用できるようになります。 バージョン3がとても不安でしたが、何とかなりました。 アプリが完成するまで、時間はかかりましたが、新しく色々なことにチャレンジができました。

この色々なことができるのが、個人で活動をすることの良い点だと思います。 次の作品も、今までのモノを使いまわすのではなく、もっと違うことがアプリで表現できるようにしていきたい思います。