Aprender a desarrollar aplicaciones 3D a tiempo real

Comentario original:

Hola Urian.

Me encuentro estudiando un curso de desarrollo de aplicaciones multiplataforma, pero es el primer año que se imparte en este centro, así que los profesores aprenden a la misma medida más o menos que nosotros los alumnos.

Tal y como hablas de OpenGL, me gustaría saber qué sería tu consejo para desarollar juegos 2D y 3D en Android, ya que nos vamos a embarcar en ello ahora y antes de empezar erróneamente en algo sin futuro (OpenGL 2.0) querría saber de alguna API mejor implementada o más potente, o simples consejos.

Un saludo.

Ahora bien, vayamos al tema que toca y esto que voy a decir ahora puede resultar descorazonador para muchos pero no desfallezcáis, yo lo aprendí de la forma más cruel, la de empotrarse contra el muro.

CoyoteMuro

El gran error en el que se cae es pensar que saber OpenGL significa que entiendes los gráficos en 3D a tiempo real, es falso, OpenGL es solo la herramienta pero no es el conocimiento. OpenGL no es más que el pincel con el que dibujas el lienzo pero si no sabes dibujar el lienzo entonces lo que saldrá estará limitado a la capacidad de tu conocimiento por lo que aprender a utilizar una API de cara a los gráficos en 3D es algo que debería ser posterior a muchas cosas:

  1. Lo primero que tenéis que hacer es aprender álgebra para tener el nivel de conocimiento y la herramienta más utilizada para la manipulación de gráficos son precisamente las operaciones con vertices y matrices. Sí ya tenéis algo de soltura en un lenguaje de programación (aunque el libro esta pensado en C y C++) os recomiendo este libro, por experiencia propia con el mismo os lo recomiendo ya que es accesible, claro y esta pensado para informáticos y no para matemáticos aparte de estar dirigido al desarrollo de videojuegos.
  2. Para entender los gráficos en 3D de forma específica y antes de ir a por las APIs un libro que recomiendo después de tocar el libro recomendado en el punto 2 es el siguiente: WattLibro3DEl mio lo robe de la biblioteca de mi universidad tras ver lo que contenía. Aún no lo he devuelto porque es una joya que no se centra en explicarte como funcionan los gráficos por ordenador desde el punto de vista de enseñarte una API sino que te enseña como funcionan de verdad desde el punto de vista matemático.
  3. Tanto OpenGL como Direct3D trabajan con búfers de memoria de forma continuada, cualquier persona que haya desarrollado en C y C++ sabe perfectamente que es un tema que no se aprende en dos días, no os metáis en ninguna API en 3D hasta que no tengáis cierta soltura con esos lenguajes, tened en cuenta que la casa no se empieza por el tejado y lo mejor es que a medida que vais aprendiendo primero el algebra y luego los fundamentos matemáticos para los gráficos en 3D vayáis aplicando vuestros conocimientos poco a poco experimentando y aprendiendo.

En cuanto a tu proyecto, hay dos cosas que me gustaría decir.

En primer lugar has de tener en cuenta que todo lo que tenga que ver con la informática no tiene futuro ya que es un mundo en constante desarrollo donde tienes que ir siguiendo el ritmo y donde si te bajas del tren este pasa de largo y luego es muy fácil caerse por lo que recomiendo que no te centres en una cosa solamente y luego vayas evolucionando. Por el momento OpenGL ES 2.0 es una API excelente para aprender el desarrollo de juegos en 3D a tiempo real pero se ha de tener visión de futuro pero como base es muy buena, es el equivalente a un Direct3D/DirectX 9 pero para empezar e ir progresando esta muy bien. Por cierto, huye de cualquier OpenGL ES 1.x u OpenGL 1.x, estan completamente desfasados ya que no utilizan el paradigma de los shaders y si a Nintendo que quedo atrapada en una API de ese tipo ha tenido problemas para adaptarse imaginate un desarrollador novel y no lo digo por Nintendo, yo aprendi OpenGL 1.x por encima, en un curso muy express y con mucho estrés y ahora mismo esos conocimientos no me sirven de nada ya que a partir de la llegada de los shaders el paradigma cambio por completo. Obviamente ahora tenemos más tipos de shaders pero los básicos que son los vertex y los pixel/fragment shaders no han cambiado.

En segundo lugar es igual por completo como hayas desarrollado el producto sino que lo que importa es el resultado para el usuario final, y sobretodo es importante no buscar el ego en lo más complejo sino en ir haciendo pequeños pasos, pequeños logros con los que alimentar tu autoestima y poder seguir adelante. No te confundas con la gloria del resultado final de un tercero porque entre la nada y esa gloría han habido muchos pasos por el camino, muchas caidas y muchos pequeños éxitos.

Animo y suerte con el proyecto.

Anuncios