2012-04-10 13 views
5

過去のすべてのiOSゲームで、1つのビューコントローラ、.hファイル、.mファイルを持つシンプルなビューベースアプリケーションとしてゲームをセットアップしました。私はNSTimerを毎秒30,40、または60フレームに設定して、メイン・ループを呼び出しました。後で、開発のために、グラフィック・アップデート(より高いFPSで)とゲームの計算(より低いFPS)を分割して、遅れを減らしました。グラフィックと計算が互いに依存しているため、ゲームでマルチスレッド/同時実行を実装する方法を理解できませんでした...iOSゲームはどのように設定されていますか?

「本当の」ゲームのソースコードを読む機会は一度もありませんでした。私は合理的なやり方でそれを設定しているのですか、あるいは私はゲームのメインフレームワークに完全に間違ったアプローチをしてループを実行していますか?

私は、私のアプリがApp Store上の他のアプリと比べてかなり遅れていることに気が付いたので、私はこれを尋ねます(例えば、私のアプリはiPhone 3Gではひどく遅れていますが、Doodle Jump、Fruit Ninja、Cutロープなどは比較的スムーズに動く)。

答えて

9
  1. 実行ループにNSTimerの代わりにCADisplayLinkを使用します。
  2. できるだけ多くの描画をGPUで行いたいと思います。これによりCPUサイクルが解放され、ハードウェアはソフトウェアで現在実行中の多くの計算を高速化します。これを行うには、スプライトをOpenGLテクスチャとしてOpenGLで描画します。 Cocos2Dのようなあなたのためにこれを行うライブラリがあります。 Cocos2Dは、スプライトの作成とアニメーション化のためのシンプルなAPIを提供しています。
関連する問題