¿QUÉ ES PROGRAMAR UN VIDEOJUEGO?
Un videojuego es una aplicación informática interactiva cuyo objetivo principal es entretener. Además, necesita:
▪ Tener un interfaz de entrada, como puede ser: el teclado, ratón, pad, joystick, giroscopio, etc.
▪ Tener un interfaz de salida, por ejemplo: la pantalla, altavoces, motor de vibración, etc.
El cerebro de todo ordenador, consola o smartphone, es el procesador. Este procesador no “piensa” por sí solo, todo lo que hace es porque alguien se lo ha ordenado.
LENGUAJAES DE PROGRAMACIÓN
Hay que decirle al procesador cómo usar los datos del interfaz de entrada, para darle feedback al usuario mediante el interfaz de salida.
¿Cómo se le dan órdenes al procesador? Mediante los lenguajes de programación, como pueden ser, por ejemplo: C++, C#, Java, Javascript, LUA o Python, entre muchos otros.
Cada lenguaje tiene su propia sintaxis y un compilador o intérprete que traduce las órdenes dadas en dicho lenguaje, a código máquina, que es lo único que realmente entiende el procesador.
Este código máquina también es conocido como código binario y consiste en ceros y unos, es decir, sólo utilizan los números 0 y 1 para formar la codificación.
Existen lenguajes de alto nivel y bajo nivel.
▪ Los lenguajes de bajo nivel son aquellos más dependientes de la propia máquina, diseñados casi a medida al hardware sobre el que se van a emplear. Este tipo de lenguaje no podríamos utilizarlo en máquinas distintas. Son, por ejemplo, el código máquina y el lenguaje ensamblador, que es un derivado del código máquina pero que está compuesto por abreviaturas de letras y números.
▪ Por el contrario, los lenguajes de alto nivel, son lenguajes independientes de la máquina y se encuentran más cercanos al lenguaje natural que al código máquina. Estos lenguajes pueden ser interpretados en máquinas diferentes con la ayuda de un traductor.
Podemos decir también que hay lenguajes interpretados:
▪ Necesitan intérprete en la máquina en la que se van a ejecutar.
▪ El desarrollo es más cómodo, pero la ejecución es más ineficiente.
▪ Por ejemplo: Python, PHP, LUA, Java.
Y lenguajes compilados:
▪ Necesitan compilador. El compilador traduce una sola vez el programa a código máquina. El programa compilado puede ejecutarse por sí mismo en la máquina destino (consola, tablet, etc.) sin necesidad de intérprete.
▪ La ejecución es más eficiente. ▪ Por ejemplo: C++, C#
ROLES DE PROGRAMACIÓN
Dentro de un departamento de programación podemos encontrarnos con diferentes roles de programadores. Cada uno de ellos se encargaría o se centraría en un determinado aspecto concreto del juego. Estos son los roles de programación más habituales:
▪ Programador gráfico − Encargado de la parte de programación que habla directamente con el procesador gráfico. Permite que el resto de áreas del juego sean capaces de mostrar elementos por pantalla. Es un área muy especializada.
▪ Programador de inteligencia artificial −Gestiona las entidades de juego para que se comporten de manera que parezcan inteligentes. Abarca tareas como la búsqueda de caminos, máquinas de estado y árboles de comportamientos que definen cómo actúan las entidades de juego.
▪ Programador físico − Se encarga de la gestión del movimiento de las entidades siguiendo las reglas físicas del universo de juego.
▪ Programador de interfaz −Gestión de órdenes de usuario.
▪ Programador de Herramientas (Tools) −Generación de herramientas y procesos para la creación de recursos de juego y de apoyo para el resto de departamentos.
▪ Generalista −Programador versátil, no especializado pero capaz de asumir un rango de tareas de diversa índole según las necesidades del proyecto.
PROGRAMANDO EL PROTOTIPO
El objetivo de un prototipo es la identificación de mecánicas novedosas y validar si nuestra idea de juego es divertida o no lo es. Primeramente, tiene que haber una identificación de dudas o cosas potencialmente problemáticas del diseño que se quieran testear:
▪ Mecánicas novedosas de juego.
▪ Look visual.
▪ Efectos visuales.
No es necesario prototipar algo de lo que ya se tienen pruebas de que funciona bien (por experiencias propias anteriores o porque hay algún otro juego que use las mismas mecánicas). Solo hay que prototipar aquello para lo que se tenga alguna duda acerca de si puede funcionar y/o ser divertido.
Hay que realizar prototipos independientes que respondan a cada una de las dudas (y exclusivamente a ellas). En esta fase, no importa que se utilice un motor de juego o incluso un lenguaje de programación diferente al que se utilizará en la fase de producción del juego. Lo importante es poder testear en nuestro prototipo de forma rápida nuestros diseños de juego. Incluso tampoco sería necesario que en el prototipo todo el código estuviera limpio, depurado, comentado, organizado, etc. Aquí premia más la rapidez.
POR DÓNDE EMPEZAR A PROGRAMAR
Si eres nuevo en esto de la programación, puedes empezar por lo siguiente (en orden de dificultad):
▪ https://lightbot.com/
▪ https://studio.code.org/s/frozen/stage/1/puzzle/1
▪ https://scratch.mit.edu/projects/editor/?tutorial=home
Si ya sabes lo que es programar, pero no lo que es programar un videojuego:
▪ https://unity3d.com/es
▪ https://www.unrealengine.com
Hay multitud de tutoriales de Unity y Unreal, desde los más sencillos hasta los más elaborados.