Curso Godot Engine 3.0: introducción y comparativas

Godot Engine (en adelante Godot, para abreviar), es un motor de juegos del cual había hablado en algún momento, en ese entonces estaba empezando como entusiasta, actualmente he tenido progresos interesantes y de ayer a hoy siento que necesito hablar sobre el motor. Godot ha sido una grata sorpresa desde el primer momento, como entusiasta del software libre ya estaba al tanto del proyecto, sin tener en claro que tanto ofrecía ni conocer sobre la historia del motor, hoy puedo definir lo con claridad y recomendarlo con argumentos. Para empezar les defino que es un motor de juegos y porqué se define a Godot como uno.
  •  Motor Gráfico: es un programa que administra la renderización(proceso de convertir coordenadas de elementos independientes en cierto numero de imágenes por segundo en pantalla), al igual que en una película, estas imágenes se llaman fotogramas, la cantidad de fotogramas se mide en fotogramas por segundo(FPS).
  • Motor de audio: Es una especie de reproductor de sonido interno para el juego, este debe encargarse de reproducir tanto efectos especiales(disparos, pisadas), banda sonora, alertas(sonidos de victoria o derrota) y en general es el que reproduce los sonidos en el momento que sea necesario, incluso varios sonidos simultáneamente.
  • Motor Físico(de colisiones): se le llama así por que gestiona las reglas físicas del mundo, cuales objetos son sólidos y por tanto no pueden ser atravesados, cuales te hacen mas lento por que brindan resistencia(corrientes de aire, líquidos), cuales ofrecen menos resistencia(carreteras, hielo) y todo lo relacionado con la física del mundo.
  • Motor de animaciones: son una serie de condiciones que nos permiten controlar la animación de los elementos, personajes y objetos, técnicamente son programas diseñados para doblar las mayas que hacemos en 3D, en 2D su función es cambiar una imagen por otra, dando la impresión de movimiento, para hacer que este cambio sea mas corto, entonces solo se carga una imagen compleja que contiene todos los fotogramas de cada animación.
  • Motor de redes: se encarga de gestionar la red local o conexión a internet, desde buscar partida, hasta mostrar la ubicación de los jugadores, barras de vida y demás, en ciertos juegos esto no hace falta por razones obvias.
  • Lenguaje de programación: simplemente se les dice lenguajes puesto que cada motor usará uno existente o medios alternativos(programación gráfica), es un lenguaje de programación cualquiera quien nos permite recolectar los datos y trabajar con ellos, haciendo uso de jerarquías y modelos de programación podemos ordenar todo el juego con distintos programas pequeños que deben obedecer al loop del juego (ciclo infinito que inició el juego y al terminar se encarga de cerrar lo en su totalidad), el script viene siendo el pequeño programa que se encarga de una cosa, pequeños programas que se ejecutan una vez, deben ser llamados script's (guiones en español, pero se dice solo en Inglés)
Podemos afirmar entonces que Godot reúne todas estas características y cuenta con múltiples ayudas para completar cada una de las tareas mencionadas, desde gráficos, barras deslizantes, módulos(addons) que facilitan el trabajo... La mas importante de sus caracteristicas es poseer una serie de demos jugables que demuestran un ejemplo de uso muy concreto de sus caracteristicas, desde como implementar un drag&drop, hasta un juego de plataformas completo(movimiento del personaje, enemigos, fondos parallax para fingir movimiento, sonido), es toda una experiencia poder analizar lineas de codigo, metodologías de desarrollo y flujos de trabajo incluidos en el programa base.

Para ser honesto, me interesa "venderle" Godot a cuantas personas pueda, yo aprendí y soy el informático que soy utilizando recursos del software libre, resulta por tanto una forma de agradecimiento a incontables profesionales mis intentos de colaborar de cuantas formas se me hace posible con el desarrollo, difusión y consolidación de proyectos de software, Godot es especialmente importante, intenté comprender como funciona un motor grafico usando ogre3D y fracasé en el intento, ahora mismo mi objetivo es llegar a un flujo de trabajo constante con Godot, mi forma de agradecimiento será esta entrada y los posteriores años de trabajo que espero dedicarle a la difusión del proyecto.

No soy imparcial, al menos voy a dejar constancia de mis razones para creer que el proyecto vale la pena, llevo muchos años intentando empezar un proyecto en condiciones y con Godot he podido conseguir tres metas a corto plazo, metas que he cumplido hace un tiempo, ahora que comprendo un poco el funcionamiento del sistema, hablaré por que he rechazado hasta el momento todos los motores por los que he intentado pasar.
Aunque existan muchas opciones para sostener nuestras creaciones, todas ellas tienen particularidades y especializaciones, Unity por ejemplo es realmente utilizado, su comunidad es tan grande que habrán no solo tutoriales gratuitos, también cursos en universidades para utilizar esa herramienta, sin embargo no tiene 2D nativo, un gran impedimento, para hacer juegos en 2D utilizando Unity hay que cargar un escenario 3D y simular que el tercer eje no existe, esto significa un gasto innecesario de recursos por parte de nuestros jugadores, habrá una coordenada sin utilizar que existe todo el tiempo y está gastando recursos, en el caso que el 2.5D sea el objetivo, es mas bien una facilidad, ya que justamente es lo que busca dicha forma de trabajo, un escenario con cierta profundidad que no utiliza el tercer eje todo el tiempo.

Hablando de Unreal Engine, resulta una gran opción para ciertos casos, tiene soporte nativo para 2D y 3D, tiene una desventaja importante, a partir de los tres mil dolares, unreal reclama un 5% de las ganancias, esto no es un problema, pero Epic Games es hijo de TENSEN, una empresa china que es dueña de casi todo el mercado de los videojuegos, personalmente no me gusta la idea, nadie sabe como se compila el juego y si el editor agrega algún contenido extra para monitorizar a nuestros usuarios, incluso es imposible saber si la empresa tiene acceso a los archivos de nuestros trabajos, si empresas como CAPCOM han confiado en el, puede ser que esto sea solo paranoia mía, para una empresa que no tiene necesidades económicas, un 5% de las ganancias parece un trato injusto.

Una vez mencionados los principales competidores, Godot en sus ultimas versiones ha llegado al nivel de Unity, los últimos añadidos al motor han sido una notable mejora en el 3D, iluminación Voxel(en tiempo real y calculada separando el escenario en cubos), es un proyecto licenciado bajo MIT, licencia de la cual ya he hablado, permitiendo que los productos derivados de Godot Engine puedan ser licenciados sin ninguna restricción.

La dificultad actual de Godot es mas bien un problema de velocidad, mas concretamente la velocidad de aprendizaje, el desarrollo del motor es bastante más veloz de lo que soy capaz de aprender, desde hace un tiempo he renunciado a entender todo lo que se puede hacer en Godot, disfrutando entonces de experimentar con la información que tengo y dedicarme a comprender los elementos que voy necesitando dentro del motor.

Actualmente estoy haciendo algunos proyectos pequeños que espero juntar algún día, una de mis teorías siempre ha sido que los proyectos de software deben ser pequeñas piezas independientes de código, perfectamente diseñadas, optimizadas, si cada pieza de código funciona perfectamente, debería ser posible unirlas teniendo solo que verificar sus interacciones.

Si logro avanzar de forma mas veloz en mis proyectos independientes, voy a empezar a explicar el código fuente de cada uno de ellos, como se parecen mucho a Python, cualquiera que haya leído mis entradas sobre este lenguaje podrá comprender los sin necesidad de largas explicaciones, la única diferencia será el uso de las clases propias de Godot, una vez estos proyectos estén terminados, se unirán en una producción completa, un juego con todas las mecánicas individuales ya probadas y que requerirá menos tiempo de integración, al menos eso postulo y tengo la completa intención de cumplir.

Primera entrada de 2019, espero organizarme mejor este año, entrar de lleno en la programación orientada a juegos, librarme de una serie de cursos universitarios que me interesa conocer y lo mas importante, activar este blog definitivamente y con la regularidad que logré tener en algún momento.

Comentarios

Entradas populares de este blog

Hablemos de difamación, parafilias y denuncias bien hechas

Criticamos a pablito: "Atrapado en el cuerpo equivocado"

El fruto de una era: Antiintelectualismo moderno