Si desea utilizar un motor de juego, la elección depende de usted. Unity, Unreal, Cry Engine y otros tienen sus méritos. En mi experiencia, la mayoría de la industria de desarrollo de juegos que usa cualquiera de los motores mencionados usa principalmente Unity o Unreal.
No existe un lenguaje particular que sea el mejor lenguaje para desarrollar juegos. Históricamente, C ++ se utilizó ampliamente durante mucho tiempo, pero hay una cantidad considerable de la industria que se ha alejado de C ++. Si quieres aprender C ++, puedes hacerlo. Si no quieres, hay alternativas. En definitiva, el lenguaje depende de ti. Yo personalmente recomiendo C #.
Una cosa a tener en cuenta es que es aconsejable elegir un idioma que tenga otros usos. Por ejemplo, si aprende C #, puede escribir juegos u otras aplicaciones. Pero si usa un lenguaje oscuro creado para un motor de juego, es posible que no lo use fuera de ese motor de juego.
Si desea utilizar un motor, no necesita aprender OpenGL porque los gráficos se ocupan principalmente de usted. Si quieres escribir juegos desde cero sin usar un motor, entonces aprende.
En algunos casos con un motor, es posible que desee escribir sus propios sombreadores, pero los grandes motores no requieren que escriba en OpenGL, generalmente usan HLSL o Cg.
Si desea escribir juegos desde cero, debe familiarizarse con una biblioteca de juegos. Si sigue esta ruta, tenga en cuenta que algunas bibliotecas de juegos no incluyen un motor de física, por lo que deberá familiarizarse con eso también si ese es el caso.
Por lo general, algunos de los conceptos principales en el desarrollo de juegos son:
- concurrencia
- sonido
- gráficos
- detección de colisiones
- entrada
Si haces un juego desde cero, tendrás que codificar todo esto tú mismo. En un motor de juego, gran parte del trabajo pesado se hace por ti. Por ejemplo, cuando crea un juego desde cero y desea verificar una colisión, debe verificar si las posiciones de los objetos se superponen, mientras que en un motor puede verificar un booleano como isColliding.
Independientemente de si usa un motor o desea hacer un juego desde cero, debe tener un buen conocimiento de las matemáticas vectoriales. Las posiciones y movimientos de los objetos en un juego se manejan con vectores.
Utilizo un motor de juego para todo mi trabajo, pero cuando comencé, codifiqué todo desde cero. Hoy en día, gran parte del desarrollo del juego se realiza con motores, lo cual está bien. Sin embargo, el conocimiento que adquieres al hacer un juego desde cero es invaluable. En mi experiencia trabajando para varias compañías de juegos, he descubierto que mis compañeros de trabajo que tenían experiencia previa escribiendo juegos desde cero tendían a ser más completos como desarrolladores de juegos, y eran mejores para solucionar problemas porque estaban más familiarizados con el subyacente problemas.
Es probable que use un motor de juegos si se une a una empresa de desarrollo de juegos. Sin embargo, muchas empresas desarrollan sus propias herramientas y no utilizan Unity, Unreal o similares. Si te conviertes en un experto en un motor y luego te unes a una compañía que usa otro, aún estarás bien porque entender los motores de juego es en sí mismo un arte. El punto es que no tienes que aprender a hacer un juego desde cero, pero podría ser útil. Aprender un motor de juego definitivamente será útil, en mi opinión.
Recoge un libro o mira un tutorial y comienza a escribir juegos. La mejor manera de aprender es hacerlo, ¡así que escriba el código!