アプリつくってみっか!趣味でiPhone/Androidアプリを開発し、日々勉強した事を書いています。オープンワールド系レースゲームをUnityで開発中です。この広告は、90日以上更新していないブログに表示しています。Kitとcocos2dのパフォーマンス対決、いよいよ今回が最終戦となります。この対戦の勝者が私の(エセ)スペースハリアープロジェクトのゲームエンジンに採用されることになります。今回は、プロジェクトの実現に不可欠な「スペースハリアー的な地面の表示」におけるパフォーマンスを比較します。次のような縞模様の地面を表示し、地平線の上下動と左右へのスクロールを行うプログラムを作ります。縦方向へのスクロールは現段階では実装しません(できてません)。幅1600ピクセルx高さ640ピクセルのスプライトの頂点を移動させる事で地平線を上下させたり3D的に左右にスクロールさせます。この地面データの作り方につきましてはこちらやこちらをご参照ください。実際に動いている画面はこのようになります。Kitでも全く同じ動作が実現できています。KitではSKEffectNodeをつかってCIPerspectiveTransformというフィルターを掛けます。地平線を上下させるには上の二つの頂点を上下に動かし、スクロールさせるには下の二つの頂点を左右に動かします。それではパフォーマンスを見てみます。負荷が高くなるように地平線を一番上まで上げた状態でチェックします。画面上のfps表示では60fpsはキープできているようですが、Xcodeのデバッグ画面で見てみるとGPUのフレーム時間は14msともう余裕が全くありません。16.67msを超えると60fpsをキープできずにコマ落ちするはずです。地面の表示だけでこの余裕のなさということは、残念ながらこのCIPerspectiveTransformによる方法はゲームには使えそうにありません。cocos2dcocos2dではノードのquadプロパティを書き換えることでスプライトの頂点を移動する事ができますが、標準ではquadプロパティはread-onlyなので自分でセッターを実装する必要があります。プロジェクト終了の危機を感じ、ドキドキしながら結果を見てみます。おお、2ms!cocos2dの圧勝です。16.67msまではまだまだ余裕があります。Kitでもっと軽く実装する方法があるかもしれませんが、残念ながら自分には思いつかないので、cocos2dを使う事に決定しました。パフォーマンス以外にも、cocos2dには「スプライトの各ノードがスケジュールを実行できる」とか「onExitで参照外しのためのクリーンナップができる」など便利な機能がたくさんあります。Kitで実現するにはかなり面倒なことになりそうです。参考までに、cocos2d版の地面を動かす部分の実装はこうなっています。_repeatWidthは縞模様1パターン分の幅で、この範囲でテクスチャーを傾けたり戻したりしています。両端が画面外に隠れているので無限にスクロールしているように見えると思います。v2.0を使い続けて来ましたが、v2.1がリリース...2013-11-10【偽スペースハリアー】地面の横縞をとりあえず表示。偽スペースハリアープロジェクトを引き続き進めています。アプリこの商品を含むブログを見るプロフィールid:takujidev個人でiPhone/Androidゲームを開発しています。ミツバチ軍団vs昆虫軍団の縦スクロールシューティング。