Roles en la creación de videojuegos (II): La programación

Comentario

En el episodio anterior analizamos los diversos roles que existente dentro del área del diseño, y ahora, desde el punto de vista de cercanía funcional y de cierta forma matemática y de lógica, estaría el grupo de programación, por su capacidad de traducción entre el lenguaje del diseño y las necesidades del juego mapeado con las capacidades o restricciones de las plataformas donde deberá el juego ejecutarse.

Los programadores, dentro del mundo del videojuego, son un colectivo raro y difícil de encontrar, sobre todo aquellos que tienen capacidad para poder entender más de un lenguaje de programación y para bajar a un nivel suficientemente bajo como para poder hacer posible que la visión del videojuego que se ha idealizado se vuelva realidad.

La programación es como el chasis de un coche de competición que integra los diversos elementos que darán forma a un bólido capaz de acelerar de 0 a 100km/h en 1 segundo, consumiendo un litro de gasolina por cada 100Km sin cualquier tipo de fallo, porque si lo hay, todo el sistema se viene abajo.

Hay diversos roles dentro del mundo de la programación, si bien muchas veces solamente se habla del más conocido por implementar el gameplay y las mecánicas de juego, pero para un videojuego todo cuenta, y más todavía todas la partes del increíble mundo de la programación.

Como en el episodio anterior, la existencia de un rol u otro dentro de un estudio de videojuegos, depende mucho del tamaño del estudio y de su capacidad financiera para poder soportar diferentes profesionales en diferentes puestos de actividad. En pequeños estudios, lo más probable es que el único programador que existe tenga todas las funciones como un auténtico One-Man-Band.

Programación de videojuegos

Programador de Gameplay

Es la primera idea que viene a la mente de cualquier persona cuando se mezcla programación y videojuegos, de forma automática se asocia a programar lo que es el videojuego propiamente dicho, de sus mecánicas, de sus capacidades de su jugabilidad. El programador de gameplay es el que se encarga de integrar los diversos elementos creados por otros equipos: programación, diseño, arte, animación, para poco a poco ir construyendo los diversos elementos que componen el videojuego.

Es un trabajo iterativo, meticuloso y con muchos callejones sin salida, donde es fácil perderse en los meandros de muchos elementos o sistemas, que si no están conectados de forma lógica, precisa y eficiente, harán que el videojuego no acabe de estar perfecto, y cuyo mínimo fallo de implementación generará incomodidad en el jugador, a veces de forma consciente y muchas de forma inconsciente (muchas veces el jugador no percibe un fallo pero su subconsciente siempre alerta y con más capacidad de procesamiento sí se da cuenta) bajar el juego bajar un frame, o el personaje saltar un pixel menos.

Programación de videojuegos

Programador de Tecnología

Hace algunos años, en plena tendencia de que cualquier estudio de desarrollo de videojuegos empezase sobre la base de su propio motor (dado los altos precios de los motores), este era el puesto más codiciado por cualquier programador, y era muchas veces el sueño de legiones de nuevos creadores, el hacer su propio motor. La importancia y la sensibilidad de esta posición hacia que muchas estuviesen en el centro de la empresa y de los proyectos, y que prácticamente decidiesen, lo que entraba y salía del diseño o del juego en si.

Con el pasar de los años, la democratización de las tecnologías, así como la irrupción de los lenguajes de scripting o de visual scripting, los programadores de tecnología fueron desapareciendo de esa primera línea de los puestos visibles dentro de la industria, pero siguen siendo una pieza de importancia vital, dado que la mayoría de los engines comerciales no cumple a la perfección con las necesidades que tenemos del videojuego que queremos hacer, lo hace de una forma menos ineficiente, o simplemente tienes bugs que son necesarios arreglar.

Se utiliza mucho también en el campo de desarrollo de herramientas concretas que se utilizan en el estudio para partes específicas de la creación de un videojuegos, como podría ser generar mapas de forma procedimental, ensuciar texturas,  integrar nuevos formatos o nuevos contenidos no soportados por el engine, entre muchas otras contribuciones.

brain_Saad_Faruque

Programador de Inteligencia artificial

La inteligencia artificial es uno de los grandes elementos de gameplay que podemos utilizar a la hora de crear un juego divertido, y como tal no puede ser ni muy fuerte ni muy débil, dado que las curvas de diversión del videojuego se verían perjudicadas generando probablemente un videojuego aburrido. La inteligencia artificial también sirve para crear mundos más vivos en que nuestros personajes principales van a poder encontrarse con otros personajes e interactuar con ellos de una forma más natural, evitando la mala sensación de estar interactuando con un NPC tradicional, lo que aumentara su inmersión en el videojuego y aumente la sensación de diversión

Cada vez más también se empieza a utilizar la IA en la síntesis de emociones en los personajes y seres del videojuego, pudiendo añadir factores como el miedo, la agresividad, el desespero, la cólera, etc..

La inteligencia artificial en videojuegos vive mucho de la investigación sobre esta temática llevada a cabo a nivel mundial por diferentes entidades y universidades, por lo que los programadores de IA tienen que ser capaces, además de programar bien, ser capaces de entender muchas de las abstraccionesmás matemáticas que van generalmente asociados a la IA.

Por otro lado, dentro de este campo, y de la cada vez mayor utilización de analíticas en los videojuegos para conocer mejor a nuestro jugador y su comportamiento, muchas técnicas de inteligencia artificial aplicadas al data-mining y al reconocimiento de patrones de comportamiento, los programadores son cada vez más utilizados en la creación de funciones y herramientas que permitan ayudar a interpretar esta cantidad indigente de datos generados, imposibles de tratar si no a la luz de la inteligencia artificial.

slide002

Programador de redes

La gran mayoría de los videojuegos en la actualidad tiene algún tipo de conexión, y algún tipo de funcionalidad que necesita de la red para poder funcionar, como podrían ser leaderboards, conexión con redes sociales, o directamente funcionalidades multiplayer con la respectivas conexiones con otros jugadores o con servidores.

Para la integración de todos eso elementos, es necesario un tipo de programador que conozca bien los mecanismos de comunicación, sus capacidades, sus problemas y sus limitaciones para conseguir implementar todas las funcionalidades requeridas por el juego y su correcta integración dentro de las mecánicas de juego, de una forma transparente y harmoniosa de tal forma que el jugador no se dé cuenta de si está o no está conectado en el momento, o caso contrario, podrá provocar el rechazo el jugador.  En este caso recaen por ejemplo las conexiones con los diversos game-centers o servicios de publicidad, o las propias plataformas de redes sociales, para integrar lo que estamos haciendo en el juego con nuestro círculo de amigos.

La cumbre de este tipo de programación es la relativa a los mecanismos de juegos en red, y de cómo conseguir maximizar la fluidez del videojuego operando con los diversos parámetros de red, de forma que la calidad del juego sea optima.

A igual que en el caso de la programación de inteligencia artificial, es un tipo de programación compleja y de bajo nivel, en la que la investigación que debe hacer el programador para encontrar nuevas formas más seguras, fiables y eficientes de enviar la información, se generan continuamente a nivel mundial, porque la capacidad de  poder recompilar y filtrar esa información es clave para conseguir ir mejorando las capacidades multiplayer de nuestro videojuego, y de esta forma la experiencia de juego que damos a nuestros jugadores.

Programador de Efectos/Shaders

No hace falta decir, que en cuanto a videojuegos, lo visual lo es todo. Es lo que primero entra por los ojos de un posible jugador, desde el primer momento que ha puesto su mirada sobre una pantalla o sobre un video de nuestro juego. En este apartado, no hay duda que los artistas de un videojuego son en parte los gran responsables del apartado visual, pero si su integración no es hecha correctamente, o esos pequeños efectos visuales que le van a dar un toque visual diferente, o esas sombras, esas aguas transparentes, ese césped centellante, o ese tanque de la segunda guerra mundial con el color desgastado y oxidado no se programa adecuadamente, el apartado artístico no cuaja.

Todo ello son funciones directamente dependientes de la capacidad de un programador de efectos visuales y/o de shaders, capaces de integrar el arte que los artistas han desarrollado en el motor del videojuego, del modo que creador del videojuego lo había idealizado, el artista conceptual lo había pintado, y el jugador lo había estado soñando.

Algunos podrán pensar que los shaders se pueden hacer ya casi de forma automática, y no es ni necesario tener un programador, porque los artistas también los pueden hacer. Pero la realidad es que cuando queremos hacer cosas más complejas y de más calidad, solamente un programador podrá conseguir implementar los efectos necesarios. El shader no es solamente un lenguaje para específicos efectos de luz, sino el lenguaje de programación de la GPU, y esta puede ser programada a través de los shaders casi como si fuese un coprocesador del procesador principal, y así realizar tareas mucho más impactantes que van desde modificar mallas o texturas, hasta implementar cálculos de física y de inteligencia artificial.

De lo que podamos hacer o dejar de hacer, dependerá exclusivamente de la capacidad del programador que se integre en esta función. Además, en juegos multiplataforma con dispositivos con diferentes capacidades, gran parte de la consistencia del videojuego a través de esa diversidad de máquinas dependerá mucho de este tipo de programador.

mapa de calor

Programador de analíticas

Como en el caso del diseño de videojuegos, con la cada vez mayor necesidad de conocer más información sobre nuestro videojuego, la integración de analíticas dentro de los videojuegos está derivando en que este rol aparezca dentro del grupo de desarrolladores, para poder conjuntamente con el equipo de diseño, buscar e implementar los puntos del juego que queremos monitorizar, de qué forma lo que queremos hacer, y finalmente incluirlo dentro del código, con la librería que se decida utilizar, o si utilizamos un propia, incluirla dentro de las funciones de la misma.

Es una función importante, porque de su correcta implementación podremos tener menor o mayor información, con la fiabilidad correcta, sin penalizar al rendimiento del videojuego, y sin perder datos (incluso si el juego no está conectado en ese momento). Como está fuertemente ligado a todas las políticas de monetización, el tener un programador que esté solamente dedicado a esta función, puede representar un valor añadido importante.

Programación de videojuegos

Una necesidad continúa

Por fin, y para acabar de adecuar los roles, el programador no tiene solamente funciones de crear, sino también de mantener y dar soporte para de esta forma garantizar siempre la calidad y la fiabilidad del videojuego. Un bug en un juego puede tener un coste de imagen, pero un en bug una función de analítica puede tener un coste financiero importante, si no directo porque puede no estar relacionado con la monetización, pero puede estar bloqueando la capacidad de la empresa de entender claramente y objetivamente el funcionamiento y comportamiento de su videojuego en el mercado.

Un videojuego como servicio, debe mantener la capacidad de mantener la calidad e integridad de ese servicio bajo pena de generar una respuesta negativa por parte de la comunidad de usuarios del mismo. Por eso motivo el programador es un rol con cierta continuidad  en la empresa de forma a poder cubrir las necesidades operativas de su función a largo del ciclo de vida de los nuevos videojuegos. Esto antes no ocurría y la función del programador terminaba casi siempre un par de semanas después de que el videojuego fuese lanzado al mercado.


Image13

Un rol de gran futuro

La programación es un rol profesional en alza, con cada vez mayor necesidad de profesionales capaces de moverse de forma transversal entre plataformas y canales de distribución, y con capacidad además para poder mantener un diálogo creativo con otros tipo de profesionales de otras áreas más relacionadas con el diseño, las artes visuales, la experiencia de usuario o de diversión.  Es un trabajo para el cual no hay desempleo, a no ser que el programador haya perdido la capacidad de reinventarse, porque a pesar de que haya lenguajes con cierta longevidad, haya nuevas tecnologías, nuevas formas de desarrollar, o no nuevos frameworks que pueden apoyar en el desarrollo. El no ser capaz de integrarse en esa evolución continua puede limitar la empleabilidad del mismo, pero en la actualidad hay falta de programadores en muchos campos de la tecnología, haciendo de los programadores un colectivo con un gran futuro.

To be continued ….

Daniel Parente

Autor

Daniel Parente

CEO de Hydra Interactive Entertainment

A continuación

Relacionado Entradas

Uso de cookies

Esta web utiliza cookies para mejorar tu experiencia de usuario. Si continúas navegando estás dando tu consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pincha el enlace para mayor información.plugin cookies