iphone ios opengl-es cocos2d-iphone quartz-core

iphone - ¿Por dónde empezar para el desarrollo del juego? UIKit vs Core Animation vs QuartzCore vs OpenGL vs cocos2D



ios opengl-es (1)

¿Si estaba interesado en comunicar el desarrollo de juegos en el iPhone / iPAD alguna sugerencia sobre qué tecnología (s) comenzar a investigar? De hecho, solo una bala simple en cada una de estas tecnologías que resalte cómo encaja en el desarrollo de un juego típico sería genial, ya que la razón de esta pregunta era que no entendía cómo encajan estas. Así que en este caso es donde encajan estos ásperos aquí:

  • UIKit
  • Animacion central
  • Cuarzo
  • OpenGL
  • cocos2D

Me estaba dando la impresión de que cocos2D sería el camino a seguir, y parece ser una envoltura más simple para OpenGL? ¿No está seguro de dónde queda eso de UIKit vs Core Animation vs QuartzCore?


Ok, bueno, intentaré hacer una respuesta bastante larga: depende.

Ahora, para algunos pensamientos y explicaciones más largos, esto es largo. Si no lo lee hasta el final, asegúrese de leer las últimas oraciones.

Primero debo aclarar que las "tecnologías" o las API que ha enumerado están relacionadas principalmente con gráficos (excepto UIKit que también maneja entradas) y eso está bien siempre y cuando entienda que los gráficos son solo una parte (y hasta el momento). experiencia que podría agregar "menor") de un juego entero.

Además de los gráficos, habrá mucho más para manejar cuando se hace un juego real. Para no alejarme demasiado de la pregunta, permítanme hacer algunas palabras de moda: lógica del juego, inteligencia artificial, gestión de recursos, física, interacción, redes (posiblemente), sonido, etc. Mi recomendación es obtener un buen libro Sobre el tema y bucear en [1,2].

Ahora que repasé eso, volviendo a tu pregunta:

Básicamente, OpenGL y QuarzCore son las tecnologías centrales para "obtener algo dibujado en la pantalla". Todas las otras tecnologías están construidas encima de eso. Entonces, en teoría, si desea ir de esa manera, puede implementar todo lo relacionado con la salida de gráficos con OpenGL o QuarzCore solo (aunque tendrá que tener en cuenta el hecho de que QuarzCore es solo dibujo en 2D, mientras que OpenGL también admite 3D y 2D es Realmente solo un caso especial de 3D). En realidad creo que Quarz también está construido sobre OpenGL, pero no estoy seguro de eso.

UIKit está construido sobre estos y su uso hace básicamente dos cosas: a) evitar reinventar la rueda yb) hacer que la creación de interfaces de usuario sea más fácil, más rápida y más robusta. Por supuesto, puede dibujar cada botón al especificar las coordenadas de un quad y enviarlo a OpenGL para su procesamiento. Entonces tendría que verificar cada entrada de usuario si golpea su botón y llamar a un controlador asociado. Sin embargo, solo la creación de una instancia de UIButton (tal vez incluso en IB) y la especificación de un controlador de clic eliminan una gran cantidad de trabajo.

En pocas palabras: UIKit es perfecto para crear interfaces de usuario. Además, se puede utilizar junto con OpenGL y QuarzCore. Lo uso para la interfaz de usuario en iOS incluso en juegos.

Con respecto a Cocos2D: Este es un "motor de juego" construido sobre OpenGL. Como tal, incluye muchas de las cosas que tendría que manejar usted mismo al utilizar su propio motor basado en OpenGL, es decir, gestión de escenas, sprites, texturas, mallas, recursos, etc. Creo que también tiene conexiones con la física y las bibliotecas de detección de colisiones. . Sin embargo, para comprender lo que sucede allí, es necesario aprender cómo funcionan los gráficos y los juegos de computadora [1,2,3].

En pocas palabras: utilizarías Cocos2D para tus gráficos de juego (2D) y UIKit para hacer la interfaz de usuario.

CoreAnimation entonces es para animar cosas CoreGraphics. Proporciona una interfaz fácil, por ejemplo, para deslizar o rotar suavemente las cosas, encapsulando todos los cálculos necesarios (interpolaciones, redibujado, etc.). No funcionará con OpenGL, pero creo que Cocos2D también tendrá una envoltura para eso.

Línea inferior: se usa para animaciones de interfaz de usuario sofisticadas.

Habiendo dicho todo eso y simplemente rozando la parte superior, no quería asustarte en primer lugar.

Para tu juego especial (y cada juego es especial) puedes salirte con solo UIKit y CoreAnimiation para los gráficos y podría ser un juego de gran éxito. Permiten que se realice una gran cantidad de dibujos con una interfaz fácil de usar, además de que no requieren conocimientos de fondo demasiado profundos y son lo suficientemente eficaces para proyectos pequeños.

Si tienes una gran idea de juego, usa la solución de gráficos más simple posible que te satisfaga a ti y a tus jugadores y hazlo realidad. Una vez que lo tienes, puedes mejorarlo si es necesario.

[1] http://www.mcshaffry.com/GameCode/

[2] http://www.gameenginebook.com/

[3] http://www.opengl.org/documentation/red_book/