2012-04-10 3 views
5

과거의 모든 iOS 게임에서 게임을 하나의보기 컨트롤러, .h 파일 및 .m 파일이있는 간단한보기 기반 응용 프로그램으로 설정했습니다. 메인 실행 루프라고하는 초당 30, 40 또는 60 프레임으로 NSTimer을 설정했습니다. 나중에 개발을 위해 그래픽 업데이트 (높은 FPS)와 게임 계산 (낮은 FPS)을 나누어 지연을 줄였습니다. 나는 그래픽과 계산이 서로 의존하여 게임에서 멀티 쓰레딩/동시성을 구현하는 방법을 결코 이해하지 못했습니다 ...iOS 게임은 어떻게 설정하나요?

"진짜"게임의 소스 코드를 읽을 기회가 없었기 때문에 am 합리적인 방법으로 설정했거나 게임의 주요 프레임 워크에 완전히 잘못된 접근 방식을 취하고 루프를 돌리고 있습니까?

내 앱이 App Store의 다른 앱과 비교하여 지연 시간이 길다는 것을 알았 기 때문에이 질문을드립니다 (예 : 내 앱이 iPhone 3G에서 끔찍하게 뒤지지 만 Doodle Jump, Fruit Ninja, Cut the 로프 등은 상대적으로 부드럽게 움직입니다).

답변

9
  1. 실행 루프에 NSTimer 대신 CADisplayLink을 사용하고 싶습니다.
  2. GPU에서 최대한 많은 그림을 그리기를 원합니다. 이렇게하면 CPU주기가 자유롭게되며 하드웨어는 현재 소프트웨어에서 수행중인 많은 계산을 가속화합니다. OpenGL에서 스프라이트를 OpenGL 텍스처로 그리면됩니다. Cocos2D처럼 당신을 위해 이것을하는 라이브러리가 있습니다. Cocos2D은 스프라이트를 생성하고 애니메이션화하기위한 간단한 API를 제공하며 모든 OpenGL을 처리하므로 사용자가 할 필요가 없습니다.
관련 문제