2011-11-21 14 views
16

Si estuviera interesado en conocer el desarrollo del juego en el iPhone/iPAD, ¿alguna sugerencia sobre qué tecnología (s) empezar a buscar? De hecho, solo una simple viñeta en cada una de estas tecnologías que resalte cómo encaja en el desarrollo del juego típico sería genial, ya que el motivo de esta pregunta era que yo no entendía cómo encajaban. Así que en este caso es donde hacer estas más o menos en forma en aquí:dónde comenzar para el desarrollo del juego? UIKit vs Core Animation vs QuartzCore vs OpenGL vs cocos2D

  • UIKit
  • Core Animation
  • QuartzCore
  • OpenGL
  • Cocos2d

que estaba recibiendo la impresión de que Cocos2d sería el camino a seguir, y parece ser un envoltorio más simple para OpenGL? ¿No estás seguro de dónde queda eso UIKit vs Core Animation vs QuartzCore entonces?

Respuesta

38

Bien, voy a tratar de hacer una respuesta bastante larga: depende.

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

primero tengo que aclarar que las "tecnologías" o API de que usted ha enumerado son en su mayoría afecta exclusivamente a los gráficos (excepto UIKit que también maneja la entrada) y que está bien, siempre y cuando usted entienda que los gráficos es solamente una parte (y a partir de mi experiencia podría agregar "menor") de un juego completo.

Además de los gráficos, habrá un poco más para manejar al hacer un juego real. Para no alejarme demasiado de la pregunta, permítanme agregar algunas palabras de moda: lógica del juego, AI, administración de recursos, física, interacción, redes (posiblemente), sonido, etc. Mi recomendación es conseguir un buen libro sobre el tema y bucear en [1,2].

Ahora que La he leído que, de vuelta a su pregunta:

Básicamente, OpenGL y QuarzCore son las tecnologías básicas a "conseguir algo dibujado en la pantalla". Todas las otras tecnologías se basan en eso. Así que, en teoría, si quiere ir de esa manera , puede implementar todo lo relacionado con la salida de gráficos con OpenGL o QuarzCore solo (mientras que tendrá que considerar el hecho de que QuarzCore es solo de dibujo 2D, mientras que OpenGL también admite 3D y 2D es realmente solo un caso especial de 3D). De hecho, creo que Quarz también está construido sobre OpenGL, pero no estoy seguro de eso.

UIKit está construido encima de ellos y usarlo básicamente tiene 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, puedes dibujar cada botón especificando las coordenadas de un quad y enviándolo a OpenGL para su procesamiento. Luego, debería verificar cada entrada de usuario si toca su botón y llamar a un controlador asociado. Sin embargo, solo crear una instancia de UIButton (quizás incluso en IB) y especificar un controlador con clic elimina bastante trabajo.

Conclusión: UIKit es ideal para crear interfaces de usuario. Además, se puede usar junto con OpenGL y QuarzCore. Lo uso para la interfaz de usuario en iOS incluso en juegos.

En cuanto a Cocos2D: Este es un "motor de juego" construido sobre OpenGL. Como tal, incluye muchas cosas que tendrías que manejar tú mismo al rodar tu propio motor basado en OpenGL, es decir, administración de escena, sprites, texturas, mallas, recursos, etc. Creo que también tiene conexiones con bibliotecas de física y de detección de colisiones. . Sin embargo, para entender lo que sucede allí, se requiere aprender cómo funcionan los gráficos y los juegos de computadora [1,2,3].

En pocas palabras: utilizaría Cocos2D para sus gráficos de juegos (2D) y UIKit para hacer la interfaz de usuario.

CoreAnimation es para animar cosas de CoreGraphics. Proporciona una interfaz sencilla, p. para deslizar suavemente o rotar cosas alrededor, encapsulando todos los cálculos requeridos (interpolaciones, redibujado, etc.). No funcionará con OpenGL, pero creo que Cocos2D también tendrá un contenedor para eso.

En pocas palabras: Úselo para las animaciones de la interfaz de usuario sofisticada.

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

Para su juego especial (y cada juego es especial) es posible que se salga con UIKit y CoreAnimiation para los gráficos y que bien podría ser un juego superventas. 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 tiene una gran idea de juego, use la solución de gráficos más simple posible que satisfará a usted y a sus jugadores y se dará cuenta de ello. Una vez que lo hayas desarrollado, aún puedes mejorarlo si es necesario.

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

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

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

+0

excelente - gracias por la información general - Voy a ver las referencias. por cierto, ¿alguna razón por la cual uno no iría por cocos2d sobre Core Animation? es decir, ¿sabes si Cocos2d puede hacer lo que Core Animation puede hacer y más? – Greg

+0

No estoy realmente interesado en Cocos2D, pero creo que puede hacer lo que CA puede hacer y más, pero en términos de OpenGL en lugar de Quarz. Así que las animaciones de UIKit y Quarz irán con CA, todo lo demás con Cocos, pero como dije, no estoy seguro de lo que ofrecen (pero normalmente cualquier motor de juego decente tiene una biblioteca de matemáticas bastante buena para respaldarlo). –

+1

Y sí, lo que me viene a la mente es que Cocos2D es un (juego de lectura completa pero no lo puedo confirmar) "motor de juego" y CA es simplemente una forma sencilla de agregar animaciones a los elementos de la interfaz de usuario, así que es una diferencia . –