Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

¿Qué hace realmente un programador de videojuegos?

–Programar juegos no es lo mismo que “desarrollar” juegos–

Recuerdo una historia sobre alguien que compró una computadora de 8 bits hace ya mucho tiempo. En cierto momento decidió que quería dedicarse a programar videojuegos y fue con el gurú del pueblo para que lo orientara en su búsqueda. Sin mucho entusiasmo el sabio le dio una serie de manuales sobre el sistema que acababa de comprar entre los que se incluia un libro sobre el microprocesador Z80 y los esquemáticos de ese modelo específico de computadora. Tras darle los documentos le dijo que con eso podía empezar a programar y ya cuando aprendiera podría dedicarse a hacer videojuegos.

Esa historia que les conté ocurrió hace casi 3 décadas. Hoy en día cuando un quinceañero acaba de jugar sus juegos favoritos en su consola 3D y decide que quiere dedicarse a hacer juegos. Cuando se encuentra con los actuales gurús vive una historia completamente diferente. Lo primero que descubre es que no todos son programadores y que dependiendo del grupo con el que llegue puede que ni siquiera encuentre uno solo. Hay expertos de varias materias desde los necesarios grafistas, músicos, guionistas, eso que ahora llaman “game designers”, productores y hasta las indispensables especialistas en retoque de botones de interfaces. Dependiendo de la paciencia y el día del mes en los que se encuentren dichos gurús pueden mostrarse amistosos y solo reirse del aspirante de manera condescendiente diciéndole que nunca va a ser tan profesional como ellos o pueden portarse como verdaderos patanes y decirle que antes de siquiera dirigirles la palabra les muestre su título de universidad costosa, sus certificaciones internacionales vigentes en el uso del software (propietario) de moda y una lista de al menos 10 videojuegos publicados. Si cumple con todos estos requisitos puede que le concedan el privilegio de dirigirles la palabra en una cena que por supuesto el aspirante tiene que pagar con su dinero. En esa entrevista lo único que escuchará es lo geniales que son como profesionales de la industria y le advertirán que no se atreva a preguntar ni un solo detalle técnico sobre como hacer videojuegos porque firmaron contratos NDA muy severos que no les permiten hablar con nadie sobre esas cosas. En fin, si creian que la primera historia el sabio que le dio los manuales de ensamblador era frio y cruel, me reservo la descripción de lo que estos personajes vendrian a ser.

Para empezar pronto con el tema. Les diré que originalmente los videojuegos eran hechos solo por programadores. Un par de programadores experimentados que tuvieran el suficiente conocimiento y dedicación podían crear un juego razonablemente bueno en sus propias casas y con solo vender unas pocas miles de copias obtener el suficiente dinero para ser considerados desarrolladores exitosos. Con el tiempo la tecnología fue evolucionando y los juegos necesitaron mas que programación para seguir siendo considerados buenos. Las altas resoluciones y profundidades de color permitieron arte mas detallado que solo los buenos dibujantes podían hacer. El hardware de sonido que antes ni siquiera existía ahora demandaba músicos profesionales para hacer los temas. El almacenamiento masivo a bajo costo de los discos ópticos permitió incluir secuencias animadas que debían de ser hechas por auténticos cineastas y por supuesto al haber tanta gente trabajando en eso fue necesario contratar personal administrativo que llevara el control de todo. Y por supuesto toda esta gente cobraba y algunos cobraban bastante caro.

Al crecer en personal, las desarrolladoras se fueron pareciendo mas a las verdaderas empresas. El modelo de los 2 programadores solitarios que trabajaban en el sótano de su casa sin cobrar había quedado atras y ahora los juegos debían de venderse lo suficiente para pagar los salarios de toda esa gente por los meses siguientes en los que lanzaran su próximo videojuego. Eso significaba que para empezar el desarrollo del primer juego era necesario contar con una inversión inicial muy grande y ahí fue donde entraron los inversionistas que por supuesto imponian sus reglas para asegurarse que su dinero se utilizara bien. Y así fue como poco a poco los 2 programadores que habían iniciado todo fueron quedando en el olvido.

Lo que NO es programar videojuegos

Una de las ironias mas grandes en el desarrollo de videojuegos es que si le preguntamos a cualquier persona de la calle que se necesita para hacer videojuegos casi todos nos contestarán que hay que saber algo sobre programar computadoras. Pero si le preguntamos a un gamer como se imagina el trabajo en una empresa de videojuegos muy pero muy pocos dirán algo que siquiera se parezca a la programación. Cualquier gamer que un dia se le ocurre hacer su propio juego lo primero que piensa es en una idea. Historias, personajes, armas, mecánicas y mundos completos le brotan en un momento de inspiración y durante los siguientes dias hace dibujos sobre todo aquello que imaginó para irle dando forma a su juego. A todos esos creadores tan inspirados les tengo una muy mala noticia. Nada de esas cosas tan divertidas tienen que ver con ser programador de videojuegos o al menos no exactamente de esa manera.

El programador de videojuegos no dibuja personajes, no escribe historias, no compone música ni le interesa siquiera si un juego es o no divertido. Para un programador puro el arte no son mas que un arreglo rectangular de pixeles, los sonidos y música una secuencia continua de ondas muestreadas, las historias complejas son una estructura de datos que se recorre siguiendo un conjunto de reglas y el concepto de diversión en el juego no significa nada para él. Esto no significa que un programador de videojuegos no pueda tener sus propias ideas creativas y divertidas para hacer sus propios videojuegos y de hecho los primeros programadores las implementaban porque no tenían a nadie mas para que lo hiciera por ellos. Y ahora que vimos lo que estos personajes no hacen, ahora veamos que es lo que SI hacen.

Un programador de videojuegos Resuelve Misterios

El trabajo de un programador de videojuegos es que el juego funcione en una computadora. Aunque la mayor parte del tiempo lo que hace es investigar. Investiga como lograr que la computadora haga lo que él quiere. Escribe programas que toman el arte digital creado por sus compañeros y lo muestra en los sistemas de salida multimedia. Crea la lógica que hace posible las reglas del juego y cuando cree que ya terminó de programar se dedica a localizar y corregir todas las fallas. Cuando no está participando en un juego investiga como crear rutinas que hagan posibles juegos mas interesantes. Y esa carrera de resolver misterios comienza desde el momento que se siente frente a la computadora a intentar hacer su primer juego.

El primer misterio al que se enfrenta el programador de videojuegos es el de como hacer un programa que funcione como un Hola Mundo en ese nuevo sistema. Luego investiga como iluminar pixeles individuales, detectar cuando se oprimen los botones del control y emitir sonidos por el sistema de audio. Luego lee archivos de imagen guardados en el sistema de almacenamiento para mostrarlos en pantalla y darles interacción y ya cuando puede hacer un gameloop responsivo y estable es cuando comienza realmente a hacer videojuegos. Si sabe que el juego que van a hacer es un plataformas estilo Mario Bros investiga como hacer para que el personaje corra por la pantalla. Que se mantenga en el suelo al caminar y que no vuele ni caiga a traves de el. Que los saltos se vean realistas. Que las plataformas móviles transporten a los personajes y que no se deslicen bajo sus pies. Que el programa sea capaz de darse cuenta cuando el personaje está frente a una pared y que esta lo detenga. En fin. Debe de asegurarse que las reglas del mundo que está creando realmente funcionen por muy obvias o tontas que puedan parecer. Pues si hay algo que un programador de videojuegos debe de tener siempre en cuenta es que la realidad en la programación de videojuegos está mucho mas allá de los límites del sentido común.

Hasta aquí lo que el programador de videojuegos ha hecho no es mas que una mera simulación. Cuando el programador ha amasado una cantidad suficiente de códigos que hacen posibles ciertas mecánicas de juego es cuando entra el resto del equipo. Personalmente prefiero que el programador haga primero rutinas reutilizables que funcionen y que luego el resto del equipo diseñe arte y mecánicas de juego que las utilicen. Aunque también el artista puede decirle al programador que haga posible algo. Digamos que quiere que en el juego aparezca un fantasma que se acerque al héroe cuando le de la espalda y que actue como si nada cuando se voltee a verlo. El programador debe de averiguar como detectar cuando el fantasma está dentro del campo visual del héroe y activar una bandera que le indique al fantasma que lo están viendo y que debe de quedarse quieto. El programador debe de ser capaz de detectar esa condición e implementarla en el juego.

Pero los misterios no acaban cuando todo lo que los artistas quieren incluir en el juego ya está en patalla y funcionando. Al final del día un videojuego es un programa de computadora como cualquier otro y como buen programa puede estar lleno de fallas. El programador debe de revisar todo el código en busca de errores y si es posible demostrar no solo que estos no existen sino que incluso no pueden suceder. Hay libros enteros que hablan sobre como hacer programas que contengan la menor cantidad posible de errores. En si la programación de videojuegos tiene que ver con como resolver estos misterios y hacer que las ideas de los artistas puedan ejecutarse en el hardware. O sea que programar videojuegos no tiene nada que ver cos eso que los principiantes llaman sus buenas ideas y que tanto miedo les da que alguien se las robe.

Para resolver los misterios un programador debe de tener una preparación (conseguida como quiera pero preparación al fin) que le permita investigar y descubrir cosas. Por eso las matemáticas son tan importantes. La geometría analítica le permitirá hacer juegos 3D realistas, la física crear animaciones y efectos creibles, las matemáticas discretas le ayudarán a crear estructuras de datos y algoritmos de inteligencia artificial efectivos y el álgebra le permitirá optimizar el código al disminuir la cantidad de operaciones mediante despejes. y todas estas cosas no se aprenden en los 5 o 6 años que dura una carrera universitaria normal sino con la experiencia de muchos años de programación. Pero lo mas importante es que el programador de videojuegos nunca deja de investigar. Siempre hay nuevo hardware, nuevas mecánicas de juego y nuevos efectos especiales a dominar.

Con esto no quiero desanimar a nadie de aquellos que quieran hacer videojuegos. Solo es una advertencia de lo que se van a encontrar y como deben de comportarse para sacar adelante los proyectos. Pues he sabido de muchos casos en los que los diseñadores quieren hacer juegos que el programador no es capaz de hacer pero cree que si puede. Y como consejo final les recuerdo una regla simple: Nunca pero nunca diseñen un videojuego que no sean capaces de programar. Y siempre manden al programador por delante.

Anuncios

junio 7, 2012 - Posted by | Uncategorized | , ,

6 comentarios »

  1. siempre me he preguntado si has desarrollado algun videojuego, me gustaria probarlo(s).

    Comentario por fabians | junio 8, 2012 | Responder

    • A mi también me gustaría probar mis propios juegos que se supone que he hecho. La verdad es que desde el 2010 en lugar de ponerme a programar como debería hacerlo me la he pasado trolleando a “la industria” y burlándome de sus quiebras y liquidaciones. Igual cuando se me pase la risa me pongo a programar bien y cuelgo aquí algunos jueguitos

      Comentario por asm86 | junio 9, 2012 | Responder

  2. Creo que el que hizo este blog es un tonto que no tiene tiempo mas que para chuparle las medias y decir lo geniales que son los tipitos que escriben lineas para que otros se diviertan.

    Comentario por Carlos | diciembre 14, 2012 | Responder

    • Mas me divierto cuando los reputados developers de La Industria se van a la quiebra sin importar cuanto dinero le hayan sacado al gobierno con el PROSOFT. Aunque no niego que escribo estas lineas por pura diversion y LULZ

      Comentario por asm86 | diciembre 14, 2012 | Responder

  3. “Nunca pero nunca diseñen un videojuego que no sean capaces de programar”, este es siempre el primer falló que se comete y la primera lección que siempre se tiene en mente al desarrollar tu nuevos proyectos.

    Comentario por Carlos.Co | agosto 22, 2013 | Responder

  4. Me da igual, yo soy programador y pienso programar mis historias.

    Comentario por Programming | abril 7, 2015 | Responder


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: