2012/05/12

cocos2d 2.0への移行


●ライブラリの移行
 既存のcocos2d1.0系プロジェクトを2.0へ移行するのはとても簡単です。基本はlibsグループ以下に登録されている各種cocos2dのソースを一旦削除して、2.0系のものを入れなおすだけです。これは今までのcocos2dのバージョンアップでも同じですね。
 
 1.0系ですと、大体以下のものが置かれてます。
 ・cocos2d
 ・CocosDenshion
 ・cocoslive
 ・FontLabel
 ・TouchJSON
 
 これを2.0にすると以下のようになります。
 ・cocos2d
 ・CocosDenshion
 ・kazmath

 kazmathは見慣れないものですけど、中身をみるとベクトル・マトリクス演算系のライブラリだということが分かります。OpenGLES2.0ではマトリクス演算が弱くなるので、そのあたりを補完するためにはいっているのだろうと予想します。
 
●その他の設定
 さて、上記入れ替えと、いくつかProjectのBuild Settingsに値を変更しないといけません。
 
・Header Search Pathsの指定
 なぜかkazmathへのパスが通らないことがありますので、以下のような感じで設定しておきます。
 $(SRCROOT)/../cocos2d-iphone-2.0-rc1/external/kazmath/include/
 
・コンパイラの変更
 Apple LLVM compiler 3.1 にします。

・PreprocessingへDefineを追加
 Apple LLVM compiler 3.1 - PreprocessingのReleaseへ値を追加します。
 NDEBUG
 NS_BLOCK_ASSERTIONS=1
 以上の2つです。別にこれがなくても困りませんが、cocos2d 2.0のテンプレートでプロジェクトを生成すると上記の設定が行われるので、やっておいたほうがいいでしょう。

●初期化周りのソースの修正
 cocos2d 2.0では1.0系と違ってglViewの生成に関する部分が大きく変更されていますので、AppDelegate.mとかを2.0で生成したプロジェクトのソースをコピペして少し整える必要があります。あと、いままで使用していたRootViewController.mは必要なくなるので、削除します。cocos2dのフレームバッファ初期化部分をカスタムしていない人はそれほど大変な作業ではありません。カスタムしてトリッキーなことをさせていた場合には何がどうなっているか理解してから修正しましょう。
 あんまり簡単に修正できたので、僕の認識では、libsだけ入れ替えたら普通にビルドできましたよーとか勘違いしてましたが、初期化部分はソースの修正必要です。


 以上で移行完了です。普通にビルドも通るとおもいます。ひょっとしたらフレームワークが足りないことがあるかもしれませんが、怪しいところはGameKitくらいですかね。
 公式の移行ガイドがここにありますので、参考にしてみてください。変更になったAPIなども書かれていますので、複雑なプロジェクトの場合には影響があるかと思います。
 
 ではー。

1 件のコメント:

  1. この作業の過程で、cocos2dの予約関数とか、自前関数とかの色がちゃんと色つきで表示され無くなっちゃったら、XCodeのValidate Settingsを実行すると直るみたいです。

    返信削除