¿Cómo elegir motor gráfico?
Elegir un motor gráfico (o motor de videojuegos) siempre es una tarea difícil cuando comenzamos en el mundo del desarrollo de videojuegos. Siendo principiantes en el uso de estas herramientas puede ser abrumador investigar cuáles son las más adecuadas y descubrir que existen decenas de game engines que podemos utilizar.
Lo contrario también sucede. Si tenemos alguna experiencia trabajando en este mundillo, probablemente ya nos hemos forjado una idealización de algún engine que nos parece el mejor y del que dependemos para realizar todos nuestros proyectos. Yo te entiendo. Esto no es la mejor solución.
Si te has preguntado “¿cuál es el mejor engine para desarrollar videojuegos?”, ese es sin duda el famoso depende. Lo sé. Justo ahora acabas de experimentar esa pequeña frustración del tan odioso y ambiguo ‘depende’ que en ocasiones es tan necesario. Este en concreto no es ese caso.
Si te identificas con ese sentimiento de frustración que mencione antes es porque no tienes una respuesta clara. De hecho el problema no es la respuesta, sino que estás haciendo la pregunta incorrecta.
¿Cuál es el mejor motor de videojuegos?
En internet existen numerosos debates, discusiones y comparativas sobre cuál de ellos es el mejor en rendimiento gráfico, simulaciones de físicas, entornos y lenguajes de programación, etc. La realidad es (y esto quizá no le guste a muchos) que todos los motores gráficos ahí fuera, comerciales y privados son exactamente lo mismo sin distinción alguna.
Así es. Todos, sin excepción, son lo mismo y esto tiene una explicación lógica: un engine es una pieza de software que con la ayuda de sub-sistemas (motor de audio, motor de físicas, motor de rénder, etc.) ayuda a los desarrolladores a construir nuevas piezas de software interactivo, comúnmente videojuegos.
Todos los engines cumplen la función de dibujar en pantalla proyecciones en planos tridimensionales o bidimensionales a través de sistemas de polígonos, con movimientos basados en transformaciones de puntos representados por matemática vectorial y renderizados por instrucciones gráficas que se encargan de colorear los píxeles en pantalla. Esto es una explicación burda y simplificada, pero nos ayuda a entender de forma muy general lo que hacen.
Para ser justos, no son del todo iguales. Poseen diferencias internas y de bajo nivel (hablando de arquitectura de software). Aún así estas diferencias no son lo suficientemente fuertes para determinar que un motor sea mejor que otro, porque, a menos de que te encuentres desarrollando funcionalidades o herramientas muy exóticas a bajo nivel, lo cierto es que no notaras esas diferencias con ninguno de ellos.
Aún con sus diferencias casi imperceptibles, en esencia los engines son lo mismo, así que no es del todo objetivo preguntar “¿cuál de ellos es mejor?”. Entonces ¿cuál es la pregunta correcta para escoger uno?. Eso es algo que si es posible responder. Es tan sencillo como tomarnos un momento y pensar en los requerimientos de nuestro proyecto.
¿Cuál motor de videojuegos cubre mis necesidades?
Esta es la pregunta correcta. Una vez que has delimitado cuáles son los requerimientos de tu proyecto y los objetivos que deseas cumplir esta será la pregunta que debes hacerte.
El motor que usaras es una decisión completamente personal, sin embargo, quiero ilustrar algunos puntos que puedes considerar para tener una línea de partida un poco más sólida y no comenzar desde cero. Nos enfocaremos en el desarrollo de videojuegos como objetivo final.
Aspectos generales
Si lo que deseamos es construir videojuegos con un alto nivel de facilidad en el manejo de la herramienta, la opción más popular es Unity. Este motor tiene una alta cuota de mercado debido a que es una herramienta con una curva de aprendizaje bastante amable con el usuario. Puedes aprender a utilizarlo tan pronto como experimentes un par de proyectos.
Si buscas crear experiencias más realistas y de calidad AAA, entonces la opción más popular es Unreal Engine. Su curva de aprendizaje es más pronunciada que la de Unity, pero a cambio ofrece un mayor control de features y herramientas integradas que cubren todas las necesidades y van más allá de lo que puedes necesitar.
Ambos, Unity y Unreal permiten crear videojuegos tanto en 3D como 2D, pero si buscas una mejor experiencia en el desarrollo 2D la herramienta ideal es Godot Engine. Un engine open source que continúa evolucionando y mejorando día a día gracias a su comunidad de entusiastas. También permite la creación de videojuegos 3D.
Distribución y plataformas
Los tres mencionados anteriormente te permiten desarrollar para diversas plataformas. Desde PC y Mac como base, pasando por plataformas WebGL, consolas como Nintendo Switch, PlayStation y Xbox, hasta dispositivos móviles como Android y iOS.
Programación
En el caso de Unreal el lenguaje de programación base es C++. Este es un lenguaje muy versátil, poderoso y sobre todo rápido en ejecución, lo cual lo convierte en un lenguaje de programación ideal para el desarrollo de videojuegos.
Otra ventaja de Unreal es que se puede programar en un lenguaje de programación visual a través de nodos, sin la necesidad de escribir una sola línea de código. Esto supone un entrono amigable tanto para programadores como para artistas o miembros no técnicos.
En Unity el lenguaje predilecto es C#. Un lenguaje de programación igualmente poderoso y versátil que se enfoca en la programación orientada a objetos (OOP en inglés). Aquí las funcionalidades de los objetos son scripts de código basados en sistemas de componentes. Al igual que Unreal, Unity ofrece un sistema de programación visual llamado Bolt.
En el caso de Godot el lenguaje de programación predilecto es GDScript. Un lenguaje de programación de alto nivel con tipado dinámico que es muy similar a Phyton (bloques basados en indentación y palabras clave). También es posible utilizar C# como lenguaje de programación.
Rendimiento y recursos
Este es uno de los apartados cruciales para escoger el engine adecuado para nuestros proyectos. El rendimiento del motor y su consumo de recursos para con nuestro ordenador es el elemento clave o por lo menos uno de los más importantes a la hora de hacer nuestra elección.
Comparando nuestros tres ejemplos anteriores encontraremos que el más ligero y de bajo consumo de recursos es Godot. Siendo una aplicación autocontenida, Godot es un software que pesa tan solo unas decenas de megabytes (mucho menos de 100MB). Esto lo convierte en una aplicación ligera y que es capaz de ahorrarnos un montón de memoria en disco.
El segundo en la lista es Unity. Gracias a su sistema de versiones podemos descargar el software en distintas presentaciones. Con la ayuda de su sistema de control de paquetes podemos modular las herramientas que necesitamos al paso que avanzamos nuestros proyectos, permitiendo que la instalación del motor sea más ligera. Aun con esto, Unity es una aplicación que consume varios gigabytes en nuestro equipo y hace un uso moderado de recursos.
El caso de Unreal es el más exigente de todos. Este es un motor que hace un consumo alto y en ocasiones muy alto de los recursos del equipo. El editor cuenta con muchas funcionalidades y herramientas que se encuentran integradas por defecto y que se encargan de pasar factura a los recursos del sistema. Esto se traduce en un software que llega a ocupar grandes cantidades de gigabytes de almacenamiento en nuestro disco.
Gráficos
Este es el tema por el cual siempre existe la discusión de cuál engine es el mejor. Actualmente se tiene una tendencia popular en la que el renderizado y la calidad de gráficos determina la supremacía de un motor.
Cada engine en el mercado tiene su propio pipeline gráfico, con implementaciones de ingeniería y algoritmos de programación propios del ingenio de sus desarrolladores. Sin embargo, y de nueva cuenta, todos los motores parten de las mismas bases teóricas y técnicas sobre las que se construyen estos pipelines. Además, todos sabemos que los gráficos no hacen a un buen juego.
Se pueden lograr resultados completamente a la par en diferentes estilos gráficos (realista, toon, estilizado, etc.) en cada uno de los engines anteriormente mencionados. Al final depende del ingenio y la creatividad de los desarrolladores para utilizar el software y no de la herramienta en sí.
El mejor método para saber cuál engine escoger
Como todo en tecnología (y en la mayoría de cosas en la vida) el mejor método para saber cuál motor escoger es probarlos de primera mano. Es importante conocer las características, ventajas y desventajas que pueden tener. La forma para saber cuál es el adecuado se basa en interactuar con ellos desde la prueba y la práctica.
Si tienes deseos de aprender un poco de todos o si solo eres curiosa por la tecnología, entonces ve y prueba a descargar aquellos que te interesan. Prueba una y otra vez hasta que seas capaz de decidir cuál de ellos cubre tus necesidades y cumple tus expectativas y requisitos.
Aunque me gustaría decirte que utilices cierto engine u otro, no puedo hacer eso, como ya dije antes, es decisión personal. Lo que si puedo hacer es darte un punto de partida donde comenzar, así que aquí tienes un listado de game engines comerciales que puedes usar y/o experimentar:
- Unity
- Unreal Engine
- Godot Engine
- Cry Engine
- Unigine
- Stride Engine
- Flax Engine
- Buildbox
- Construct
- Game Maker
- Corona
- Phaser
- Open3D
- GDevelop
- Game Salad
- Cocos
Existen muchos otros ahí fuera que puedes probar, pero estoy seguro de que esta lista te servirá de apoyo para iniciar y experimentar. Asegúrate de investigar y leer la documentación de cada uno, te ayudará a tomar la decisión correcta.
Conclusión
Escoger un engine a veces es una tarea difícil, pero ahora sabes cómo hacerlo de manera correcta. Recuerda tomar un tiempo para plantear tus requerimientos y objetivos, realiza un análisis e investiga cuál motor ahí fuera es el adecuado para ese proyecto.
No te cases con uno en particular. Prueba a practicar con tantos como puedas y aprende de ellos y el cómo se adaptan a tus flujos de trabajo para conseguir lo que buscas. Recuerda leer la documentación, pide ayuda, practica mucho y sobre todo no te rindas.
Ahora ve y prueba diferentes engines. Así es cómo comienza tu camino como una increíble desarrolladora.