2011-12-17 3 views
1

メインループを40 fpsで呼び出すNSTimerをベースにしたゲームを作成しています。最新のiPod touchであっても、 。マルチスレッドを使用してフレームレートを低下させずにラグを減らすことは可能でしょうか、複雑な計算を行う際にUIを応答し続けるためのマルチスレッディングですか?それが使用できるのであれば、実装方法についてのチュートリアルを教えてください。ゲームでマルチスレッドを使用する方法(iOS)

答えて

5

一般に、時間のかかる操作をメインスレッドから外すことをお勧めします。メインスレッドはアプリケーションのユーザーインターフェイスを処理し、それをブロックすると、標準のUI要素が更新されたり、イベントが登録されるのを防ぎます。あなたのゲーム(物理学、AIなど)の場面の後ろでどのくらいの処理が行われているかに応じて、重要なチャンクをバックグラウンドスレッドに移動する必要があるかもしれません。

マルチスレッドでは、単純な話題ではありませんが、Appleはグランドセントラル派遣を通じて、この非常に簡単になりましたので、私は非常に

Appleが持っているアプリケーションでマルチスレッドを実現するために、このおよびその他の技術を説明し、そのConcurrency Programming Guideを読んでお勧めします「OpenGL ESプログラミングガイドfor iOS」に「Concurrency and OpenGL ES」と題するセクション全体が含まれています。その中で、マルチスレッドを使用したOpenGL ESアプリケーションのパフォーマンスを改善するためのいくつかのシナリオについて説明します。

-1

UIKITで高いFPSを必要とするゲームをしないでください。 2Dゲームの場合はQuartz、COCOS2D(OpenGLベース)、3Dの場合は@AjeetのようにOpenGLを使用するか、高性能FPSのためにiOS用の3Dエンジンを探してください。

+0

ここにcocos2dのリンクがあります:http://www.cocos2d-iphone.org/ – samfisher

+0

基本的に、エンジンなしでゲームをすることはできないと言っていますか? – Greg

+0

残念ながら、あなたは間違っています。いいえ、私はそれを何とかしていませんでした。私はこれまでにこれを自分でやったことがあります。私は明示的に言った: "高いFPSを必要とするゲーム"。高いFPS(フレーム/秒/フレームレート)とたくさんのアニメーションが必要な場合は、確かに意味します。 – samfisher

関連する問題