Cual es tu objetivo ¿Estás más interesado en diseñar e implementar un juego, aprender Computer Graphics o hacer un motor de juego?
Si responde “Diseñar e implementar un juego”
Comienza con Unity3D, y dentro de 1 o 2 meses después de pasar por los tutoriales, deberías poder hacer juegos simples en 3D y 2D. Las recomendaciones habituales para un buen juego 2D es un juego Match-3 (Candy Crush, etc.) o Tetris; para un juego en 3D, un juego de carrera sin fin (como Temple Run) es una buena opción.
- Cómo ganar millones o miles de millones de dólares a través de software o programación
- Cómo encontrar nuevos proyectos de software en lugar de mantener los sistemas existentes
- ¿Debo tomar un Yahoo! ¿Oferta SDE en California o una oferta Amazon SDE en Seattle?
- ¿Qué significa el código de producción?
- ¿Hay un lenguaje de programación que no necesita pruebas?
Las ventajas son que Unity3D hace que sea más fácil (no fácil, simplemente más fácil) desarrollar juegos. Si necesita algo que está más allá de su nivel de habilidad, puede obtenerlo en la tienda de activos. Las desventajas son: bueno, no conocerás la magia detrás de cómo funcionan realmente los juegos.
Además, Unity3D tiene una buena implementación de GUI. Tenga en cuenta a medida que explora otras alternativas, ya que la programación de GUI no es un paseo por el parque.
Si … “Gráficos por computadora”
OpenGL es un SDK para gráficos de computadora; si aprende OpenGL, prepárese para pasar semanas aprendiendo matrices, vectores, vértices, rotación, traslación, escalado, mapeo de texturas, etc. Aprenderá qué hace que un polígono sea un polígono, cómo representarlo con color, cómo pegar un trozo de textura en eso. Después de lo cual, probablemente tenga que aprender el manejo de entradas, el manejo de eventos y todo eso.
Con todos esos requisitos previos dominados, es posible hacer un juego simple. Tomará más tiempo que usar Unity3D, sin embargo, tendrá un fondo sólido en gráficos de computadora 2D y 3D.
Tiene varias opciones si decide comenzar con OpenGL primero. Existe WebGL, la buena forma tradicional de usar C / C ++, o usar Tao.SL con C #, etc. No tiene que estar tan pendiente de la elección del idioma. El concepto detrás de CG es más importante.
Tenga en cuenta que esto lleva más tiempo, requiere que comprenda y estudie Matemáticas (álgebra lineal, especialmente) y lo que obtiene visualmente es poco probable que sea comparable a Unity3D. Su próxima etapa será la programación del sombreador, si desea continuar con esto.
Si … “Construcción del motor”
Si haces la ruta OpenGL, probablemente habrás ideado tu propia arquitectura para alojar tu juego. Sin embargo, un motor de juego es “más” que un simple juego. A medida que sus juegos se vuelven más complejos, su motor de juego tendrá que lidiar con:
- Gestión de recursos: también hay tanta RAM que tiene una computadora; no puede cargar niveles completos, texturas o geometría 3D en su RAM. Debe poder cargar los activos que necesita, y descargarlos cuando no lo haga, y lidiar con las complejidades de la gestión de basura y la gestión de memoria
- Secuencias de comandos: para juegos más simples, es posible salirse con la lógica de los niveles de codificación y la lógica del juego en su aplicación. Sin embargo, los juegos más complejos requieren más tiempo para compilarse y desplegarse, de ahí la necesidad de secuencias de comandos. Algunos potentes motores de juegos pueden leer en scripts LUA para niveles, unidades, hechizos, comportamiento de personajes, etc.
- Serialización: guardar juegos en bases de datos o archivos y recuperarlos más tarde
- Gestión de niveles: cómo transitar de una escena a otra, etc.
- GUI: botones, casillas de verificación, barras de desplazamiento, cuadros de diálogo, etc. y su manejo de eventos
Lo importante a tener en cuenta es que si construyes algo desde cero, codificarás numerosos módulos que no tienen nada que ver con el diseño o la implementación de juegos. Habrá módulos para guardar y restaurar juegos, guardar y almacenar preferencias, y así sucesivamente.
Por lo tanto, si está más interesado en implementar un diseño de juego, le sugiero que se adhiera a Unity3D. Si está interesado en los aspectos técnicos, hágalo desde cero con OpenGL.