Presiona "Enter" para comenzar tu búsqueda

¿Cómo es programar videojuegos?

La importancia de los videojuegos en nuestras vidas digitales ha crecido tanto que las tiendas móviles separan las aplicaciones en “videojuegos” y “todas las demás”. Así pues, desde el punto de vista del desarrollador, surge la duda: ¿qué diferencias hay entre programar videojuegos respecto a cualquier otro programa no lúdico?

Sin duda las similitudes son más que las diferencias. En ambos casos el trabajo consiste en picar código y devanarse los sesos para implementar nuevas features. Pero como en todo ámbito de la programación, hay estructuras, rutinas ubicuas y otras de las que los programadores nunca habrán oído hablar. Por ejemplo, en cuanto al lenguaje, a pesar de la enorme cantidad existentes, el mundo del videojuego gira alrededor de C++, C#, Javascript y el Swift de Apple. Uno de los pocos anexos es CUDA, la variante de C de nVidia enfocada a explotar las ventajas de sus GPUs en computación en paralelo.

 

Qué se debe tener en cuenta a la hora de programar videojuegos

La prioridad nº1 en un videojuego es la optimización. Pese a que todo programador debe mantener el orden y la simpleza en su código, ser descuidado al programar videojuegos es letal para su rendimiento. La mayor carga computacional de un juego debe dedicarse a los gráficos, por lo que el programador tiene que ingeniárselas para compactar todas las llamadas que realiza su código. En este apartado es clave conocer la función gameLoop(), que se ejecuta a cada fotograma del juego, y realizar lo mínimo indispensable en ella para no sobrecargar al procesador.

Descarga nuestra guía gratuita: Videojuegos. Las 5 tecnologías vencedoras y las 5 olvidadadas en la pugna tecnológica

Otra particularidad a la hora de programar videojuegos es el uso de todo tipo de material multimedia: textos, cinemáticas ingame o prerrenderizadas, grabaciones de audio, animaciones, sprites… El programador lidia con una pasmosa variedad de extensiones de archivo y debe asegurarse de que el motor las ejecuta al instante. Por ejemplo, un retraso de 0,25 segundos en la sincronización labial hace un flaco favor al resultado final. Más complicado todavía es gestionar el flujo de datos que continuamente se cargan y descargan en memoria. Relativamente sencillo en entornos “pasilleros”, evitar la carga tardía de texturas y objetos en zonas muy amplias es todo un reto.

 

Más allá de aspectos técnicos

Una importante diferencia es la mentalidad del programador. Mientras que el software tradicional persigue el pragmatismo de herramientas que nos faciliten tareas, en un juego hay que dar un paso más. Tras lograr la funcionalidad, programar videojuegos es pelear por la diversión del jugador, cuidar detalles nimios que ya no buscan la practicidad, sino la sorpresa, el goce o el enriquecimiento del mundo virtual.

La complejidad de los juegos actuales implica que la implementación de nuevas funciones conlleve el surgir de numerosos bugs, cuya corrección se lleva una importante porción del tiempo de desarrollo, mucho mayor que en herramientas no lúdicas. Durante esta fase, el programador hace las veces de probador constantemente y, según la ocasión, puede resultar de lo más divertido o la mayor de las frustraciones.

Tanto en software como en videojuegos el trabajo se divide en proyectos, pero pocos entornos laborales son comparables a época pre-lanzamiento de un título. En las últimas semanas, las jornadas laborales se alargan fácilmente por encima de 70 horas semanales, siendo uno de los climas en el trabajo más estresantes según atestiguan los desarrolladores.

 

Las peculiaridades del desarrollo de videojuegos han hecho que los programadores requieran de un alto grado de especialización. Las superproducciones cuentan con alrededor de una veintena de puestos de programadores dedicados a áreas distintas, desde el gameplay programmer, que aplica y balancea las decisiones del diseñador, hasta el ingeniero de redes, que en ocasiones no conoce en absoluto el juego en el que trabaja y sólo se encarga de asegurar una baja latencia para el multijugador.

 

CTA - Videojuegos