El mejor lenguaje de programación de videojuegos

En este vídeo decidiremos cuál es el mejor lenguaje de programación que existe para crear nuestro primer videojuego. ¿Quieres saber cual es?

Si estás buscando este tipo de información deberías saber lo siguiente: podríamos crear de forma empírica un ranking de lenguajes con más características. Ya hice un vídeo así sobre el mejor motor de videojuegos. Podríamos encontrar los más veloces en determinados entornos, problemas, características y versiones. El problema es que todos esos diferentes rankings tendrían resultados distintos. No existe un único ganador en todas las categorías.

En computación siempre te enfrentas a las limitaciones del hardware. Normalmente se satura un recurso en beneficio de otro hasta que ocurre el famoso cuello de botella. Lo más común es enfrentar la memoria con la capacidad de proceso o la velocidad de carga del disco duro. El camino dependerá de tus objetivos y tu capacidad resolutiva de problemas. El entorno de trabajo más rápido para tí será el que se ajuste más a tu forma de trabajar.

Lenguajes de programación

Lo mismo pasa con los lenguajes de programación. De nada sirve tener la opción de crear complicados entornos basados en programación orientada a objetos si lo que necesitas es crear un programa que funcione lo más rápido y livianamente posible en una sola instancia.

Básicamente existen tres formas de programar videojuegos: Visual, interpretada y compilada. Hoy en día estas etiquetas ya no son estrictas, ni definen exactamente a todos los lenguajes. De hecho todos los lenguajes utilizados por Godot, Unity y Unreal son compilados de alguna u otra forma. Lo interpretado y lo compilado hoy día se mezcla. Así que no nos adentraremos más en este tema para no avivar controversias. Ésto no importa tanto como nuestra forma de trabajar.

Un ejemplo práctico

Imagina que quiero detectar cuándo se pulsa una tecla. La mayoría de tutoriales sobre cómo hacer videojuegos recomiendan hacer un IF en la función update de su motor. Esto se comprueba en todos los frames durante todo el videojuego. Y significa que estamos consultando si cada tecla está pulsada unas 60 veces por segundo. Por defecto en Godot al hacer esto se utilizan eventos, también conocidos como señales en el Editor. Con esta estructura te ahorras todos los IFs de todas las teclas que intentas detectar. No importa si un lenguaje es dos veces más rápido que otro, como revelan algunas estadísticas sobre C++, si luego el código que escribes es 60 veces más lento de lo que podría ser.

Ojo, he dicho podría ser, no “debería” ser. Y me explico: no puedo decir que Godot o ningún otro motor sea más rápido que otro. El problema al afirmar esto es que no podemos saber exactamente cómo está hecha internamente cada función de cada engine. Cada tipo de juego será más lento o más rápido en un motor u otro. El lenguaje que se usó no basta para decidir esto y no todos los motores están en código abierto. Por este motivo en realidad este tema no es tan importante porque solo necesitas que tu juego funcione a 60 frames por segundo, en las máquinas de tu público objetivo, ya que ese es el ratio de refresco de la mayoría de pantallas. Es la máxima velocidad que necesitas conseguir. Si tu juego funciona a 60 fps y no tiene bugs, tu juego esta bien hecho, no te compliques más. No es tan difícil conseguirlo sobretodo si no estás haciendo un shooter en 3D. Cada persona tendrá diferentes cuellos de botella en diferentes partes de su juego, motor y máquina por diferentes motivos. Sobretodo si luego los desarrolladores hacemos una chapuza. Así no importará cuán rápida sea la máquina del jugador, que lenguaje o que motor uses. Irá lento igualmente. Recuerda, 60 veces más lento por cada una de las teclas que desees detectar. Dos o cuatro veces no son nada sobretodo si lo consigues balancear.

Si estamos empezando, el mejor lenguaje para aprender a usar un nuevo motor de videojuegos es intentar no escribir nada. Podremos escribir muy poco si tenemos la opción de usar una programación visual, usémosla. Usémosla al menos hasta que aprendamos cómo funciona el motor. Usémosla aunque seamos expertos en otros lenguajes. Ya que aún no conocemos la estructura básica de las funciones que los creadores del motor se han inventado al definir cada cosa.

Programación visual

Por todos estos motivos programaremos nuestro primer videojuego en Visual Script. De esta forma aprenderemos las nomenclaturas y los sistemas que utiliza nuestro motor de videojuegos. Al no tener que buscar, recordar y aprender nuevos nombres de funciones o conocer la sintaxis de un lenguaje nuevo descubriremos todos los detalles de forma gradual.

Una vez lleguemos a los límites del lenguaje visual deberíamos saltar al siguiente escalón. En Godot es GDScript. Estos sistemas están creados y optimizados por los hackers del engine por lo que podrían llegar a ser más rápidos que nuestro código C de principiantes.

El motivo por el que no es necesario ir directamente a la velocidad máxima, que sería C++, ahorrandonos pasos como hicimos al elegir Godot y no un motor exclusivamente 2D. Es porque probablemente nunca lleguemos a necesitar hacer casi nada a ese nivel de optimización. En cambio estos lenguajes simplificarán y agilizarán nuestro desarrollo de forma considerable. Podría ocurrir que todos los juegos que hagamos se lleven bien con Visual Script. Y si no es el caso podrían ir bien con GDScript, sin necesidad de llegar nunca a usar ningún tipo de C, lo cual nos complicaría bastante los desarrollos.