カテゴリー: cocos2d-x

cocos2d-xの勉強してみた

この記事は最終更新から3ヶ月以上が経過しています。情報が古い可能性があります。

ゲーム開発エンジン使ってアプリを作ってみたいなとは以前から考えていましたが、今回cocos2d-xの勉強をしてみました。

他にもUnityがあって、しかもそちらの方が情報量も書籍の数も多いです。にも関わらず、なぜcocos2d-xを選んだかというと、私には3次元がややこしかったからです。UnityはLive2Dと連携させるのにちょっと触りましたが、私には合いそうもないというのが第一印象でした。cocos2d-xなら2次元だから比較的入りやすいんじゃないかなと思ったのです。

実際にやってみたら、cocosは情報が少ないという意味でハードルが高くて困っていますけどね。もっとも、Unityもハウツー本使って勉強してみると意外と簡単にできるかもしれません。いずれやってみようと思います。

今回勉強するにあたって利用した本はこちらです。

書籍で扱われているcocos2d-xのバージョンはは3.2ですが、私は3.6(勉強開始当初の最新、現在は3.7が出ている)でやりました。

Android Studioとの連携

Android Studioでcocosのプロジェクトを開くにはどうしたらいいかという問題ですが、cocos2d-xのバージョン3.7からAndroid Studio用のプロジェクトが作成されるようになっています。ですので、3.7を使えば解決されます。さよならEclipse。

といっても、あくまでプロジェクトが開けるというだけで、Android Studioだけを使ってC++のコーディングなども含めて開発していけるわけではありません(多分)。素直にMacならXcode使ってiOS用に作っていく、WindowsならVisual Studio使ってWindows Phone向けで作っていくのがいいと思います。(両者であればプロジェクトを開く→実行する→ちゃんと動くので)

Android Studio使って進めていきたかったのですが、今回はcocos2d-xの勉強を優先することにしました。

3.6で本の内容をひと通りやってみて

基本的には本に書いてある内容は、バージョン3.6でもそのまま動きます。

ただ1点だけ、5章のP204ページにあるコードは修正しないと動きませんでした。

auto properties = _tiledMap->getPropertiesForGID(gid).asValueMap();

このasValueMap()のところの型チェックでプログラムが止まってしまいます。これはcocos2d-xのバージョンによる問題ではなく、Tiled Map Editorのバージョンが違うせいで動かなかったのかもしれません(本のTiled Map Editorのバージョンは0.9.1、私が使ったのは0.12.3)。

auto property = _tiledMap->getPropertiesForGID(gid);
if (property.isNull() || property.getType() != Value::Type::MAP) {
    return nullptr;
}
auto properties = property.asValueMap();

一部、本の通りにやっても画面にうまく表示されない箇所があるにはあるのですが、これはcocos2d-xのバージョンによる問題なのかは分かりません。

6章のCocos Studioのあたりは参考程度に

これは本のせいではありませんが、第6章のCocos Studioを使うあたりの話はそのまま利用できませんでした。というのも、本で使っているCocos Studio1.6が手に入らなかったからです。

公式サイトには2系しか公開されていませんでした。もしかしたらどこかに1.6置いてあるのかもしれませんが、私には見つけられませんでした。

Cocos Studioはバージョン2から全く別物のツールというくらいに変わってしまっています。1.6の頃にあったツールがなくなっているあたり、バージョンが上がったようにはまったく思えないです。

触ってみた限り、前にあった機能が削減されたというよりは、Cocos Studioで扱う部品がシンプルになり、もっと簡単にcocos2d-xのプロジェクトに取り込めるようになったというのが正しい認識のように思います。GUI Componentかどうかなどを意識することなく、単にNode(もしくはLayer)として扱えばいいだけなのでしょう、おそらく。

大体雰囲気で乗り切れましたが、AtlasLabelの扱いが変わっていることだけは注意が必要でしょう。AtlasLabelは画像で数字のフォントを用意すれば、そのまま数値として利用できるものです。

バージョン1.6までは文字列が何から始まるかを指定してやる必要があったようです(本を見る限りは)。

しかし2系からはAtlasLabelは必ず./0123456789という順番で画像を用意しなければならないようです。ドットやスラッシュを使わないとしても、です。文字の横幅はすべて同じにしなければなりません。要するに、Cocos Studioが渡された画像を勝手に12等分して、左から順番に./0~9と認識してくれるみたいです。サンプル素材の画像データは0〜9しかないので、画像編集ソフトを使って左側に文字2つ分の余白を入れたらうまくできました。

cocos2d-x入門書として優秀

私はC++も含めて全くの初学でしたが、本の通りやったらちゃんとできました。おかげでcocos2d-xの雰囲気は掴めた気がします。

一方でトラブったときにちょっと困ります。例えばノードを画面に追加しても描画されないとき、いったいどこを確認したらいいのかがさっぱり分かりません。

私はC++はじめて、Xcode触るのも初めてなので、うまくいかないときにどうやって原因を切り分けていけばよいのかが分からなくて困りました。というか困っています。

ですが、「こうやったら動くよ」という情報自体がありがたい存在なので、cocos2d-x触ってみたいなぁという人にはおすすめできると思います。