【愚痴】cocos2d-xが重くてモチベが低かったお話(今は高めですけど)


これはここ一年ぐらいの愚痴というかいろいろつまっていたことを吐き出してます。

spineをいれたいと思った

私は絵が描けません。
そのため画像のアニメーションを考えたときに、一枚一枚絵を書くよりも
spineを使用して、画像のキャラクターを動かした方がいいのではと思い
spineを導入することにしました。

当時(去年)、私はcocos2dでゲームを作っていました。
spineもどうやらcocos2dに対応していたのですが
(公式にcocos2dのマークがあったと思ってます。)、
残念なことに日本のwebサイトに情報がのっていませんでした。

私のようなど素人が、日本語の情報がないと
新規にspineというツールの導入をするのは難しいと思い
spineとの組み合わせで日本語の情報が多かった
cocos2d-xに手を出してみることにしました。

Objectiv-CからC++には変わるとはいえ
CCLayerやCCSceneの考え方は一緒みたいだし、ちょこっと書き方変えるだけで
簡単に移行できそうだと私は思っていました。(これが甘かった)

当時cocos2d-xの安定版が3.2だったので、とりあえずダウンロードしました。
なんだかんだ設定して、いろんなサイト様に助けられて
とりあえずサンプルをダウンロードしてみたところ

「なんか重い、、、」

でも作業はなんとか出来そうだし、、、

そんなこんなでしばらく続けてみました。

いきなりspineが動かない。

spineで作成されたサンプル君をXcodeに反映し、実行してみた。
しかし、全然動かない。まったくもって動かない。
意味がわからない。

いろいろ調べた結果、どうやらspine用のソースをダウンロードしてきて
cocos2d-xにあるソースをアップデートしなくてはいけないようで
結構しんどかった。。。

新しいプロジェクトを作るたびにこれをやらなくてはいけなくてかなり辛かった。
(はじめてのプログラム言語で、0から書き直しを行うたびに設定していたため)

※しんどかったって言うのは、今振り返ればデバッグに相当時間がかかっていて
 設定を確認するたびになんとなくストレスを抱えていたのかなぁ

とりあえず開発は続けていた

cocos2d-xの3.2はなぜかCCLayerって書くと警告が表示されて
というかいろんなサイト様からコードを参照させてい頂き
自分のプロジェクとに書き込むと
“deprecated”の文字!
どこかのサイト様に書かれていたのですが
私がはじめたバージョンあたりで、cocos2d-xはよりC++チックに書かなくていけなくなり
Objective-Cからさらに離れたと、、、

「なぜにこのタイミングで!!!」と強く思ってた記憶があります。

それでもなんとかいろんなサイト様を見ながら
なんとなくすすめていた開発ですが、、、
シミュレーターへのデバッグに超時間がかかってしまって、

デバッグ→確認→修正というトライ&エラーを回数こなしたいのに
明らかにcocos2dよりもデバッグが長いcocos2d-x。

その長い待ち時間に、iPhoneを開いたりWebを見に行ったりを始めてしまって
開発してるつもりが、実はサボってる時間の方がながくなっていました。。。

状況打破を試みました。

iPhoneアプリはなるべく定期にリリースしたい。
一時期は2か月一回ぐらいでだせていたのに、、もう一年もだしてない。。。

ので、まず自分の作業時のボトルネックを探して見ました。
まずiPhoneをいじっている時間。
一旦作業机に座ったら、いじらないようにしようと思ったのですが
やっぱりデバッグが長くてついつい触ってしまう、弱い心

ので、「Macが重い」で検索をはじめました。

いろいろ試した結果
1週間に一度下記の対応を実施するようにしました。

クリーニング(Onyx)
ディスクの権限確認(ディスクユーティリティ)

これでMac周りの動きは大分早くなったのですが
やっぱりXcodeからデバッグに関しては全然早くならなかったです。

なんかもっとはやくならないかなぁといろいろ調べていたら
static libraryというとても、とーっても素敵な単語見つけました!!!

今の私の知識では説明しきれないかもしれませんが多分
「libraryを先にビルドしておいて、デバッグ時に毎回ビルドするのを防ごうよ」※static libraryにすることの利点。
だと思ってます。

見つけたサイト様で使用していたのがcocos2d-x 3.4だったので
3.4にバージョンアップして、いつものように先にspineの設定を終わらせようとしたら、、、

とくになんの後付処理をしなくてもspineが動いた!!!!←かなりうれしかったです。
あの毎回毎回設定してた作業はなんだったのかと
(フォルダの退避、コピー等)

しかも、この時点で3.2より3.4の方がデバッグが早い!!!

そして上記サイト様の手順に従い
static libraryを作成して反映した結果。。。。

これが、めっちゃ早い!

今、開発が楽しくてしょうがないです。デバッグ中にiPhoneとか見なくなりましたしw
レスポンスって超大事ですね。

今、私は去年考えたアプリを作っています。
まだ完成まで時間はかかりますが、とにかく楽しく作ってます。

※C++に変更して躓いているのはまた別途。