Un game engine, por definición, es un software especializado para la creación y el desarrollo de videojuegos, existe una variedad muy grande de game engines o alternativas similares en el mundo digital que pueden agruparse dentro de distintas categorías de acuerdo con el tipo de contenido que se puede generar (2D, 3D), los lenguajes de programación con los que se trabaja dentro de cada game engine, en caso de que aplique, o también el tipo de plataformas para los que se puede generar contenido (Windows, macOS, Xbox, Android, entre otros). Sin embargo, con toda la variedad disponible para crear y darle vida a ideas que pueden convertirse en videojuegos, surgen una serie de preguntas alrededor de todas estas opciones, ¿Cuál podrá ser la más indicada para mí o mi equipo? ¿Debo saber programar? ¿Qué lenguaje es más fácil?, entre muchas otras más que dependen de el tipo de rol que se estás buscando al momento de desarrollar un videojuego, ya sea desde un punto de vista más artístico en cuanto a diseño o quizás también completamente orientado a la programación, así que con la idea de aclarar todas estas dudas o esclarecer un poco más los conceptos que giran alrededor de la elección de un game engine, se realizó una entrevista a un experto sobre el tema, considerando su experiencia en la creación y desarrollo de videojuegos buscando consejos que ayuden a encontrar la mejor forma de elegir un buen game engine.
“Fue hace mucho tiempo cuando yo puede empezar a generar videojuegos, en realidad corría el año del 2008 y durante la parte de la maestría que me correspondía me empezaron a presentar una serie de tecnologías para poder generarlos, en ese momento lo de moda era flash, fue una herramienta que permitía hacer, a través de un control ActiveX que hacía lo que hoy AJAX y muchas librerías de JavaScript permiten hacer, que es la animación y el movimiento para la generación de actividad en sitios, este enfoque permitía ver como algo mucho más cercano y sencillo la creación de videojuegos, visto como algo complejo y difícil desde engines como Torque o como Ogre, sin embargo siempre vi los videojuegos como algo relativamente inalcanzable hasta justo después de la maestría. Cuando por fin nos decidimos un grupo de personas y yo a entrar al mundo de los videojuegos nos dimos cuenta de que en realidad había tres componentes clave al momento de hacer un juego, por un lado, plantear las mecánicas que hacían funcional el juego, además se tenía que generar la ingeniería para que la mecánica se viera inmersa dentro de la experiencia de juego y finalmente generar un complemento gráfico para que esa experiencia pudiera ser comunicada al usuario. Por lo que, visto desde la perspectiva de estos tres componentes el primer consejo que podría hacer respecto a la elección de un game engine es: hay que definir de manera muy objetiva cuál es la meta final de tu integración en los videojuegos…”
Partiendo desde esta perspectiva se pueden separar los game engines que permiten la implementación con muy poca o incluso nada de programación, tal es el caso de Unreal, que permite generar impresiones gráficas muy buenas en muy poco tiempo importando assets desde una asset store, persiguiendo un enfoque más gráfico que técnico hablando de mecánicas o de la jugabilidad de la que se quiera dotar al juego. De la misma forma en otro extremo podemos tener game engines que permiten generar mecánicas funcionales más complejas e interesantes, tal es el caso de Panda3D o también Unity o Unreal, pero desde el punto de vista de programación de mecánicas mediante implementación de código y la generación de nuevas funcionalidades, trasladándolas con un enfoque técnico, de la idea a lo funcional.
“Después de haber resuelto cuál iba a ser el primer engine que yo iba a poder utilizar, surgió un nuevo inconveniente, como flash en realidad no era un engine, lo que tuvimos que hacer fue crear una especie de librerías, que nos ayudaban a nosotros a colocar los mundos, a tener una buena comunicación con el diseñador para saber cómo me tenía que pasar los assets, como yo lo iba a meter dentro de la plataforma y al final como lo iba a exportar, logramos generar un conjunto de herramientas que nos permiten hacer un side-scroller en más o menos una semana siempre y cuando estuvieran renderizados los sprites, y he aquí el segundo punto a considerar para elegir un engine: hay que elegir un engine que te permite comunicarte con las otras dos áreas que tú no vas a poder hacer o que tú no tienes”.
En un equipo de desarrollo de videojuegos hay muchos perfiles distintos, personas con un conjunto diferente de habilidades y que además tienen distinto nivel de experiencia o de conocimiento preciso acerca de la idea que pretende representar un videojuego, por esto es importante que al momento de tomar una decisión sobre el game engine a utilizar, se considere la opinión del equipo de trabajo, en que formatos es más fácil importar contenido artístico o visual para se utilizado por los programadores, o que interfaz visual es más cómoda para trabajar con ciertos archivos de animación, son factores que se deben tomar en cuenta para elegir una herramienta que sea útil para todos, y en caso de que el equipo sea muy pequeño o inclusive sea una sola persona, igual es de vital importancia no enfocarse en los beneficios que dicha elección conlleva a las tres áreas importantes para el desarrollo de videojuegos, es vital para que los procesos sen más rápidos, más cómodos, pero sobre todo igual de sencillos para cualquier aspecto modificable del juego.
“Después de ahí como flash con un elemento funcional para el equipo, fue mucho más fácil el hacer el salto a Unity, para ese momento Unity tenía 3 maneras de hacer scripting, JavaScript, C# y Boo script, sin embargo, buscaba aprovechar los conocimientos que tenía en el área de desarrollo web y eso fue muy interesante porque eso me permitió entrar mucho más rápido a una sintaxis que para mí en principio iba a ser diferente una vez que ya me había decidido empecé la práctica para ir integrando poco a poco elementos de juegos y mecánicas de juego desde entender la filosofía, el método y los conceptos más teóricos de un game engine, de entender que es un game object entender los componentes y la relación que guardaban entre ellos cómo poder obtenerlos hasta poder hacer los shaders y poder generar estructuras mucho más complejas en siguiendo esta línea de pensamiento. Después de explotamos la versatilidad del game engine para hacer de todo, ya fueran vídeos o interfaces o web o cualquier otra cosa el game engine es suficientemente versátil para poderlo integrar y esto nos lleva al tercer consejo: busca la posibilidad de implementar otros elementos dentro de tu game engine, tu experiencia en hacer ese tipo de proyectos va a incrementar y poco a poco vas a ir obteniendo la experiencia necesaria para generar un juego que valga la pena”
Existen muchas herramientas de menor complejidad que un game engine robusto, es donde se pueden realizar proyectos con un diferente propósito, pero al mismo tiempo aplicando conceptos y fundamentos que pueden reutilizarse al momento de hacer videojuegos, es importante no descartar estas herramientas en un inicio porque pueden generar que la curva de aprendizaje de un game engine con mucha complejidad se convierta en una tarea más sencilla y enriquecedora. Además, si estos proyectos pequeños pueden monetizarse como un proyecto alejado de la industria de los videojuegos, mucho mejor, ya que así el tiempo invertido no se concebirá como tiempo gastado, sino como tiempo invertido de manera eficiente.
“En retrospectiva de las decisiones que tomé respecto a las herramientas a utilizar y la experiencia que tengo ahora, pudiendo manejar 2 o 3 game engines al mismo tiempo, considero que existen tres factores a considerar para elegir la herramienta adecuada, en el momento preciso, primero, todo lo que tiene que ver con el acomodo y la estética de los elementos propios del game engine, pero también de los elementos que se generan como parte del juego, segundo, la conexión que va a existir entre lo teórico y lo práctico de los componentes, es decir , como se combinan todos los elementos visuales con la funcionalidad programable del game engine, y por último el código, que a su vez tiene otras 3 partes importantes, primero la filosofía que se va a implementar en el código que persigue alguno de los paradigmas de la programación, segundo el lenguaje, conocer cómo se habla y como se escribe, además de las estructuras las herramientas que tiene y por último, como suma este lenguaje y con su filosofía y aplicando la teoría de juegos a poder producir las mecánicas del videojuego.”
Tomar en cuenta estos factores es muy importante porque así se puede buscar una herramienta completamente funcional, además de que todas las alternativas disponibles comprenden estas características en mayor o menor medida, pero con estos criterios la divisiones y clasificaciones se vuelven más certeras y útiles, a continuación, unas recomendaciones puntuales.
“Si tu objetivo principal es aprender un lenguaje de programación y vas a usar un medio como los videojuegos para poder hacer eso, yo recomendaría una herramienta como Processing, que a través de un lenguaje permite de manera muy simple empezar a implementar mecánicas, no van a ser las mecánicas más impactantes del mundo, pero va a ayudar a empezar a entender cuál es el 2D y el 3D mientras mantiene un concepto del lenguaje que te va a ayudar a hacer proyectos de cierta magnitud, por otro lado si tu objetivo es implementar game desing a un buen nivel el primer game engine que utilizaría sería algo como RPG maker o tal vez GameSalad o algo como Construct o Stencyl que permiten sin tanto código empezar a generar pruebas de concepto, finalmente si lo tuyo va a ser la optimización de conceptos que ya funcionan, tienes conocimiento de un lenguaje, el game desing no es tan importante en estos momentos o la parte gráfica en realidad es un poco parte del mismo juego definitivamente deberías intentar algo en C o C++ como Unreal, puede ser Unity con C# que va a permitirte hacer casi todo lo que tengas en mente y además entender cómo funcionan los plugins y los dlls o ya definitivamente pasarte a algo como Ogre o como Panda3D que puede llegar a ser hasta cierto punto fácil, pero muy potente para poder implementarlo todo en código”
En conclusión, elegir un game engine puede parecer una decisión muy trascendental en un proyecto, puede verse como un factor que determina el tiempo y la dificultad de realización de un juego, sin embargo, considerando todos los aspectos mencionados anteriormente esta tarea puede pasar de ser algo complejo y complicado, a una elección que siga las motivaciones principales y necesidades del equipo de trabajo y por ende que termine convirtiendo el proceso en algo divertido, útil y sobre todo eficiente. A manera de resumen, los tres consejos prácticos, obtenidos de la entrevista se pueden entender como: definir de manera objetiva cuál es la meta final del proyecto que se pretende hacer o ejecutar, una vez entendido esto, establecer de acuerdo a las distintas áreas o personas involucradas en el desarrollo, de que manera se van a poder integrar mejor las actividades que cada quien está haciendo, y finalmente buscar una herramienta con la que sea más sencillo implementar dinámicas o mecanismos funcionales que se hayan hecho usando otra tecnología o con un enfoque diferente, para poder integrarlos y así todos estos elementos sean parte de ese nuevo e increíble proyecto.