ラベル cocos2d の投稿を表示しています。 すべての投稿を表示
ラベル cocos2d の投稿を表示しています。 すべての投稿を表示

2014年7月10日木曜日

cocos2d最新バージョン v3.1非互換に驚愕!(その1)

cocos2dの最新バージョン v3.1がリリースされていましたので、新機能や非互換の調査がてら現在開発中のプロジェクトで使ってみる事にしました。

 cocos2d v3.1ダウンロードサイト:http://www.cocos2d-swift.org

URLに「swift」が付いてて驚きですね。
cocos2d自体のswift言語での書き換え作業も進んでいるって事なのでしょうか。。。

このページのdownloadsリンクから以下のファイルをダウンロード&インストール。
「SpriteBuilder」とは以前に「CocosBuilder」として開発されていたGUIでcocos2d用画面を作ることのできるツールの様です。

その機能がcocos2d v3.1では標準で組み込まれたと思われます。(多分...)

-------------------------------------------------------------------------------------------------

現在はcocos2d v2.1でコーディングしているプロジェクトからv3.1へのマイグレーション作業になります。

まずは現行プロジェクトでは違う名前で「新規プロジェクト」にて新規に作成します。

以前のバージョンでは物理エンジン(Box2d or Chipmunk)を使ったプロジェクトも選択肢として選べたのに無くなってますね。(^^ゞ

逆に良く分からん「cocos2d iOS Newton」ってのがありますが、何なんでしょうね。。。
取り敢えずは標準と思われる「cocos2d iOS」を選択して新規プロジェクトを生成。

ファイル構成内には「Chipmunk」フォルダが出来てるんで物理エンジンはChipmunkに一本化されたって事なのでしょうか???

開発中のプロジェクトで物理エンジンを使う予定はありませんので、「Chipmunk」フォルダを削除してビルドしてみるとエラーで実行できない。(^_^;)

いろいろ辿ってみましたがどうも「Chipmunk」フォルダを消すのはダメなようでした。
邪魔になる訳でもないので取り敢えずは元に戻して先を進めます。

Resourcesフォルダのpngファイルやサウンドファイルとかリソースファイルをコピーして取り込みます。 リソースファイルなんで特に問題無く移行完了!

次からはヘッダーやソースファイルを移設していきます。

まずは非互換が少ないと予想されるデータ管理用のモデルクラスから。。。

ここで大きな非互換がありました。(^_^;)

どうもcocos2dライブラリ全体がAutomatic Reference Counting (ARC)対応されているみたいです。 これも時代の流れですので当然の対応ですね。

現行プロジェクトではcocos2dライブラリもARC未対応でしたので、私の書いていたコードもARCには対応してませんでした。

cocos2dライブラリがARC対応したって事で私の書いたコードもARC対応していきます。
ARC対応自体は比較的簡単ですので、「@property(nonatomic, retain)」の「retain」部分を「strong」に変更したり、「autorelease」や「- (void)dealloc」を消したりしていきます。

面倒ですけど、機械的に進められる作業なんで地道に修正していきます。


長くなってきたんで、ではまた〜


2012年1月30日月曜日

「二角取りSolitaire」アプリリリース:cocos2d移植性の高さ

iPad版アプリ「二角取りSolitaire HD」を1月24日にリリースしました。

iPad版アプリ開発完了後、Mac版への移植作業を始めて1月28日にはMac App Storeへ「二角取りSolitaire」及び「二角取りSolitaire FREE」をリリースできました。(わずか4日違い)

実際にはアップル社によるアプリ審査がiPad版では1月18日に申請してApple Storeにリリースされたのが1月24日ですから約6日間で、Mac版については審査対象のアプリ数が少ないためか1月25日申請でリリースが1月28日でしたので半分の3日間でリリースされています。

このアプリはcocos2dと言う2Dゲームライブラリを使って開発していますのでiPad版のソースを元にMac版を作成した場合、比較的簡単にMacへ移植することができます。


iOSアプリとMacアプリの違いで一番面倒なのは画面の座標系の違いがあります。 iOSで使われているUIKitでは左上が原点となり下に向かってY座標は大きくなります。(コンピュータでは一般的な座標系かな)
それに引き換えcocoaでは左下が原点になりY座標は上に向かって大きくなる座標系で通常のコンピュータで利用する座標系とは反対になるので違和感を感じますが数学的には左下を原点とする座標系の方が正しいので座標変換とか数学的な変換を考えて左下原点を採用したのではないかと推測しています。

とは言え、cocoaの後に出来たiOSアプリ開発用のUIKitライブラリがなぜ左上原点を採用したのか気になるところですが他の携帯デバイス開発者(アップル以外の開発者!?)を取り込むためだったのか良く分かりませんが私的には間違った判断だったのではと思います。(^^ゞ
└それとも合理的に納得できるような理由があるのかな。。。


しかし、cocos2dを使って開発していればこのような座標系の違いを意識する必要もなく画面表示に関わる部分については殆どそのまま動作しますのでMac用に書き換える必要は殆どありません。
└cocos2dでの原点は左下原点になります。

イベント関連ではタッチイベントがマウスによるクリック操作に変更になりますのでメソッド名等の変更が必要になりますが若干の変更で対応可能です。

逆にMacへの移植時に変更が必要な点はiOSとMacでは利用できるcocoaライブラリに違いがありますので、UIxxxxで始まるようなメソッド・関数等はcocoaライブラリ(NSxxxx)のメソッド・関数へ変更する必要があります。 良くあるのは画像取得や変換、ファイル入出力まわりでしょうか。

また、ファイルの保存先であるディレクトリ構成も違いますのでMac版では保存先ディレクトリも変更が必要です。(結構簡単に対応可能)

あとはiOSとMacではユーザーインターフェイスが違いますのでMac版ではMac固有のユーザーインターフェイス(アバウト画面、ドロップダウンメニュー、ウインドウ制御)への対応が必要となります。

それと意外に面倒なのはiOSではアプリの認証(購入済みアプリであるかのチェック)に関する部分は特に開発者側で考慮する必要はないのですが、MacアプリではMac App Storeで購入したアプリの認証チェックを自前で用意する必要があります。(アップル社からは提供されない)

Mac App Store開設当初はアップルホームページに公開されたチェックの手順と簡単なコーディング例しか無く苦労しましたが、今では有志の方が作成したアプリ認証チェック用の関数がありますので比較的楽に実装できるようになりました。


iOSからMacへの移植作業ですが今回のアプリの場合では大体2〜3日間程度(有料版と無料版の2アプリ)で移植作業が完了できたのはやはりcocos2dライブラリの恩恵が大きいと思います。 特に描画関係のライブラリはcocoaとUIKitでは座標系以外にも殆ど違うって言っていいくらい変更が必要になりますので、その描画やアニメーション等のエフェクトに関する部分をcocos2dが吸収してくれますので効果は絶大だと思います。

cocos2dライブラリを使ってiOSアプリを開発している方は多いと思いますので、Macへの移植にも挑戦してみては如何でしょうか。