2012-04-10 19 views
5

En todos mis juegos anteriores de iOS, he configurado el juego como una simple aplicación basada en vistas con un controlador de vista, archivo .h y archivo .m. Configuré un conjunto de NSTimer a 30, 40 o 60 fotogramas por segundo que llamó al ciclo de ejecución principal. Más tarde en el desarrollo, dividí las actualizaciones gráficas (a un FPS más alto) y los cálculos del juego (FPS más bajo) para reducir el retraso. Nunca entendí cómo implementar multiprocesamiento/concurrencia en los juegos ya que los gráficos y cálculos dependen uno del otro ...¿Cómo se configuran los juegos iOS?

Dado que nunca he tenido la oportunidad de leer el código fuente de un juego "real", estoy ¿Lo estoy configurando de una manera razonable, o estoy tomando un enfoque totalmente erróneo para el marco principal del juego y el bucle de ejecución?

Lo pido porque me he dado cuenta de que mis aplicaciones tienen bastante retraso en comparación con otras aplicaciones en la tienda de aplicaciones (por ejemplo, mi aplicación se demora horriblemente en un iPhone 3G, pero Doodle Jump, Fruit Ninja, Cut the La cuerda, etc. se ejecuta con relativa facilidad).

Respuesta

9
  1. Desea utilizar CADisplayLink en lugar de NSTimer para su ciclo de ejecución.
  2. Desea hacer todo el dibujo posible en la GPU. Esto liberará los ciclos de la CPU y el hardware acelerará una gran cantidad de cálculos que está realizando actualmente en el software. Para ello, dibuja tus sprites en OpenGL como texturas OpenGL. Hay bibliotecas que hacen esto por ti, como Cocos2D. Cocos2D proporciona una API simple para crear y animar sprites, y hace todo el OpenGL bajo el capó para que no tenga que hacerlo.
Cuestiones relacionadas