¿Cómo crear un videojuego?
¿Cómo se crea un videojuego?, ésta es una pregunta que seguramente todos nos hemos hecho alguna vez, especialmente cuando éramos más jóvenes.
Es probable que pienses que crear un videojuego es una tarea muy complicada y que precisa de grandes conocimientos de programación, matemática y física para desarrollar un buen título, pero esto no es del todo cierto. Independientemente del tipo de juego que se quiera desarrollar (2D, 3D, RPG, FP…) y de la plataforma en la que se deba ejecutar (PC, videoconsola, Smartphone, etc.), existen dos vías para crear un videojuego:
-
Programar todo desde cero
-
O hacer uso de motores de desarrollo
El primer caso es el más complejo dado que el programador debe crear todos los elementos del juego, desde las físicas (lo que lleva aparejado una matemática muy avanzada), los personajes, las animaciones, renderizado, entre otros muchos elementos. Ésta es la forma de trabajar que tienen los grandes estudios, como Ubisoft o Innsomnia, que a pesar de esta complejidad, les confiere un control completo sobre el desarrollo; y lo más importante, permite un alto nivel de optimización. Cuando a una compañía se le encarga el desarrollo de un título, por ejemplo, coincidiendo con el estreno de una nueva película, es habitual que el juego deba estar disponible para diversas plataformas. Esto es un desafío, dado que por lo general, no todas tiene el mismo nivel de potencia, ni los mismos controles, por lo que es necesario adaptar el título para que funcionen correctamente en cada una de esas plataformas.
La segunda opción, es el uso de motores de desarrollo, que no son más que programas que ya llevan implementadas una gran variedad de funciones matemáticas que simplifican el desarrollo del juego. Esta opción es la más utilizada por desarrolladores independientes, también conocidos como desarrolladores “Indie”, que son programadores de videojuegos sin el apoyo financiero de grandes compañías de videojuegos que trabajan en pequeñas empresas o incluso desde su propio domicilio.
Dentro de esta última opción, podemos dividir los motores de desarrollo en dos categorías muy diferenciadas: los que requieren programación y los que no. Pero ¿Qué significa esto? Al igual que una mesa está hecha de madera, un juego está hecho de código que es ejecutado en tiempo real para mostrar al personaje, el escenario, registrar las teclas pulsadas por el usuario, etc. Dado que este código debe ser ejecutado por una máquina, éste está hecho en un lenguaje que puede ser entendido por ella, más concretamente está hecha de ceros y unos, es decir, binario.
Pero escribir un programa en binario es un proceso muy complejo e ineficiente. Por ello, se usan los llamados “lenguajes de alto nivel”. Estos son como los diferentes idiomas que existen en el mundo; cada uno de ellos tienen su propia gramática, vocabulario y peculiaridades, pero todos ellos pueden transmitir el mismo mensaje: ‘hola’, ‘hello’, ‘salut’, ‘hallo’, ‘ciao’, ‘olá’, ‘hej’. En programación, existe una gran variedad de lenguajes de programación, como C, C++, C#, Java, JavaScript, PHP, Pascal, entre muchos otros. Cada uno de ellos tiene sus propias ventajas y desventajas, por ejemplo C y sus variantes, está muy extendido y es posible encontrar librerías y ejemplos para hacer prácticamente de todo. Por contra, es un programa compilado para Windows, no funcionará en Linux o en Mac, cosa que sí que es posible con otros lenguajes como Java.
Gracias a estos lenguajes de alto nivel, podemos escribir nuestro programa en un lenguaje más comprensible para nosotros, y que luego, mediante un proceso llamado “compilación”, convertiremos nuestro código a binario (código máquina), tal y como podemos ver en la Figura 1.
Figura 1. Compilación a binario de un programa
Como hemos mencionado con anterioridad, existen otro tipo de motores de desarrollo en los que no es necesario escribir código como tal, sino que poseen un sistema gráfico de programación, como es el caso de Scratch™, que es el motor que utilizaremos en este curso para aprender a crear nuestros videojuegos. Éste proporciona una serie de piezas de puzles, que se interconectan entre sí para crear nuestros juegos de una forma muy rápida y simple. Cada una de estas piezas, no es más que un conjunto de línea de código que ya están predefinidas, lo que permite reducir de forma significativa el tiempo de aprendizaje y desarrollo.
Figura 2. Logo Scratch™
Aunque en la siguiente lección, profundizaremos en la interfaz y en los fundamentos básicos de programación, es necesario dejar claro que este entorno está principalmente pensado para introducir al usuario en el mundo de la programación, y por ello, presenta una limitación importante con respecto a otros entornos como Unity™ o Unreal™ (muy populares entre los estudios Indies). Una de las mayores limitaciones es que no permite desarrollar videojuegos en 3D, aunque con un poco de ingenio, se pueden crear juegos en 2.5D, que es el nombre que recibe una técnica, que a partir de imágenes planas, logra construir escenarios que dan la impresión de ser en 3D, aunque realmente no lo sean.
El mitigo juego ‘DOOM’, hacía uso de esta técnica, lo que supuso una gran revolución en la década de los 90 (Figura 3).
Figura 3. Escena del juego ‘DOOM’ haciendo uso de la técnica 2.5D. Imagen extraída de Stream™