Artículos

Quiero desarrollar videojuegos

Consejos a través de la experiencia de un estudiante de ingeniería

El año pasado, durante el mes de noviembre, recuerdo una noche a la vuelta de clase. Mi compañero de redacción, Paco, me comentaba su deseo de aprender a desarrollar videojuegos. A pesar de tener claros sus objetivos, no sabía por dónde empezar. Me llamó para ver si le podía dar algún consejo, pues yo estaba en pleno desarrollo de un videojuego junto a mis compañeros de clase. El cansancio y el caos mental que llevaba en ese momento me impidieron ser hábil al transmitirle mi opinión acerca del asunto. De todas formas, anoté la idea para tratarla en otro momento.

Yo he pasado por la misma situación y me sentí igual de perdido que la mayoría de personas deseosas de entrar en este interesante mundillo. Por eso, y una vez finalizado el desarrollo de Inspire, nuestro proyecto, escribo este artículo con las ideas más claras.

No soy un desarrollador profesional y me queda un largo camino por recorrer. Sin embargo, me gustaría, con mi experiencia y opinión, dar pistas útiles a todos aquellos que deseen comenzar a desarrollar videojuegos.

El arte de desarrollar videojuegos se compone de ámbitos independientes que permiten crear un producto de entretenimiento para el jugador. El abanico de posibilidades es amplio. Por ejemplo, en Inspire ocupamos, a grandes rasgos, los siguientes campos:

  • Diseño de mecánicas del juego 
  • Diseño de niveles 
  • Motor de físicas  
  • Motor gráfico
  • Motor de Inteligencia Artificial  
  • Motor de sonido 
  • Motor de red
  • Arte 3D (Modelado, texturizado, rigging y animación) 
  • Arte 2D e Interfaz de Usuario 
  • Diseño sonoro y composición musical 
Captura de la presentación pública de Inspire
Nosotros presentando las tecnologías y campos que habíamos tocado durante el desarrollo de Inspire

Esto es una ínfima parte de lo que se cubre durante el desarrollo profesional de videojuegos. Por este motivo, uno se debe decantar en algunas destrezas si lo que desea es lograr un conocimiento sólido. Las demás o bien son delegadas en compañeros de trabajo, o, en el caso de trabajar con motores como Unity o Unreal, al propio software de creación, algo que no termino de recomendar.

No te preocupes. Yo tampoco supe a los dieciséis años, cuando empecé a desarrollar mods para Amnesia: The Dark Descent, que a mí me gustaban los motores gráficos, el desarrollo de multijugadores en línea y el sonido. Una práctica interesante sería eso, desarrollar un mod simple para algún juego. Suele ser una tarea sencilla que seguramente te ayude a orientar tus intereses.

Un aspecto importante para hacer un buen juego es entender la máquina con la que trabajas. La programación es la columna vertebral de cualquier aplicación informática, videojuegos incluidos. Este suele ser el bloque con el que chocan muchas personas al empezar en el desarrollo de videojuegos. Aunque existen alternativas, como los blueprints de Unreal y el drag & drop de Game Maker, el conocimiento de la programación es un recurso indispensable para trabajar en un juego. Bajo ningún concepto sugiero que éstas sean inútiles, pero al final uno necesita dar un paso adelante para mejorar y optimizar su producto. Además, lo básico y lo esencial sobre este tema debe conocerse por parte de todo el equipo de desarrollo. Ahora que te he dado un palo doloroso, ¿por dónde empezar?

Imagen de código en C# para programar el comportamiento de una entidad
Bonito código, ¿eh?

Según mi experiencia, el mejor lenguaje para empezar es C. Prácticamente todos los lenguajes de programación se construyen a partir de él. El motivo más importante por el que aprender C es su nivel de abstracción. Cuando programamos, debemos comprender la máquina con la que trabajamos para sacarle el máximo partido. C es un lenguaje con un nivel bajo de abstracción, por lo que viene perfecto para aprender. Cuando tengamos una experiencia con él, profundizaremos en las estructuras de datos y el manejo de la memoria, aspectos clave para hacer un videojuego que funcione de forma óptima y en múltiples plataformas.

El siguiente paso es más abajo. Se trata de entender, aunque sea con rutinas sencillas, el lenguaje Ensamblador. Al principio no es necesario que sea con una máquina de 32 o 64 bits. Nosotros comenzamos desarrollando juegos para un Amstrad CPC 464, ¡un ordenador de los 80 en 8 bits!. Ahí os recomiendo el canal de Profesor Retroman, quien dispone de diversos recursos para el tema. Parece duro, y lo es, pero a mí se me acabó haciendo divertido.

Programar en Ensamblador abre tu mente a la hora de planificar algoritmos, trabajar con datos y entender el funcionamiento de una máquina. Además, te da habilidades de depuración y detección de errores complejos muy útiles en un futuro. Human Resource Machine es un juego de puzles muy interesante cuya lógica está calcada del lenguaje Ensamblador. ¡Pruébalo!

Código en Ensamblador del Z80
Un pequeño trozo de un sistema de Inteligencia Artificial en Ensamblador. ¡Gracias a él ganamos un premio!, junto al arte y al sonido

Luego, el siguiente paso ya es decantarse según las tecnologías que usaremos. ¿Quieres Unity? Aprende C#, ¿Unreal? C++, lenguaje con el que la experiencia previa en C y Ensamblador vienen genial. En estos temas ya hay canales especializados. Si os gusta Unity, es recomendable que visitéis el canal de Brackeys, que cubre diversos aspectos acerca del motor. Luego, en C++, dos canales que me ayudaron mucho desarrollando en este lenguaje fueron TheChernoProject, que tiene un curso gratuito completo sobre él y OneLoneCoder, que ya es más para frikis como yo, pero que habla de algoritmos muy interesantes y plantea implementaciones puras en C++.

Para finalizar esta sección, cabe mencionar a los que os interesaría profundizar en motores gráficos, es una rama que a mí me encanta. Los gráficos por computador son un híbrido entre la programación, y las matemáticas avanzadas. Os recomiendo que aprendáis y cojáis soltura con las matemáticas y, en especial, con la geometría en el plano 3D. Conocer este ámbito es fundamental para entender todos los trucos y trampas que se realizan en los motores gráficos. Es muy interesante ver cómo con tan poco se consigue que los jugadores miren maravillados las cosas que hace tu juego. Además, los motores gráficos requieren conocer la programación de shaders, un tópico que da para un artículo entero. Si te interesan todas estas cosas, puedes programar shaders en Unity para hacer pruebas y entender su lógica. Si luego estás igual de loco que yo, toca pringarse con las librerías OpenGL y los shaders en GLSL. TheChernoProject tiene también un cursillo gratuito acerca de este tópico, así que no dudes en pasarte. También dejo por aquí otro curso de Udemy que a mí me vino genial para comprenderlo todo mejor.

Programa de shader en tiempo real
El maravilloso mundo de los shaders…

Hemos comentado por encima los pasos que uno debería dar para iniciarse en la programación de videojuegos. Aun así, hay que prestarle atención al arte y al sonido.

Sobre lo primero, tratad de aprender una herramienta de modelado 3D y comprender todas las técnicas que se emplean para realizar mallas poligonales. Además, a estos conocimientos se le deben sumar, sí o sí, la realización de mallas con muy pocos polígonos y el nivel de detalle. ¿Cómo? ¿No puedo hacer mi dragón con un millón de polígonos? La verdad es que no. El secreto de todo esto está en el texturizado, una de las trampas que comentaba del motor gráfico. Modelar con pocos vértices y manejar bien las técnicas de retopología es una virtud que se busca en todo modelador 3D, entre otras. Luego, no te olvides de aprender a pintar bien y aplicar todo tipo de texturas. Los resultados te sorprenderán gratamente. Como software de modelado y texturizado, nosotros usamos Autodesk Maya y Substance Designer.

Proceso de animación de una malla poligonal
Las técnicas de modelado y animación son esenciales.

En cuanto al sonido, es complicado dar una respuesta concreta. En el ámbito de la música, todos los conocimientos de ella se aplican de la misma forma, por lo que tenéis a Jaime Altozano para rato. Conocer la masterización y la mezcla de música y sonidos también es fundamental. Hay infinidad de canales que ahondan en programas específicos las técnicas que se emplean, todo depende de vuestras necesidades. En lo que respecta a los efectos de sonido, viene bien entender la diégesis y el comportamiento de los mismos dentro del espacio 3D. También aprender a manejar motores de sonido, como FMOD Studio, que conectan la lógica del juego con tu lógica a la hora de reproducir eventos sonoros, da para otro artículo. Para empezar, aprende lo básico de música y haz pruebas con FMOD, por ejemplo, que posee implementación para Unity y Unreal.

Sin embargo, más allá de lo puramente técnico, lo esencial para un buen videojuego es la cultura de sus desarrolladores. Puede sonar muy obvio, pero para desarrollar una buena experiencia, se debe haber analizado otras diez mil. ¿Te gusta la narrativa del videojuego? Lee y escribe mucho, al igual que intenta comprender todos los aspectos que conlleva una experiencia inmersiva. ¿Quieres hacer cinemáticas espectaculares? Fúndete todo el cine habido y por haber.

Shadow of the Colossus emplea de forma magistral la regla de los tercios para reforzar su impacto visual

Este aspecto es fundamental ya que muchas veces, sobre todo en el caso de los programadores, se deja de lado el contenido del videojuego a cambio de las tecnologías. Recordad, vuestro juego lo tiene que jugar gente. Al usuario le importa poco lo bueno que es tu motor, solo quiere entretenerse. Ampliar el bagaje cultural más allá de los bytes y las tecnologías es una habilidad transversal que no solo os ayudará a hacer mejores juegos, sino al desarrollo y enriquecimiento de vuestras propias vidas en general.

De todas formas, para enfocar esa cultura dentro del videojuego, siempre tenéis el excelente canal de Mark Brown, en el que habla de técnicas, secretos y diseño de niveles para que los jugadores disfruten al máximo de vuestros productos; conviene llevarlo al día. Otro consejo es intentar desarrollar ideas pequeñas y concretas, nunca disparar alto en el primer intento, ya que abruma. Una buena práctica es apuntarse a Game Jams. Ahí, aparte de desarrollar conceptos muy limitados y ajustados, conocerás a mucha gente que comparte tu afición y te dará consejos e ideas aún más interesantes. ¡Nosotros estamos de jurado en una!

Llevamos un buen rato divagando acerca del comienzo en el desarrollo de videojuegos. Sin embargo, todo esto es una opinión personal basada en la experiencia y los tropiezos desarrollando juegos. La conclusión es que no existe un camino predeterminado ni una regla de oro. Mi enfoque, por ejemplo, está orientado para los que les interesara programar, porque yo empecé haciéndolo. ¿Existen otras opciones? Por supuesto, yo he planteado un camino duro, lento y frustrante, pero tremendamente satisfactorio cuando se llega a buen puerto. De hecho, yo ahora mismo estoy empezando con Unity. Sin embargo, todo el bagaje que llevo y los llantos desconsolados cuando C++ mostraba su odio hacia mí, por ser muy zote programando, o cuando OpenGL me pintaba la pantalla de rojo por motivos desconocidos, me ha ayudado a aprovechar al máximo estas tecnologías. Es a lo que quiero llegar. La clave de desarrollar videojuegos es comprender lo que manejas para no limitarte a una herramienta y, de esa forma, hacer exactamente lo que tú quieres. Y para ello sí existe una palabra: curiosidad.

Y no olvidéis que, si tenéis la oportunidad de cursar estudios relacionados con ello, lo hagáis. Porque todo el conocimiento que se os proporcione a través de la enseñanza merecerá la pena.

El camino es duro, lento, frustrante y, seguramente, está plagado de numerosos errores y fracasos. Sin embargo, si realmente te gusta esto, nunca tirarás la toalla y siempre tendrás ganas de aprender algo más día a día. Con eso, al final, lograrás tu objetivo: desarrollar un buen videojuego.

Con este final, me gustaría a vosotros, lectores, dejaros algunas preguntas. ¿Estáis de acuerdo? ¿Conocéis otro camino interesante y menos duro? ¿Algún aspecto que se me haya olvidado? ¿Una comunidad de desarrolladores ayudaría salir de estos dilemas? ¡Os leemos!

Etiquetas

Antonio Ríos

Ingeniero Multimedia en proceso. Amante del cine palomitero de nacimiento y fotógrafo a medias. También me interesa todo lo relacionado con la música y bandas sonoras. Con que un videojuego tenga una historia interesante y sea divertido de jugar, a mi ya me tiene ganado.

Actualidad

Botón volver arriba
Cerrar
X