Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

Ya no quiero programar videojuegos 2D

–O el viaje a un espacio donde no hay plaga indie–

Quería hablar sobre la plaga indie pero luego de escribir unas 10 entradas que no quise publicar decidí dejar de lado el asunto y concentrarme en la parte que a mi me afecta. Y para que la plaga indie no me afecte he tomado la decisión de no participar más en el desarrollo de juegos 2D.

Antes de explicarlo mencionaré una teoría de conspiración que dice que tras la segunda guerra mundial gobiernos muy poderosos estaban preocupados porque el arte fuera usado como propaganda política y para desacreditar a los artistas manipularon los mercados de arte y a la prensa especializada para que cosas que no tenian ningún mérito artístico fueran consideradas arte moderno. Así que no me extrañaría enterarme que algo similar está pasando con los videojuegos. Pues sospecho que alguien está sacando provecho de esta ola de juegos injugables, caros, que no tienen nada de programación y que cuando llegar a estar bien hechos a lo más que llegan es a parecerse a juegos de hace más de 20 años. ¿Pero quién gana con todo esto? ¿La prensa del videojuego que habla de los indies como estrellas?¿Los que cobran por poner a la venta esos juegos y que muchas veces nadie paga por jugar?

No tengo idea de quién se esté beneficiando con la plaga indie pero se muy bien a quienes está perjudicando: A los desarrolladores. Antes de la plaga indie no conocí a ningún programador de videojuegos que tuviera problemas económicos. Pues los que no podian llevar al mercado sus propios juegos como mínimo eran contratados para programar el juego de alguien más sin más requisitos que presentar un código que funcionara. En cambio, ahora la inmensa mayoría no tiene trabajo y los pocos que lo tienen deben elegir entre ser parte de eso que llaman ahora la industria y aceptar trabajos donde los tratan bastante mal o vivir de las bases de datos y destinar el poco tiempo que les quede a hacer sus proyectos personales. Los programadores de videojuegos pasaron a sufrir los mismos problemas que los artistas han sufrido durante toda su historia.

¿Pero por qúe ya no quiero programar juegos 2D? Pues porque cualquier juego 2D que programe por mucho que lo programe en ensamblador y logre implementar efectos visuales impresionantes o consiga a buenos artistas para que me hagan los assets nunca va a llamar más la atención del gamer promedio que un juego indie cualquiera hecho en game maker o herramienta juegomática similar con código reciclado una y otra vez y arte con estilo de fanart tumbrezco. Y peor aún si a eso le agregamos que hay juegos indie que se vuelven muy famosos por alguna razón ridícula. Alguna de las razones más ridículas que conozco y que han disparado las ventas de juegos indie son: Que un youtuber lo hizo famoso por burlarse de él, por copiarse descaradamente el estilo de un juego antiguo para ganarse a su fandom, que el que le llevaba el café al programador de un juego clásico quiera hacer una “secuela espiritual” de un título cuyo código nunca tocó o que los personajes sean material para la infame Rule 34.

El asunto es que mientras me mantenga en el 2D siempre va a haber otros juegos indies que llamen más la atención del gamer por cosas sobre las que no tengo ningún control. En cambio en el 3D el dominio de los indies no es tan fuerte. De hecho hasta ahora no he visto ningún juego indie 3D que no parezca estar incompleto, que tenga un control que responda del todo bien o que se compare a nivel visual y de gameplay con un juego de tiempos del Playstation 2 para acá. Y cuando digo juegos indie 3D me estoy refiriendo a juegos indie “powered by” engines 3D como Unity o Unreal, con modelos 3D hechos en Maya o Zbrush y a veces hasta con motion capture. Estos indies a pesar de tener acceso a herramientas para hacer juegos de calidad comercial simplemente no llegan al nivel que el gamer promedio esperaría encontrar en un juego 3D. ¡Y tengo que aprovecharme de eso!

¿Pero por qué los indies no pueden hacer juegos 3D decentes aunque les den las herramientas, el dinero y la capacitación para hacerlos? Sospecho que esto tiene explicación en la genética. Pues los indies que hacen juegos que explotan los motivos ridículos de éxito ya mencionados son particularmente malos para pensar en tres dimensiones o entender conceptos matemáticos que hacen funcionar un buen juego 3D. Y no nada más me refiero a los programadores. Pues entre los indies no hay tantos modeladores y animadores 3D como dibujandes de sprites. O gente que pueda diseñar niveles en los que la percepción del espacio sea clave para jugarlos como los juegos de plataformas o FPS. De ahí que la inmensa mayoría de los juegos indie 3D medianamente exitosos sean “walking simulators” o puras conversaciones y nada de acción. Pero lo mejor de que los indies no sean tan buenos en general con el 3D es que ciertos grupos de indeseables con los que no quiero tartar en esto de hacer juegos parecen huir del 3D casi tanto como de la programación. Y eso ya es más que suficiente para alejarme lo más que pueda del desarrollo de juegos en 2D.

¿Pero por qué no había tomado más en serio el 3D desde antes? Pues porque yo mismo que se como funciona pensé que todavía no tenía el nivel para hacer un proyecto decente y decidí comenzar con algo pequeño. ¿Pero en serio un juego 3D siempre es más dificil de hacer que uno 2D? Esto tal vez sea un mito porque hay juegos 2D que parecen sencillos de hacer o con un aspecto demasiado “retro” cuyos personajes tienen animaciones de cientos o miles de frames que le tomarian meses o años de trabajo a un indie que trabajara en solitario y en sus ratos libres. Mientras que un juego 3D puede lograr todo tipo de tomas con rotación, escala, deformación e iluminación en tiempo real en menos de una semana a partir de un único modelo 3D y rutinas que implementaran las ecuaciones de proyección 3D y multiplicación de matrices y vectores. De hecho ahora mismo me vienen a la mente muchos juegos 3D que perfectamente pudieron haberse hecho en 2D porque el gameplay era bidimensional pero en 3D primitivo con modelos que parecian cartones de leche todo se veía más impactante. Como muchos shoot’em up o matamarcianos de mediados de los noventa.

¿Pero qué tan simple puede ser un juego 3D? No se me ocurre ningún juego 2D que no pueda rehacerse en 3D sin cambiar su gameplay. Pero adaptar el modo de juego 2D al 3D es algo por completo distinto. En mi opinión lo que hace que un juego 2D sea portable al 3D es la rotación. Un juego donde la rotación sea parte del gameplay, por ejemplo el antiguo juego Asteroids! de cuando apenas empezaban las arcades se ha adaptado al 3D muchas veces y en todas ha quedado un muy buen juego. Mientras otros juegos 2D, particularmente los de plataformas clásicos no la han tenido tan fácil. Y en los pocos casos en los que se ha logrado dar el salto al 3D como por ejemplo en Mario Bros se ha tenido que agregar cuando menos la rotación en el eje normal al plano del terreno. Así que recuerden. No importa que tan de plástico industrial con efectos de luz surrealistas tenga su juego. Si no hay rotación de la cámara por lo menos en un eje entonces su juego 3D no es realmente un juego 3D. Ya no hablemos de desplazamientos en los 3 ejes.

¿Y yo que voy a hacer? Pues no me queda otra que huir de la plaga indie. Y para eso tendré que salir corriendo o volando según el sistema de coordenadas en la dirección a la que apunta el eje Z.

Anuncios

julio 20, 2017 Posted by | Uncategorized | , , | 3 comentarios

¿Por qué los mexicanos somos tan malos para programar videojuegos?

–El Eslabón Perdido de 8 bits–

Aunque ustedes no lo crean en México ha habido muchos esfuerzos para desarrollar videojuegos durante los últimos 20 años. Incluso en cierto momento del 2010 muchas fuerzas se pusieron en marcha para echar a andar lo que pudo haber sido la EA de latinoamérica. Hubo un publisher que invirtió mucho dinero para sacar adelante proyectos en colaboración con empresas internacionales tan importantes como Konami, SquareEnix o la mismísima Nintendo. Había tratos para distribuir los juegos en muchas partes del mundo y una enorme campaña publicitaria. ¿Pero qué pasó al final? Supongo que el que ustedes que me leen no hubieran sabido de la existencia de esta elite del desarrollo de videojuegos de México lo dice todo.

Ya en serio, se lo que pasó y puedo decirlo porque yo lo vi muy de cerca y en tiempo real. La gente que contrataron no tenía idea de como se programaba un videojuego y no pudieron terminar a tiempo algo decente. El resultado obviamente fue malo y no se vendió. Y si, ya se que si me han leido desde aquellos años creen que saben lo que voy a decir, pero esta vez tengo una nueva teoría de por que en México somos tan malos para programar videojuegos y esto lo veo porque aunque ya hay grupos independientes que nada tienen que ver con aquel fracaso multimillonario si que el problema de no poder programar un juego con rendimiento de hardware decente o cuyo costo de producción sea mínimamente redituable se repite una y otra vez.

Antes de entrar al tema voy a trollear un poquito. Verán, en ese entonces yo creía que la culpa de la ineptitud de los mexicanos para programar videojuegos tenía razones culturales o académicas más que históricas, pues veía que en ese período en el que nació lo que aquí se llama “La H.Industria” todos parecían provenir de o buscar emplear a gente del mismo origen. Pero luego me tocó ver grupos que no tenían nada que ver con esa demografía que intentaban hacer juegos y fallaban por su ineptitud en la programación y cuando lograban sacar algo jugable el nivel de ventas no era suficientemente alto para recuperar lo invertido.

Pero bien. ¿Por que los mexicanos somos tan ineptos para programar videojuegos? Mi nueva teoría es que en el pais no se vivió una época que si se vivió en paises como Estados Unidos, Japón, Inglaterra e incluso España. En esa época fue cuando se crearon muchas de las grandes empresas de videojuegos que todavía existen o afamados creadores de videojuegos aprendieron a programar. Una era en la que las computadoras no servian para tantas cosas como ahora y que cualquiera que poseyera alguna sin importar su edad, clase social o nivel de estudios podía usarla para aprender a programar, crear videojuegos y hacerse famoso. Esa era fue la de las microcomputadoras de 8 bits.

Las microcomputadoras de 8 bits eran poco más que juguetes. Por la décima parte del valor de una computadora de verdad uno podía comprarse uno de estos aparatos similares a un teclado de computadora gordo que podía conectar al televisor de casa cual si se tratase de una consola de videojuegos. Y al igual que estas sus capacidades eran bastante reducidas: Procesadores de 8 bits a 3 o 5 megaHertz (una milésima de velocidad de una PC barata del 2016), memoria RAM de 64 kilobytes o menos en la que no cabría ni el ícono de escritorio de un juego actual y almacenamiento secundario que en caso de existir se hacía en cintas de cassette iguales a las usadas para la música y que podian tomar varios minutos en leerse. Estos sistemas aunque baratos eran incompatibles entre si de modo que un programa o juego para una consola podia no funcionar en otra y si se ‘porteaba’ el resultado era por completo distinto cuando no deprimente. En el continente americano las máquinas de 8 bits dominantes eran marca Commodore basados en el chip 6502 que era el mismo del NES, en Europa las Amstrad y ZX Spectrum basadas en el Z80 y en Asia la MSX o otros sistemas también encontrados en las regiones anteriores.

Pero lo mejor de los sistemas de 8 bits era toda la comunidad que se había creado alrededor de ellos: Programadores entusiastas que se reunian a comparar y compartir software creado por ellos mismos, revistas que publicaban artículos sobre como programar estos sistemas y hasta números con códigos completos que cualquiera que entendiera su funcionamiento podía teclear en su casa, o incluso aunque no lo entendiera podía hacerlo funcionar mientras no cambiara ni una sola letra.

Ese período histórico como ya dije fue clave en paises donde ahora si que existe una verdadera industria de videojuegos. Pero ahora veamos lo que pasó en México y que aunque algo tuvo que ver el problema que había con la importación de computadoras, en el caso de sistemas de 8 bits esto no fue tan malo, pero si que pasaron otras cosas bastante raras.

El Ataque de los Niños Gigantes

Para empezar, mientras que en paises como los ya mencionados estos sistemas se popularizaron tanto que vender juegos grabados en cintas de cassette era buen negocio en México los sistemas de 8 bits no se vendieron tanto. Pero no porque fueran sistemas muy caros sino porque había un extraño estigma alredor de las microcomputadoras que hasta hoy no se si fue un error en las campañas publicitarias o habría razones genéticas hasta ahora no descubiertas. Y es que es hasta esta época con el Youtube y los podcast que me enteré que en otros paises quienes usaban estas computadoras eran programadores y aficionados a los videojuegos o “gamers”. En México no recuerdo haber visto que a los gamers les interesaran estos sistemas tanto como las arcades o consolas como el NES o las todavía funcionales Atari 2600. Los usuarios mexicanos de las computadoras de 8 bits eran en su inmensa mayoría una extraña especie a la que en ese entonces clasifiqué como “Niños Gigantes”. Pues se trataba de sujetos casi en su mayoría hombres que a pesar de ser mucho más altos que el promedio de la población sus cuerpos eran blandos y redondeados como los de los niños, casi carentes de barba, aunque a algunos ejemplares les crecian barbas pobladas al comenzar a trabajar para distinguirse de los otros machos de la manada. Y sin barba, su edad resultaba casi imposible de determinar sin buscar indicios en su ropa que revelaran su pertenencia a alguna empresa o escuela. En público era casi imposible encontrarlos a más de un metro de distancia de sus madres que casi siempre eran mujeres de vestir conservador y trato confiado con desconocidos y quién decidía todo por ellos como que juegos debería de comprar de acuerdo a su contenido. Mi trato con los niños gigantes era contradictorio, pues si bien siendo ya un geek en potencia y teniendo tema para hablar con ellos me daba miedo terminar convertido en uno o por lo menos si lograba llevarme bien con ellos hacía todo lo posible por llevar esa convivencia lejos de las miradas condenatorias de los normies.

En internet la única referencia remota que he encontrado sobre la relación entre los Niños Gigantes y las computadoras de 8 bits son comentarios sobre que los usuarios de esos sistemas no eran tan competitivos ni afectos a los juegos de acción rápida como los jugadores de arcades o consolas. En cambio preferian juegos más “meditativos” y pausados que resultarian incomprensibles para los jugadores de hoy. Tal vez lo más parecido sería una combinación de aspacto de Visual Novel con el gameplay de un juego de estrategia por turnos y muchos comandos de texto o menus desplegables. Es más, una vez escuché a uno de estos Niños Gigantes que trabajaba en el departamento de computación de una escuela secundaria referirse a las consolas como “Un desperdicio de tiempo y de dinero” y que era mucho mejor inversión una Commodore Amiga. Y si bien ese modelo específico de computadora (que no era ya de 8 bits) era muy bueno y tenía muchos juegos no era nada facil de conseguir en las tiendas y sus juegos en mi ciudad eran por completo inexistentes.

Ensamblador V.S. BASIC

Pero volvamos con el tema de la programación. Algo interesante de las computadoras de 8 bits es que se podian usar para programar pero los únicos dos lenguajes de programación funcionales eran Ensamblador y BASIC. Creo que no tengo que decirle al publico habitual que los verdaderos programas se hacian en ensamblador y el BASIC era meramente una cosa para los muy pero muy principiantes. Y algo que si noté es que nunca vi a un Niño Gigante programar una Commodore o un ZX Spectrum en ensamblador. Al menos no en México. Mi teoría es que la presencia de esa extraña y blanda especie en la escena de las computadoras de 8 bits tenía algo que ver con que la publicidad con que las ofrecian las presentaban como herramientas para el aprendizaje y no como computadoras o consolas de videojuego programables. Recuerdo especialmente un anuncio de la XE de Atari que la presentaban como una herramienta de aprendizaje para que la compraran los padres y como una consola de videojuegos para que atrajera a los niños normales. Otra razón por la que dudo que hubiera muchos niños gigantes programando en ensamblador es que programar en él requiere de mucho tiempo y esfuerzo y una de las características de los padres que criaban a dichos ejemplares tenian la férrea política de no permitirles estar con una computadora o consola de juegos por más de una o dos horas al dia.


Pero el daño ya estaba hecho. Mientras que en otros paises había cientos de programadores que habian hecho juegos en ensamblador para que otros miles de gamers los jugaran en sus sistemas de 8 bits en México los pocos programadores de ensamblador de 8 bits que pudieran haber existido nunca pudieron comercializar sus juegos porque los pocos que tenian una de estas máquinas eran en su mayoría los mullidos Niños Gigantes y lo más seguro es que sus madres nunca les hubieran permitido jugar videojuegos no educativos con la excusa de que eran “violentos”. Personalmente yo no recuerdo haber visto una computadora de 8 bits mas que una vez en una tienda, pero casi siempre se comentaba que “el amigo de un amigo o el primo de un amigo” tenia una. Cuando el tiempo pasó hubo un pequeño movimiento de programadores para computadoras en los noventa pero la mayoría de las computadoras de 16 y 32 bits eran tan caras que no era negocio producir y vender juegos para PC en el pais. Lo peor fue cuando aparecieron las redes sociales y las computadoras pasaron a ser un accesorio más de la casa o de moda en el caso de los smartphones en lugar de algo exclusivo de programadores, gamers y geeks. Ahora vamos con más de mi teoría.

La era de las leyendas quedó atrás…

Una de las cosas que más he defendido es que los programadores tienen sus propias leyes para juzgarse entre ellos y que lo único que hace la diferencia entre un programador y otro son sus códigos. Los programadores comienzan desde niños o adolescentes a programar mientras curiosean con las máquinas. Aprenden por si mismos y prueban su código una y otra vez hasta que logran que la PC haga lo que ellos quieren. Yo mismo puedo decir que mi espíritu de programador disminuyó mucho en la era del internet “normie” y cada vez me cuesta más trabajo ver las nuevas computadoras como veia mi viejo Pentium 100mHz que programaba en ensamblador para Windows 95 luego de que el BASIC, C y C++ en ese orden me fueron quedando pequeños. Me hubiera gustado programar una Commodore o un Spectrum en ensamblador y enviar mi juego a algún pais en donde estos sistemas si que estaban en manos de gamers. Ahora si me pongo nostálgico tal vez pueda programar algo para emulador y que lo jueguen unos pocos aficionados a la retroinformática.

¿Y cual fue el efecto de que en México no hubiéramos tenido una era de desarrollo de videojuegos en 8 bits? Pues que nunca tuvimos programadores de videojuegos que valoraran la eficiencia. Se dice por ejemplo que en España el negocio de los videojuegos decayó cuando se popularizaron las computadoras de 16 bits porque no había tantas y los juegos eran mucho más fáciles de copiar gracias a los discos flexibles. Regresando a México vagamente recuerdo que cuando a las computadoras de 8 bits les quedaba poco alguien intentó hacer un concurso de programación pero no supe en qué acabó. Y en cuanto a la programación de videojuegos “profesional” esta comenzó a dar señales de vida en una época en la que el estandar era una PC de 32 bits con Windows, tecnología de aceleración gráfica y almacenamiento óptico. O sea nada que ver con sistemas de 8 bits con 64k de RAM y menos de un megabyte de almacenamiento magnético. No estuve ahí pero cuenta la leyenda de que los primeros intentos costaron demasiado y las ventas no fueron suficientes. Situación que sigue repitiendose al dia de hoy.

Todo esto puede explicar el por qué la actitud prejuiciosa y narcisista de la H.Industria al negar la posibilidad de que existieran programadores de videojuegos fuera de su selecto círculo. Y si bien tenian algo de razón porque al no haber una era de desarrollo local de 8 bits no hubo programadores también olvidaron que dentro de su propio círculo tampoco iban a encontrarlos. Lo más cercano que pudieron encontrar debió ser alguna variación (no digo descendientes porque dudo que pudieran reproducirse de manera natural) de los Niños Gigantes de los ochenta cuya experiencia personal se limitaba al BASIC y una cosita despreciable de C++ desde Visual Studio con la que copypasteaban los ejemplos del SDK de DirectX y en lo profesional a hacer cosas de bases de datos. Es por esto que la inmensa mayoría de los mexicanos que actualmente quieren programar videojuegos tienen tantos problemas: Porque no vivieron la época en la que había que programar el hardware al máximo y si son muy jóvenes nunca tuvieron a un maestro que si hubiera vivido en esa época porque en este pais esa época nunca existió.

¿Y como podríamos recrear la época en la que las grandes leyendas de la programación de videojuegos aprendieron sus habilides? La cosa sería muy dificil porque el mundo de hoy es otro. Sería como enseñarle a sobrevivir en la naturaleza a alguien que nunca ha salido de la ciudad y que cree que las fieras de la selva son como los animalitos de las películas de Disney. Un niño o joven que hoy quiera aprender a programar videojuegos se vería abrumado con todo tipo de herramientas como los engines, editores multimedia y 3D muchos de los cuales podría descargar a su computadora desde el primer dia. Pero oh sorpresa vería que no sabe usar ninguno y que tiene que pagar una fortuna en libros, cursos y certificaciones para aprender a usarlos y luego de algunos años y muchísimo dinero invertido se daría cuenta de que él solo no va a poder hacer un juego exitoso porque no cuenta con los 500 millones de dólares para desarrollar algo como el siguiente GTA ni nadie le dará la décima parte de eso para hacer su jueguito indie injugable y se retirará a manejar bases de datos si es que lo suyo era la programación o a ser ayudante de publicista si quería hacer juegos pero se asustó al ver que programar requería saber matemáticas.

De momento de lo único que estoy seguro es que si alguna vez aparece una verdadera empresa de videojuegos en el pais no va a ser gracias a inversionistas ni “gente importante” sino al esfuerzo de grupos pequeños que desarrollarán sus proyectos desde cero, con sus propios recursos y el tiempo libre que les quede luego de un pesado dia de trabajo o escuela. Gente que no esperó a que alguien abriera una universidad de programación de videojuegos para tomar un libro de programación e implementar los algoritmos explicados en él. Que tampoco va a esperar a que alguien le pague un salario para hacer juegos ni mucho menos se quejará de que es poco si tiene la inmensa fortuna de encontrar a un incauto dispuesto a pagarle. Pues en otros paises grandes leyendas de los videojuegos comenzaron de la nada y México no tiene por que ser la excepción. Y recordando algo que dijo uno muy relacionado con el género FPS: “Para hacer videojuegos lo único que necesitas es una PC, mucha dedicación y una buena provisión de comida congelada”. Aunque por supuesto estas palabras fueron dichas a mediados de los noventa cuando no había redes sociales, video en streaming ni apps de mensajería que distrajeran a los programadores de su monástica labor. Por desgracia esa era de dificultades donde se forjaron los mejores no regresará a menos que ocurra alguna clase de equivalente informático de un apocalipsis zombie. ¿O será acaso que quien lo logre ya vive actualmente en su propio mundo apocalíptico encerrado, sin dinero ni tiempo libre y si muchísimos problemas para hacer juegos? ¿Estará leyendo esto ahora mismo? Eso sólo el tiempo lo dirá.

agosto 1, 2016 Posted by | Uncategorized | , , | 5 comentarios

El 2D actual es menos eficiente que el 3D

–O por que los personajes parecen marionetas de papel–

Al momento de escribir esto estoy a pocas horas de haber regresado de una de las convenciones de comics a la que hasta ahora le he sacado mayor partido como programador. Pero no piensen que conocí a grandes desarrolladores de juegos con los que pude aprender técnicas o cerrar tratos sino todo lo contrario. Sin proponérselo me enseñaron cosas de programación que llevaba tiempo sin entender del todo. Pero comencemos con la historia.

Hace tiempo que ya no iba a las convenciones de comics de Monterrey porque ya no me ofrecen nada que no pueda ser comprado (o descargado) por internet. Sin embargo voy cuando invitan a alguien relacionado con el desarrollo de videojuegos. He visto gente que intentaba hacerse millonaria cambiándole cosas a un ejemplo de un tutorial de Flash, un grupo que quiere hacer proyectos que abarquen todo lo vendible posible pero no han podido hacer videojuegos porque no saben programar, un expositor que se me escapó y por perseguirlo acabé en una situación similar a la de Homero Simpson cuando fue al Circo Francés y de un tiempo acá una incontable cantidad de escuelas donde por un precio comparable a estudiar una carrera universitaria en una universidad privada te leen la ayuda de algún software y entregan un papel que dice que les pagaste. Pero esta vez la experiencia sería un poquito diferente.

Pues estaba yo de troll en internet cuando me entero que en la convención había dos conferencias que parecian estar relacionadas con la programación de videojuegos: La primera era sobre “Gráficos 2D para Videojuegos” y la otra sobre creación de personajes para videojuegos (o eso creí) RPG. Estas pláticas serian dadas en la “sala de talleres” justo al final del infame Pasillo de los Perdedores. Para los que no saben de estos eventos, toda convención de comics desde la famosa Convención de San Diego California hasta esas que hacen en pueblos pequeños donde todavía llega el internet, tienen una sección para expositores que no tuvieron suficiente dinero para pagar un stand de verdad ni son lo bastante reconocidos para que una empresa seria se los pague. Pero consegur un espacio en esa zona es muy barato comparado con los precios en las áreas para expositores de verdad. En el Pasillo de los Perdedores podemos encontrar dibujantes que quieren dar a conocer sus obras, otros que venden dibujos y manualidades de personajes que no son suyos y de vez en cuando algún artista local que ha logrado un modesto grupo de fans gracias a los webcomics. Pero quedémonos con la parte de la programación.

La Sala de Talleres se encontraba justo al final del Pasillo de los Perdedores. Luego de una plática de una escuela de dibujo en la que mencionaron como hacer que una obra se viera totalmente diferente con 2 clics del mouse (o más bien del stylus de la Wacom) por fin comenzó la esperada plática sobre Gráficos 2D para videojuegos

Hago una pausa para comentar algo a los más jóvenes. Yo soy lo bastante viejo para recordar como era la animación americana en las décadas de los setenta y ochenta y aunque ya desde entonces se usaban computadoras para hacerlas fue a partir de mediados de los noventa que las máquinas de los animadores tuvieron suficiente poder para crear la mayor parte de la animación con mínima intervención humana. Algo similar está ocurriendo con las actuales computadoras y smartphones. Así que alguien nacido hace menos de 20 años no ve ninguna diferencia de calidad pero los de mi generación si detectamos que en las primeras animaciones de ese tiempo u otras recientes pero de bajo presupuesto los personajes parecian ser marionetas hechas con recortes de papel en lugar de auténticos dibujos animados. Aunque hay más cuadros de animación el movimiento es demasiado plano y lineal. Sin embargo producir animación de esta forma es bastante barato y el público al que va dirigido el producto que son en su mayoría niños pequeños no es demasiado exigente. Lo que deja mayores ganancias a los productores.

Pues bien, en la plática el expositor mostró un software para manejar imágenes llamado Spriter. Creó una figura articulada a partir de unas pocas imágenes que se repetian en diferente tamaño y posición, le dio un ‘esqueleto’ y luego lo animó indicando algunos cuadros clave y dejándo que el software interpolara los cuadros intermedios. El resultado final fue una de esas cosas que ahora llaman “Sprite Sheet” que son archivos gráficos enormes con todas las posiciones posibles de los personajes. Y según dijo quien dio la plática esa sprite sheet se la pasaban al nerd apestado que era el único que le sabía mover al engine en turno. Al final de la plática algunos nos acercamos a la mesa para seguir haciendo preguntas y soltó algunas cosas que ya conocía bien por mis batallas con la H.Industria: Que si los engines, que si los makers, que si las tienditas de assets y todo de lo que me quejo siempre. Pero lo que fue nuevo es que se le salió decir que lo que muchos ‘profesionales’ hacian era bajarse códigos de juegos ya hechos y cambiarle los assets para sacar a la venta juegos nuevos. En si nada que no supiera ya.

La segunda conferencia que creí yo sería sobre como hacer personajes para juegos RPG acabó siendo en realidad unos pocos consejos de dibujo dados por un artista tradicional en lapiz y papel. No dijo nada sobre RPG ni a nivel videojuego ni a nivel juego de mesa pero dio algunas ideas para dibujar. Tal vez si a la plática se hubiera llamado “Como empezar a dibujar tus propios personajes” habría atraido más a artistas principiantes que valoraran esos consejos en lugar de a puros codetrolls como yo.

Y ahí acabó la que sería mi visita a una convención de comics que más ha hecho por mi cruzada Gamedev hasta ahora. Pero de esa experiencia saqué dos conclusiones: La primera es que si voy como expositor a un evento como esos no debo de hablar de nada de programación porque a la mayoría les va a estallar la cabeza y la segunda es que si presento un juego este debe de estar al nivel de un juego de verdad o seré un monito más en el Pasillo de los Perdedores. Pero ahora comencemos con mi ranteo sobre como eso que ahora llaman “videojuegos 2D” está mucho más cerca en cuanto a requerimientos de hardware de un juego 3D moderno para PC Master Race que de un videojuego de la era de 8 o 16 bits sin importar que tan “retro” intenten hacerlo parecer.

Los actuales gráficos 2D son en realidad 3D aplanado

Para explicarlo rápido, actualmente necesitan una mejor computadora para correr un juego “2D” como Castle Crashers o Heartstone que para jugar el no tan viejo Doom 3 que era un juego 3D en toda regla. Y es que en realidad los videojuegos “2D” actuales son en realidad videojuego 3D “aplanados”. Para generar un miserable cuadro de animación en un juego 2D actual se emplean los mismos algoritmos de los juegos 3D, los ‘sprites’ son en realidad polígonos planos con iluminación y textura que se rotan, posicionan, escalan y recortan vectorialmente. Se ordenan del más lejano al más cercano y se aplican diversos algoritmos de filtrado de color para mantener la imagen en cierta calidad. Es como si tuviéramos un juego 3D en el que los objetos en lugar de tener volumen fueran planos como esos anuncios de figuras de cartón de cuerpo entero y estuvieran dispuestos muy juntos casi uno sobre el otro.

Si esto no fuera suficiente, la poca optimización de memoria que pudo haberse logrado usando unas pocas imágenes cuya combinación forma imágenes más grandes se pierde a la hora de usar una sprite sheet. Personalmente no creo que ningún engine decente admita una sprite sheet o peor aún un atlas de textura sin hacerle algún tipo de procesamiento antes de usarlo en el juego. Pues tomar los cientos de sprites y reacomodarlos dentro de la memoria para ser mostrados puede requerir mucho más código que el necesario para mostrarlos durante el gameplay. Además las animaciones cíclicas son altamente redundantes. En otra época un personaje podía tener diferentes partes intercambiables de modo que podían armarse muchas animaciones diferentes a partir de unos pocos sprites o ajustaban los sprites de modo que cuando se hiciera un cambio este fuera mínimo. Por ejemplo que un guerrero hiciera el mismo movimiento con los brazos al atacar sin importar si su arma era un cuchillo,un mazo o una espada.

Los verdaderos gráficos 2D de la época anterior a los juegos 3D optimizaban la memoria y el trabajo del CPU o los coprocesadores gráficos. Usaban únicamente valores enteros y un byte de memoria podía representar varios pixeles. Las resoluciones eran muy bajas para tener animaciones fluidas sin desperdiciar RAM y los colores que podian ser tan pocos como 16 o menos se combinaban de maneras ingeniosas para aparentar diferentes efectos como transparencias o efectos de luz. Se usaban operaciones de lógica binaria para componer las imágenes individuales en otras más elaboradas. No había cambios de tamaño ni rotaciones porque no había capacidad vectorial ni de punto flotante y cuando algún programador muy pero muy bueno implementaba algo así era recalculando por software cada uno de los pixeles con algoritmos que usaban aritmética entera y desplazamientos binarios. Un juego completo de NES podía medir 100 kilobytes o menos que es el equivalente a un archivo de imagen de muy baja resolución y uno de 16 bits como de Super Nintendo o Sega Genesis/Mega Drive unos 2 megabytes que es menos que una foto típica tomada con un smartphone barato que uno sube a las redes sociales. Todo eso se resume en una palabra hoy desconocida por los que se creen profesionales: Optimización. Que significa obtener el mayor provecho posible con los recursos disponibles.

Un brazo dibujado por nadie

Antes de seguir con lo de la optimización haré referencia a una escena de Los Simpson en la que Bart compra una celda de animación de Tomy y Daly (Itchy & Scratchy) por 300 dólares con la tarjeta de crédito de Homero pero cuando recibe el esperado paquete se desilusiona al ver que apenas se trata de un dibujo de un pequeño brazo y mucho espacio vacío. Ni siquiera un personaje o escena completa. Así que con la esperanza de recuperar el dinero perdido intenta venderlo en la tienda de historietas y ahí el coleccionista antes de echarlo a la calle le muestra un dibujo enmarcado y dice algo así como “Este es un original autografiado por un artista famoso y lo que traes ahí es un brazo dibujado por nadie”, aunque al final se apiada de él y aunque no le paga en efectivo le ofrece cambiarlo por una mercancía que no se vendió. Esta escena es clave para entender el final de esta entrada. Ahora sigamos hablando sobre a donde se fue la optimización en los juegos 2D.

La optimización todavía existe pero ya no está en el código ni en los chips de memoria. Ahora la optimización está en la mano de obra. Antes era posible hacer un videojuego que corriera en un hardware insignificante porque quienes lo programaban eran los mejores y los mejores eran difíciles de encontrar. Hoy en cambio el hardware es de lo mejor y los desarrolladores son los insignificantes. Hoy cualquiera que tenga dinero e iniciativa puede contratar por migajas y durante pocos meses a gente que puede sacar productos en poco tiempo y esos productos ya no necesitan ser eficientes porque “al hardware le sobra poder”. Los desarrolladores de videojuegos comienzan pasar de ser rockstars a esclavos sacrificables a los que se les puede hacer trabajar tiempo extra sin paga y echar a la calle cuando el proyecto termina. Algo así como pasó con los animadores japoneses que trabajan todo el dia y ganan menos que un recolector de basura.

No me gusta esta nueva forma de trabajar que tienen las nuevas empresas grandes en las que se contrata a cientos o miles de artistas o desarrolladores y se les pone a hacer tareas insignificantes e intercambiables. Hoy a lo más que puede aspirar alguien es a ser recordado como “el dibujante de X superhéroe entre los años tal y tal” o poder ir al cine y decirle a quien les acompañe: “yo participé en los efectos de esa película animada en 3D. ¡Hice el rigging del codo de ese extra que se ve a lo lejos!”. Tal vez por eso esta vez en el Pasillo de los Perdedores pude encontrarme con (por lo menos) 20 artistas que trabajan para Marvel, un estudio completo que diseño personajes para Zynga, 3 prestigiosas escuelas de efectos especiales reconocidas internacionalmente y hasta un director de animación que trabajó para Cartoon Network y que actualmente está participando en cierto largometraje francés que de este lado del mundo solo es conocido por sus parodias para adultos hechas en Flash (y que tiene la misma calidad que la original). Me pregunto como era posible que gente tan importante estuviera en el Pasillo de los Perdedores mientras que en los espacios dedicados a los invitados de honor lo más que había eran algunos actores de voz casi retirados, extras de programas pasados de moda y olvidados hace años y un montón de attent… digo, ehem… gente disfrazada.

Con eso en mente salí del centro de convenciones mientras pensaba que si yo hubiera nacido 20 años después seguramente nunca hubiera sabido de la existencia de la programación en ensamblador y probablemente ni siquiera me hubiera dedicado a programar. Tal vez hubiera hecho lo que muchos de los que van a esos eventos hacen y decidiera estudiar algo relacionado con efectos especiales y manejo de software 3D con la esperanza de algún dia poder hacer mi propio videojuego. Pero también, cuantos de esos geeks a los que les interesan estos temas nunca sabrán el verdadero nivel de programación que hay tras un buen juego 3D y por lo tanto nunca se convertirán en programadores pudiendo serlo. Me apena pensar que cuando empecé a programar uno podía llegar a hacerse famoso con un videojuego programado por él y sus amigos en su propia casa y ahora la maquinaria está tan automatizada que a lo más que uno puede aspirar es a que su trabajo llame la atención de entre otros cientos de trabajos sobre una mesa de un reclutador y que nos pongan a hacer tareas sencillas como colorear digitalmente, limpiar dibujos a lapiz o portear rutinas de código ya hechas por otros programadores. Si en aquella época uno soñaba con hacerse famoso y vender piezas de arte original ahora lo más que puede uno producir y vender es tan insignificante como la celda de animación de “un brazo dibujado por nadie” que compró Bart Simpson. Ya no hay espacio para la grandeza.

julio 19, 2016 Posted by | Uncategorized | , | 1 comentario

Todos los Videojuegos son Wargames parte 3

–Como la computadora puede simular y jugar un juego de mesa–

Tercera parte de la serie sobre la relación que existe entre los antiguos Wargames y los actuales videojuegos. En las dos primeras partes vimos como un wargame de hace 100 años puede ser definido por una computadora y en la segunda el como una situación tan sencilla como la de un ataque a un enemigo virtual que dura menos de un segundo requiere tantas comparaciones y validaciones numéricas. En esta tercera entrada veremos que todos los videojuegos tienen algo de wargame.Repasemos algunos elementos comunes a todos los wargames.

Miniaturas o Fichas


Las miniaturas con las que se juegan los wargames tales como los soldados, tanques, obstáculos naturales, bases y cualquier cosa que tome parte en la acción también tiene su lugar en los videojuegos y es con lo primero que los jugadores interactuan en un videojuego. Lo que cuando aprendí a programar se le llamaban “Datos”, cuando llegó la H.Industria llamaron “Assets” y de un tiempo acá oigo que nombran como “Props”. Las Miniaturas son para la computadora conjuntos de datos que la computadora usa para representar cosas en la pantalla: Monstruos, héroes, armas, items, obstáculos, escenas y cualquier otra cosa con la que el jugador interactue en pantalla. De hecho los datos o assets del juego es lo que el jugador ve. Incluso si se tratara de un videojuego en modo texto las letras y números que muestran la información en pantalla cuentan como assets. Una cosa interesante es que la mayoría de los datos que forman estas miniaturas virtuales son inútiles para la computadora si no tienen información que sea usada por las reglas del juego. ¿Pero qué sentido tendría jugar un videojuego en el que no sabemos qué está pasando?

Turnos

Tal vez lo más elemental de un wargame y un videojuego es el concepto de turno. En cada turno uno de los jugadores puede hacer algo, ya sea un movimiento, un ataque o puede usarse como unidad de tiempo para medir la duración de acontecimientos. Pues bien. Todos los videojuegos desde los tediosos RPG por turnos hasta las aventuras 3D de acción rápida multijugador usan turnos. El corazón de un videojuego se llama Gameloop y se trata de un ciclo que se repite eternamente o hasta que ocurra algo que haga que el juego se termine. En cada ciclo se leen las entradas del usuario, se actualiza la acción y se despliega la escena. Estos turnos pueden durar tan poco como unos pocos milisegundos para los juegos más rápidos. Ese turno es clave para la interacción y si no lo tuviéramos no sería posible que el jugador pudiera controlar nada. Para ponerlo de modo más sencillo pensemos en un menú de opciones en el que nos movemos por las opciones con las flechas y seleccionamos una con un botón. En cada ciclo del gameloop se lee si presionamos una flecha y si lo hacemos la opcion cambiará, si no presionamos la opción permanecerá igual. Y si se detecta que presionamos el botón la opción seleccionada en ese momento se tomará como entrada. Y para distinguir entre una opción y otra puede ser algo tan sencillo como incrementar o decrementar un contador cada vez que presionamos una flecha. Volviendo a los turnos. En lo que conocemos como juego por turnos el turno no termina hasta que el jugador ha hecho su acción y en los juegos rápidos el turno termina cuando al jugador se le acaba el tiempo. Como ya se dijo, si los turnos son lo bastante rápidos se da la impresión de que todo se mueve a la vez.

Tablero

Los wargames se juegan en una mesa sobre la que se acomodan las miniaturas y los videojuegos aunque no cuentan con mesa si que usan algún tipo de universo en el que ocurre la acción. Para los juegos de una sola pantalla ese universo puede ser el monitor pero la mayoría de los juegos actuales usan el monitor como ventana para contemplar una pequeña parte de un universo más grande. Para ubicar algo en ese universo usamos coordenadas tridimensionales XYZ. Ese campo de juego tiene límites de modo que en todo momento las coordenadas siempre están dentro de un rango de valores. Para ejemplificar pensemos en un tablero de ajedrez de 8 cuadrados por lado y un total de 64 casillas. Podríamos tomar como coordenadas x,y cualquiera de estas casillas e ignorar la coordenada z. La computadora necesita controlar ese campo de juego para saber en todo momento donde están los elementos del juego y como interactuan entre ellos.

Varas y plantillas

Los wargames usan varas de longitud determinada para medir distancias y plantillas de cartón o plástico para ver si dos miniaturas están a menos de cierta distancia una de otra o cuales miniaturas están dentro de un área determinada. La computadora usa algoritmos geométricos para medir distancias o ver si alguna de sus miniaturas virtuales están dentro de una cierta área. Existen muchos diferentes algoritmos que pueden programarse en una computadora que funcionan como las varas y las plantillas. Pues aunque un humano puede orientarse en el plano o en el espacio de manera natural y saber donde están las cosas la computadora no puede. Y por eso recurre a esos algortmos geométricos y por supuesto a la Geometría Analítica que en lugar de regla y compás usa números con los que puede trabajar mejor la computadora.

Dados

En los wargames y otros muchos juegos de mesa se usan dados. El dado de 6 caras es el más común pero en algunos juegos se usan dados de 4, 10 o hasta 100 caras. Estos dados se usan para darle al juego algo de emoción y simular eventos que no están del todo bajo el control del usuario. La computadora tiene sus propios dados en forma de algoritmos que generar un número dentro de un cierto rango de acuerdo con alguna regla. Y si bien existen algoritmos para generar números matemáticamente aleatorios usables en cálculos científicos hay otras formas de conseguir números más o menos aleatorios sin tantos problemas como el tener un contador que cuente de manera indefinida entre el rango buscado y que cuando el jugador apriete el botón de acción se tome un número de ese contador. Si el jugador nunca ve ese contador y no sabe que él mismo dio la orden de leerlo al presionar el botón para él será una acción aleatoria. Algo similar puede hacerse con los relojes internos del sistema.

Tablas de atributos de personajes

Esto no tengo que explicarlo. Los wargames tienen tablas que definen las capacidades de los personajes en forma numérica. Esos mismos números pueden guardarse en la memoria de la computadora y ser leidos según vaya desarrollándose la partida.

Todo tipo de reglas de juego

Los wargames se juegan siguiendo una serie de reglas que deciden todo lo que puede hacerse en el juego y como definir los resultados de cada situación. Esas mismas reglas se pueden programar en los videojuegos. De hecho si al código de un videojuego le quitamos todo lo relacionado con interacción con el usuario, despliegue de la escena y control del hardware lo que nos queda es el mismo conjunto de reglas del manual del wargame pero escritas en una forma que la computadora pueda leer y ejecutar.

Ahora veamos muy rápido como un juego clásico que uno creería que nada tiene que ver con los wargames tiene todos estos elementos. Me ahorro lo de los turnos porque todo código interactivo los tiene. Y aunque no lo crean voy a hablar del Tetris.

Tetris.- En Tetris el tablero es una cuadrícula por la que se mueven las piezas y se puede programar como un array de enteros donde el contenido de cada elemento del array indica lo que hay en esa posición. Ya sea que esté vacio o que haya algo ahí. Las miniaturas son por supuesto las piezas pero si miramos de cerca las 7 formas posibles se forman por 4 cuadrados pequeños que miden exactamente lo mismo que los cuadrados de la cuadrícula que forma el tablero de juego. Por lo que cada pieza puede caber en un rectángulo de 4 por 2. Las varas de medir y plantillas en este caso son los propios cuadros del tablero de juego de modo que cuando uno de los subcuadros que forman las piezas detecta que en la posición inferior hay otro cuadro ocupado automáticamente la pieza se pega a la estructura y una nueva pieza cae. Los dados entran en la parte que decide cual pieza sigue. En Tetris las piezas no caen de modo arbitrario. Piezas como la barra larga o el cudrado aparecen menos veces que las piezas T, L o Z y pasado cierto nivel lo único que cae son piezas Z que son particularmente difíciles de acomodar. Y en cuanto a las reglas estas son simples. Se empieza con el tablero vacio y van cayendo piezas de acuerdo a la regla ya mencionada. Cada que una pieza aparece pasan una cierta cantidad de turnos antes de que caiga un paso a la vez y esa cantidad de turnos de espera será menor conforme la dificultad aumente. Si alguno de los cuadros que componen la pieza no puede seguir cayendo porque algo impide su caida (o avance por el terrreno según un wargame) la pieza se integra a lo ya caido y aparece otra nueva pieza. Si una o más lineas horizontales se completan estas desaparecen y todos los cuadros ya caidos se deslizan abajo tantas lineas como se hayan completado y se ganan puntos. El juego se termina cuando se ha completado el límite de lineas o cuando ya no hay espacio en el tablero para acomodar más piezas.

En la siguiente entrada hablaré sobre como estos elementos se repiten en otros tipos de juegos. Aunque algunos juegos puede parecer que les falta alguno de estos elementos la verdad es que si los tienen. Pero eso es algo que como jugadores tal vez nunca hayan notado.

junio 26, 2016 Posted by | Uncategorized | , | Deja un comentario

¿Debe la Universidad apoyar al desarrollo de videojuegos? 2

–Parte 2: La Vereda y el Rompecabezas–

Esta es la segunda parte de la serie sobre universidad y desarrollo de videojuegos. En la primera entrada les comenté que aunque en la universidad hay recursos y gente talentosa cuyas habilidades son aplicables a los juegos eso no significa que debe de ponerse a hacerlos ni mucho menos dejar preparados a sus egresados para que cualquiera que quiera iniciar una empresa de la nada los ponga a hacer uno. En esta parte voy a hablarles no solo sobre como encontrar esos recursos escondidos para hacer videojuegos dentro de la universidad sino incluso darles un par de tips para que no la pasen tan mal en sus años de estudiante. Sobre todo si ustedes se consideran auténticos gamers y geeks.

Primero hay que dejar clara una cosa. Cursar una carrera universitaria es muy parecido a caminar por una vereda en el bosque. La vereda o camino tiene inicio y fin y caminar por ella requiere esfuerzo. También hay que llegar a ciertos puntos antes de cierto tiempo. Un buen estudiante se mantiene en esa vereda y dedica todo su tiempo y esfuerzo en llegar al final sin salirse de ella. Al final del camino si es que logra llegar consigue terminar sus estudios y se va a hacer su vida sin que nadie pueda reclamarle nada. Pues bien, estos son los típicos y respetables graduados de los que hablé brevemente la entrada anterior. Respetables profesionistas dedicados a sus estudios que no tienen idea de lo que es hacer videojuegos. Ahora veamos el otro tipo de estudiante que al graduarse puede ser de mas utilidad que este.

Y aquí es donde empieza lo interesante: Los conocimientos valiosos. En la universidad hay un sinfin de recursos valiosos para cualquier joven aspirante a game developer pero no es obligatorio encontrarlos para graduarse. Casi como lo que los gamers considerarían misiones secundarias. Estos objetivos secundarios son muchos y muy pequeños. Y para lograr algo apreciable es necesario encontrarlos y juntarlos cual si fueran piezas de un rompecabezas (Puzzle). Unas parecen insignificantes y otras dan la impresión de no encajar en ningún lado hasta que encontramos otras que les dan sentido. Si están en una universidad considerada normal y quieren aprender a hacer juegos deben de ser capaces de encontrar estas piezas de rompecabezas y armarlo antes de que su carrera universitaria termine. La pregunta es ¿Donde están escondidas esas piezas del rompecabezas?

Las piezas del rompecabezas están en todas partes. Pueden ser libros abandonados en la biblioteca. Maestros que tienen conocimientos que no necesariamente verás en clase y otros alumnos geeks que también se interesarían por ayudarte. La universidad es un bosque entero, cada facultad una sección diferente con su propia fauna y las carreras son esas veredas que hay que cruzar caminando para llegar al final. Y las piezas del rompecabezas que necesitas armar están en todas partes. Algunas incluso pueden estar tan cerca de ti que ni siquiera te des cuenta cuando caminas sobre ellas. Otras están apenas a la orilla del camino, otras perdidas en caminos que no son el tuyo y otras mas en sitios inaccesibles donde los caminos no llegan. Pero ir por ellas es peligroso. Si abandonas la vereda por mucho tiempo descuidarás tus estudios y correrás el riesgo de reprobar materias y posiblemente abandonar la universidad. Debes de ser lo suficentemente habil para obtener esos conocimientos que se supone no te pertenecen y seguir con tu plan de estudios oficial.

Las piezas del rompecabezas cuya obtención menos interfiere con tus estudios son aquellas que pertenecen a tu propia carrera. Por ejemplo muchos estudiantes de carreras de Ingenieré en Computación se quejan de que los primeros semestres ven demasiadas matemáticas. Yo por ejmplo en primer semestre llevé Geometría analítica, cálculo diferencial, álgebra, física newtoniana y solo una materia muy básica de conceptos de computación donde ni siquiera utilizamos un compilador. En apariencia nada de eso servía para hacer videojuegos. Pero no era así. La geometría analítica sirve para determinar contactos en el espacio y programar superficies en 3D. El cálculo diferencial se aplica en animación al igual que la física newtoniana, los sencillos despejes algebráicos y las inducciones permitían reducir la cantidad de operaciones y comparaciones dentro del código del juego y la materia que al parecer mas me serviría apenas si me sirvió para saber la diferencia entre un compilador y un intérprete. Lo interesante es que toda la utilidad práctica de esas materias la descubrí mucho tiempo después de cursarlas. Aunque en otros casos investigaciones propias me llevaron a leer libros de materias de semestres mas avanzados desde antes. Como cuando llevé matrices y le mostré al maestro que el procedimiento para calcular bases ortonormales que repasábamos ese dia en clase era el mismo que el que se usaba en programación gráfica para cámaras y transformaciones de vista. Y para confirmarlo mostré ambos libros para que viera que el problema era el mismo. La pregunta es: ¿Cuantos de mis otros compañeros de clase imaginaron que lo que estaban viendo ese dia servía para programar videojuegos? Y mas interesante. ¿Alguno de ellos salió de la carrera, entró a La Industria y aplicó esos mismos conocimientos para hacer algún juego? ¿Tendría al menos idea de que había una relación entre videojuegos y matemáticas?

Aventurándose fuera de la vereda

Contaré ahora una breve anécdota: Estaba en la biblioteca junto con algunos de mis secuaces investigando el algoritmo de rasterizado y texturizado de triángulos. En eso se nos acercó un compañero de clase y asustado nos preguntó si estábamos estudiando para un examen. Cuando le dijimos que esto lo estábamos haciendo por cuenta propia nos miró con desprecio y se fue caminando despacio y hacia atrás. Esa fue una pieza de rompecabezas que no estaba dentro del camino pero el encontrarnos en ambiente universitario nos puso cerca de donde estaba. Los libros pertenecian a la universidad aunque no fueran de nuestra materia. Otro ejemplo que recuerdo era sobre la biblioteca de la facultad de ingeniería, aunque yo estaba en matemáticas en la biblioteca de la facultad vecina tenían varios libros olvidados pero que me resultaron muy valiosos. Como los escritos por Foley, Hearn, Tremblay, un hindú que hablaba de compiladores, un griego que le sabía al C y al ASM y otros mas que en su momento me ayudaron en mis aventuras pero que al parecer yo era el único que leia. No tenía la obligación de leerlos y falté a mas de una clase con tal de sacarles todo su contenido. Hacer esto me provocaba una emoción muy extraña. Por un momento me emocionaba enormemente aprender cosas, pero a la vez eran cosas que a nadie mas parecía interesarles. Con el tiempo no se si aprendí a disimular mi entusiasmo o simplemente me fui amargando al ver que a nadie mas que a mi parecían importarle tanto esas cosas.

No puedo terminar esta entrada sin decirles al menos como identificar esas piezas del rompecabezas cuando estén cerca de ellas. La mayor parte del tiempo no sabrán identificarlas aunque estén frente a ellas. Algunas se encuentran en libros abandonados en la biblioteca. Otras en conversaciones casuales que escuchen al pasar. A veces hay eventos o simples pláticas de grupos donde pueden obtener información. Hay maestros que dominan temas que pueden serles útiles y que ellos mismos no saben que a ustedes les pueden ayudar. Lo mas importante es que estas piezas son muy concretas y objetivas. A veces son simples pistas como por ejemplo que necesitan tal o cual hardware o conocimiento para hacer algo. Otras son físicas como libros, manuales o hardware no muy comercial. Otras son información pura como instrucciones ejecutables, código fuente o la sintaxis de algún lenguaje de programación. Lo importante es que una pieza de ese enorme rompecabezas es lo suficientemente pequeña para poder ser comprendida en uno o dos dias. Si no entienden como hacer una cosa o encuentran que otra que hallaron parece inutil seguramente es porque les falta una pieza del rompecabezas que una a ambas. Es muy común en programación en encontrarse con códigos que entienden perfectamente pero que son incapaces de compilar o tener entornos de desarrollo que no tienen idea de como funcionan. Solo cuando encuentran que uno pega con el otro es cuando descubren la relación entre ambos y logran unir 2 o mas piezas del rompecabezas.

¿Y qué pasa si ya se graduaron, no han entrado aún a la universidad o en casos extremos salieran o no entraran nunca? Aunque no tengan una vereda que recorrer las piezas del rompecabezas siguen ocultas en los mismos lugares. Pueden comprar libros o leerlos en bibliotecas públicas, buscar información en internet o aprender de otros que tengan el conocimiento que quieren. La búsqueda del rompecabezas nunca termina y mientras mas conocimientos adquieren mas partes de este misterio prodrán resolver. Ese es el verdadero valor de estar en una universidad o cualquier otro ambiente intelectual. Poder obtener piezas del rompecabezas para hacer no solo juegos sino cualquier otra cosa que ustedes quieran hacer en sus respectivas aventuras. Y ahora los dejo porque tengo una buena cantidad de piezas de rompecabezas que tengo que encontrar y unir para resolver mis propios misterios.

diciembre 20, 2012 Posted by | Uncategorized | , , | 3 comentarios

¿Debe la Universidad apoyar al desarrollo de videojuegos? 1

–Parte 1: ¿Donde Están los Game Develpers?–

Esta vez voy a escribir una nota bastante infame, tendenciosa y dura cuya única defensa es que se trata algo que yo personalmente viví. Por lo que nadie va a poder venirme con el argumento de que no se de lo que estoy hablando. Echa esta advertencia me dispongo a dar respuesta a una interrogante que los involucrados en el desarrollo de videojuegos en México y latinoamérica se han hecho una y otra vez. La pregunta es: ¿Qué puede hacer la academia para impulsar el desarrollo de videojuegos en el pais? Mi respuesta es sencilla y tajante y la explicaré a lo largo de esta serie y es la siguiente:


La universidad debe de hacerse a un lado y no intervenir de modo directo en el desarrollo de videojuegos

Ahora que tanto los miembros mas jóvenes de la academia y los padrinos mas adinerados de la industria están con cara de WTF les hablaré un poco sobre mi. Yo también fui un adolescente geek que entró a una carrera universitaria relacionada con computadoras con la esperanza de aprender todo lo necesario para hacer videojuegos, o cuando menos la parte de la programación. Primero estudié en una universidad de la que tuve que huir por las razones que ya he mencionado muchas veces aquí y luego comencé y terminé la misma carrera desde cero en otra donde nadie me conocía. Y aunque no puedo decir que nada de lo que viví en ninguna de esas dos escuelas me fuera de utilidad les aseguro que cualquiera de esas cosas puede obtenerse sin necesidad de matricularse en ninguna escuela. Y aunque sigo negando que cursar una carrera universitaria de una ventaja *real* a alguien que quiere programar juegos años después de lo ocurrido comprendo el porqué. Y ese porqué es de lo que voy a hablarles a lo largo de esta serie.

Primero, para los lectores que no son mexicanos o no han leido mi serie de entradas donde hablo sobre como los mexicanos ven los estudios superiores tienen que saber que en este pais los habitantes entran a la universidad por un sinfin de motivos entre los cuales no se encuentra aprender. Con la honrosa excepción de unos muy contados intelectuales con vocación científica que quieren dedicarse a dar clases y escribir publicaciones de ciencia por el resto de su vida la inmensa mayoría de los que se inscriben en una universidad lo hacen por motivos meramente sociales y económicos que van desde los que creen que el título universitario es una especie de permiso del gobierno para ejecer cualquier tipo de actividad económica (y no solo las muy contadas que si regula) hasta los que creen que terminar una carrera convierte al graduado en un tipo especial de ser humano capaz de resolver todos los problemas con su sola presencia. Pasando por aquellas familias pobres que intentan conseguir becas para sus hijos en universidades costosas para que se relacionen con los hijos de los poderosos. Y si bien en otras industrias donde ganarse la vida solo es cosa de hacer esfuerzos físicos y saber invertir dinero; en el desarrollo de videojuegos es del todo diferente aunque todos sin importar su procedencia se topan con los mismos obstáculos a la hora de sentarse frente a las computadoras.

El tema sobre como las computadoras ven a los humanos ya lo traté en otra entrada. En resumen a la computadora no le importa donde estudiaste o cuanto dinero tengas. Si no sabes programar no tendrán piedad contigo. Combinando estos dos aspectos obtenemos como resultado grupos que creen que para hacer un juego solo necesitan dinero del gobierno y contratar a unos pocos estudiantes recién egresados y que estos van a hacerles un videojuego de principio a fin en el tiempo acordado y sin dificultades. Solo para darse cuenta de que a medida que se acerca la fecha límite que el juego no sale. Y lo peor es cuando ese plazo termina y ya no tienen para seguir pagando salarios y en el mejor de los casos pierden todo su dinero en algo que no llevó a nada y en el peor tener que responder con sus propios bienes a quién les prestó el dinero o con quienes cerraron el trato para terminar el juego. Conforme ese fin llega se les escucha quejarse de que la gente que contrataron no está lo suficientemente preparada para hacer videojuegos y van y le reclaman a la Universidad. Quién si es Universidad con mayúscula los recibirá poniéndoles esta cara:

Tras las quiebras y diversos fracasos. Los líderes locales de La Industria culpan a las universidades de no preparar lo suficientemente bien a sus egresados e incluso intentan negociar con estas instituciones modificar a su conveniencia los planes de estudio y sacar adelante proyectos en conjunto para poder beneficiarse de su prestigio. La pregunta es ¿A la Universidad le debe de importar el desarrollo de videojuegos?

Yo también estuve ahí. Primero me enojaba que mis maestros de ingeniería en computación no sabian programar y lo único que les importaba era estar al tanto de que ERP se ponía de moda en las empresas locales en esa semana. Me burlaba constantemente de esos maestros y de los alumnos que presumian de ayudarles a administrar bases de datos en esas mismas empresas mientras que maestros de otras áreas permanecían en su mundo sin meterse en problemas con nada ni nadie. Es mas. Me atrevo a decir que un estudiante puede entrar a una carrera como ingeniería en computación y graduarse con honores y aún así no saber absolutamente nada de programación de videojuegos al entrar a una empresa. Pero esto no sucede porque la universidad no sepa enseñar. Ese estudiante puede ser un excelente maestro de alumnos de primeros semestres e incluso podría estudiar alguna especialización mas orientada a la ciencia pero aún cuando consiga un Ph.D (conozco un par de ejemplos) seguiría siendo por completo inutil a la hora de sentarse a programar un videojuego.

¿Pero es acaso que en ese enorme y venerable templo del conocimiento que es la universidad no hay nada ni nadie capaz de ayudar al desarrollo de videojuegos? La respuesta es al mismo tiempo Si y No. Por un lado no hay una sola carrera que sea aplicable a hacer juegos (como en realidad ninguna carrera es 100% aplicable a un único ramo de ninguna industria) pero al mismo tiempo hay muchas fuentes de información valiosa ocultas en el campus y que hay que descubrir. Como leyeron en el párrafo anterior. Pueden cursar una carrera completa y salir siendo unos inútiles para hacer juegos pero si se salen un poco de ese camino trazado que es su carrera podrán encontrar conocimientos verdaderamente valiosos para hacer juegos así como gente de los mas diversa deseosa de ayudarlos en su aventura. Pero al mismo tiempo si se apartan demasiado de ese camino corren el riesgo de perderse en el camino y descuidar sus estudios.

Así que por un lado tenemos a los empresarios o padrinos que no tienen la garantía de que sus empleados van a poder hacer juegos solo por haber terminado la universidad y por el otro tenemos a los estudiantes que no saben si van a poder aprender todo lo que necesitan antes de terminar la carrera. Así que en esta serie que va a ser muy corta solo se hablará de estos dos lados de lo que para algunos parece ser un problema pero que como veremos no lo es. Solo es la forma correcta como debe de operar una verdadera universidad cuyo trabajo es difundir y hacer progresar la ciencia y no servir de oficina de recursos humanos o peor aún, como certificador de la honestidad y pureza espiritual de las personas como algunos pseudoempresarios que no saben nada de computadoras se empeñan en verla.

En la siguiente entrada veremos como la vida del estudiante que quiere dedicarse a hacer videojuegos se enfrenta a dificultades a las que no se enfrentan los estudiantes considerados normales. Les recomiendo que los lean sobre todo si todavía no entran a la universidad o si salieron y piensan regresar dentro de poco tiempo.

diciembre 13, 2012 Posted by | Uncategorized | , , | 1 comentario

Como Equipar tu Centro de Operaciones parte 1

–Configuración Básica: La Trinchera–

Iba a contar una de mis viejas anécdotas pero mejor se las ahorro. Esta entrada va a ser extensa y detallada y puede que necesite mas de una entrada para cubrir el tema. En fin, de lo que les voy a hablar ahora es sobre como construir un centro de operaciones funcional para programadores independientes y demás aspirantes a científicos locos que no tengan recursos para montar grandes instalaciones.

Lo primero que hay que dejar en claro son las condiciones de trabajo. Como me imagino que ustedes son vagos cuyo único espacio disponible es el dormitorio de la casa de sus familiares (no me importa si es de sus padres o sus parejas en turno) o en el mejor de los casos un cuarto alquilado en algún lugar del que no quieran dar muchos detalles. En cuanto a servicios básicos por lo menos tendrá energía electrica y un baño lo suficientemente cercano para poder llegar caminando. Contar con acceso a internet es util pero no del todo indispensable. Y en cuanto a clima basta con tener acceso por lo menos a una ventana y en temperaturas extremas al menos un pequeño abanico (mínimo 10″ de diámetro) para enfriar las computadoras y sacar el aire respirado.

En cuanto a las dimensiones el local debe de medir por lo menos 2 metros por lado o lo suficiente para que las personas que van a trabajar ahí puedan acostarse en el suelo y estirar brazos y piernas sin sentirse incómodos. Como deduzco que la mayoría de ustedes son Forever Alone y si no lo son no se sentirán incómodos con la regla anterior pasemos al siguiente punto.

La altura.- El lugar de trabajo debe de tener un techo lo suficientemente alto para que no puedan alcanzarlo con las manos estando de pie. La altura ideal es lo bastante alto como para alcanzarlo con una miniescalera plegable de dos escalones. Ese espacio alto es muy valioso y casi siempre se desaprovecha. Ahora pasemos a las paredes.

Las paredes.- Deben de contar con contactos eléctricos polarizados y aterrizados (de 3 patas como les dicen en México) para que puedan conectar cualquier aparato eléctrico moderno. Las tomas de corriente deben de ser las suficientes y estar lo bastante cerca unas de otras como para no tener que usar extensiones que atraviesen el suelo y estorben. Las paredes deben de ser lo bastante fuertes para poder perforarse y sostener algunas estructuras pequeñas y por supuesto deben de contar con al menos una puerta para tener acceso y una ventana que permita el paso del aire y la luz natural.

Estas son las condiciones mínimas para permitirle trabajar al menos a una persona. Si cuentan con un lugar mas grande pueden aprovecharlo todo o usar solo una parte pero es importante que ese espacio lo usen solo como su centro de operaciones y nada mas. Ahora pasemos con el mobiliario básico.

Antes de entrar al mobiliario básico es importante dejar bien clara una cosa: En su centro de operaciones deben de ser capaces de trabajar de pie, sentados y acostados y en situaciones muy desesperadas también debe de ser posible dormir por una o dos noches. El estar de pie les permitirá moverse por las instalaciones y usarlas de manera eficiente y casi no ocuparán espacio. Cuando tengan que estar quietos por espacios entre 30 minutos y 3 horas pueden usar una silla con respaldo como cuando ven un video o usan algún tipo de interfaz manual pequeña como un pad de juegos o una tablet. Y si van a hacer alguna actividad que tome mas de 3 horas seguidas como por ejemplo leer, descansar o incluso dormir lo mejor es acostarse. Por lo que necesitarán 3 tipos de sillas y una mesa pequeña. Para hacer esto un poco mas manejable voy a motrar varios niveles en los que puede ser equipado un centro de operaciones (que voy a abreviar como HQ de Head Quarter para ahorrar espacio). Cada nivel incluye todo el equipo de los niveles mas bajos.


HQ nivel básico: Trinchera

Para los que no juegan suficientes FPS de guerra, una trinchera era un pozo mas o menos grande donde los soldados de la Primera Guerra Mundial podían protegerse de las balas y defenderse de cualquiera que intentara acercárse por tierra. El centro de operaciones modelo trinchera es el mas básico para poder trabajar y cuenta con el equipo mínimo suficiente para leer, investigar y hacer proyectos pequeños. Tiene todo que un estudiante de nivel universidad que no requiera herramientas exóticas puede necesitar durante su carrera. El único inconveniente de la trinchera es que es necesario contar con una computadora tipo laptop o tablet. Si cuentan con un equipo tipo Desktop van a necesitar por lo menos el modelo Bunker. Lo mejor de la trinchera es que al igual que las trincheras de verdad que pueden ser excavadas con rapidez y estar listas para la batalla en cualquier lugar y momento este modelo puede armarse y desarmarse en cualquier lugar que cuente con los requisitos básicos como el rincón de una recámara, un cuarto abandonado o una oficina improvisada. Ahora vamos con el equipo.

Equipo de la Trinchera

Piso de espuma.- Existen mosaicos de un material elástico parecido al plástico que son lo bastante suaves para sentarse o acostarse y a la vez lo bastante firmes y resistentes para caminar o pararse sobre ellos. Cubren un área muy buena y son mas baratos que una silla. Son buenos para hacer trabajos acostado o sentado y pueden plegarse para limpiar el suelo. Pueden conseguirlos en tiendas de artículos para casas, tiendas de deportes o si son padres de familia en tiendas de artículos para niños.

Garrafón de Agua.- Existe un proverbio español que no recuerdo palabra por palabra pero que dice que si no dispones de lo necesario para recuperar y desalojar los l\iquidos de tu cuerpo no puedes trabajar ni descansar. Un garrafón de agua a la mano es vital para mantener un mínimo de salud.

Pizarrón pequeño.- Esta es una de las herramientas mas básicas de un desarrollador después de las computadoras. Programar no es solo estar sentado oprimiendo teclas. Hay que pararse para revisar algoritmos, planear estructuras de datos, hacer grafos o ver como se vería un personaje que se nos acaba de ocurrir. Un pizarrón de 60 por 90 centímetros que puede ser de gis (tiza) de cal o para uso de plumones con borrado en seco es suficiente. Pueden encontrar buenos pizarrones en tiendas de artículos escolares especializados y de oficina. Si no encuentran un pizarrón pueden construir uno usando placas de policarbonato, acrílico o vidrio. Los marcadores para borrado en seco trabajan bien en este tipo de materiales. Si solo encuentran estas placas en color transparente pinten el lado opuesto (el que queda hacia la pared) de blanco y usen el lado libre de pintura para escribir. Si van a instalar el pizarrón en la pared pónganlo a una altura en la que lo puedan usar estando de pie. Así será mas facil trabajar.

Banco de dibujante.- En un centro de operaciones es necesario estar de pie la mayor parte del tiempo para no perder movilidad. Un banco alto y acojinado como los usados en dibujo les permitirá estar en una posición tal que conservarán la capacidad de movimiento de estar de pie pero descansarán casi tan bien como al estar sentados. Pueden conseguir buenos bancos en tiendas de suministros para dibujantes o incluso en equipos para restaurantes y bares. Solo asegúrense de que al usarlos sus brazos les quedan a la misma altura que si estuvieran de pie y que el cojín les permita estar sentados sin causarles daños a la salud.

Mesa para laptop.- Estas mesas son sorpendentemente útiles incluso si no cuentan con una computadora tipo laptop. Si la tienen pueden usarla como indican las instrucciones y si no de todos modos sirven para acomodar todo tipo de equipo como teclados grandes, tabletas gráficas, joysticks, gamepads y si son lo bastante marranos hasta pueden comer en ellas. Su altura e inclinación ajustables las hacen perfectas para trabajar de pie o sentado (incluso en el piso) y las ruedas les permiten moverlas o guardarlas cuando no las estan usando sin necesidad de quitarles el equipo. Pueden conseguir este tipo de mesas en lugares donde vendan mobiliario de oficina. Incluso existe una mesa muy parecida usada en los hospitales. Aunque es un poco mas grande es demasiado cara. Pero si les ofrecen una a buen precio no duden en aceptarla.

Tambo de 20 litros.- Los tambos usados para distribuir pintura y productos químicos para construcción son también muy útiles en la oficina de un desarrollador sin recursos. Ocupan poco espacio, son muy resistentes, pueden sentarse en ellos cual si fuesen bancos o pararse para alcanzar cosas altas y su interior está lo bastante bien protegido como para guardar respaldos en discos ópticos o cables de computadoras durante años. Otro uso que pueden tener es el de soportar el garrafón de agua para que tenga una mejor altura y no dejarlo directo en el piso. Estos tambos junto con sus tapas los pueden conseguir en las ferreterías y las tiendas de artículos de construcción o si son vagos como yo de seguro encontrarán uno en cualquier depósito de basura o construcción descuidada. Si lo compran asegúrense que no se rompa cuando se paren sobre él. Sobre todo tengan cuidado con las tapas porque algunos de los botes que venden como “multiusos” no son tan fuertes como los usados para envasar pintura.

Regulador de voltaje.- Si tienen un mínimo de aprecio por cualquier aparato electrónico deben siempre de conectarlo a un regulador de voltaje de buena calidad. En México y muy probablemente en el resto de latinoamérica la corriente eléctrica tiene variaciones de mas menos 10% en condiciones normales. Esto es lo bastante fuerte como para quemar el sistema eléctrico de un abanico fabricado en Estados Unidos y no les digo lo que puede hacerle a una computadora. No se crean ese mito que los adaptadores AC de las laptops protegen contra variaciones de voltaje porque es mentira. Yo llevo 5 años con la misma laptop y 12 años con el mismo abanico y ambos siguen funcionando tan bien como cuando los compré. Algunos consejos para elegir un buen regulador son buscar uno que tenga una capacidad mínima de 1000 volts-ampere (no confundir con Watts), que cuente con supresión de picos (surge supressor) y que tenga por lo menos 6 contactos polarizados y aterrizados lo bastante separados entre si para conectar muchos dispositivos con su respectivo adaptador AC. Y no se confundan, por alguna razón hay regiones en latinoamérica en las que los vendedores son incapaces de distinguir entre un verdadero sistema de supresión de picos y un insignificante multicontacto que no cuente con la mas mínima protección electrónica aparte del aislante del cable de corriente. Los reguladores pueden parecer caros pero al menos pueden estar seguros de que sus equipos van a trabajar con un m\inimo de fiabilidad y que esta ser\a seguramente el equipo electr\onico que mas tiempo le tomar\a quedar obsoleto. Algunos de mis reguladores tienen mas de 15 a\nos y siguen en funciones.

La Caja del Caos.- Este es el último de los accesorios para equipar el centro de operaciones modelo Trinchera. La Caja del Caos puede ser una simple caja de cartón grande aunque lo mejor es que sea una de esas cajas transparentes de plástico y con tapa que usan las amas de casa para guardar ropa y sábanas. La regla para usar esta caja es simple. Cualquier cosa que no estén usando en ese momento va directo a la Caja del Caos. Así como cualquier cosa fuera de lugar o que no tenga una buena razón para estar donde está. Por ejemplo cables, memorias extraibles, papeles, accesorios y casi cualquier cosa que puedan sujetar con una sola mano. En caso de cosas frágiles como adaptadores de corriente o gamepads análogos guárdenlos en cajas mas pequeñas antes de lanzarlos a la Caja del Caos. Esto les permitirá mantener su centro de operaciones limpio y ordenado a la vez que sabrán donde buscar cualquier cosa que se les pierda. Otra ventaja que tiene este sistema es que da una idea de que tan bien administramos la instalación. Si la caja se desborda o no puede cerrarse es señal de que tienen que darle mantenimiento y organizar mejor sus cosas.

Consideraciones Finales

Voy a dejar los modelos de centro de operaciones Bunker y Fortaleza para otras notas porque voy a necesitar demasiado espacio para describirlos. Pero antes de que prejuzguen. Estos 3 modelos existen porque responden a necesidades diferentes. La Trinchera es suficiente para trabajar un dia entero e incluso pasar una noche. Tiene todo lo necesario para investigar, escribir programas pequeños y hacer diseños en tabletas gráficas de gama media y si pueden captar una señal WiFi desde donde están comunicarse con quienes quieran. Pero la ventaja que este modelo tiene sobre los otros es su bajo costo y rapidez de instalación. De hecho yo actualmente estoy limpiando mi centro de operaciones y tuve que replegarme en un rincón a modo de Trinchera y es desde ahí que escribo estas lineas. Otro consejo es que si van a comer en una trinchera tengan siempre a la mano una bolsa desechable para tirar los residuos y una bandeja para mover los platos y vasos sucios y asignen una hora para sacar todas esas cosas y si pueden lávenlas. Los trastos sucios pueden dejar inoperante un centro de operaciones así como la ropa sucia y los cables tirados en el suelo. En las siguientes entradas vamos a ver como armar el bunker y la fortaleza y recuerden que todos tienen un uso y propósito. Ninguno de ello es elección mala.

noviembre 5, 2012 Posted by | Uncategorized | , , , | 4 comentarios

¡No me gustan los engines ni las aceleradoras gráficas!

–O al menos no me gusta el uso que se les da–

En realidad no es que no me gusten los engines ni el hardware de aceleración grafica en si. Lo que desprecio es como pseudodesarrolladores creen que solo porque tienen acceso a estas tecnologias no necesitan saber programar. Pero antes de entrar a la trolleada en serio vamos a ver primero que es cada una de estas cosas.

Lo primero que hay que dejar en claro es que las computadoras (y las consolas de videojuegos técnicamente son computadoras) pueden construirse para poder hacer cualquier cosa medianamente bien que es lo que se llama propósito general o ser optimizadas para hacer lo mejor posible unas pocas tareas que es el caso de las de propósito específico. Las consolas de juegos y las tarjetas gráficas para computadoras cuentan como hardware de propósito específico. Y en el caso de la aceleración gráfica por hardware esta es tan vieja como los mas antiguos sistemas de Atari de finales de los setenta. El NES contaba con un circuito PPU (Picture Processing Unit) que le permitía hacer costosas operaciones de manejo de sprites independientemente de su modesto CPU 6502 de 8 bits. El primer Playstation contaba con un modesto coprocesador con capacidad Fixed Point y un decodificador de video independientes de su procesador principal y cualquier computadora actual con sistema de video independiente de la tarjeta principal tiene su propia capacidad para procesar datos de video y hacer cálculos vectoriales que ayudan mucho en los gráficos 3D. Este hardware de propósito específico permite bajar costos de fabricación de los equipos y reducir los tiempos de desarrollo y sin ellos las consolas de videojuegos hubieran sido tan costosas como las computadoras y no habría sido buen negocio venderlas.

Explicar lo que es un engine es bastante mas dificil. Lo que al principio eran unas pocas rutinas de código reutilizable se han convertido en enormes software de desarrollo comparable con los sistemas operativos. Cuando me preguntan lo que es un engine suelo decirles que es lo que queda de un videojuego cuando le quitas todo el arte, el diseño y dejas solo el código aburrido. Pero los modernos engines capaces de procesar scripts hechos en algún lenguaje interpretable han hecho que la frontera entre el código que conforma el engine y el código que es procesado por el engine se pierda. Para explicarme voy a contar mi teoría sobre el origen de los engines.

Programar es dificil, pesado y confuso. Una vez que un código funciona bien es mejor no solo conservarlo sino volverlo a usar tanto como podamos. Los programadores no teclean todo desde cero cada vez que van a comenzar un nuevo juego sino que llaman rutinas que crearon meses o incluso años atrás que están bien seguros de que les funcionan. Y cuando quieren implementar algo nuevo nunca incorporan el nuevo código a un juego sin antes asegurarse de que la mejora trabaja bien con todas sus antiguas rutinas.

Como dije hace mucho en la entrada “Códigos e Invocadores”, ese conjunto de rutinas de código que funcionan son el ejército del programador. Y como buen comandante de este ejército debe de saber darles órdenes en plena batalla. Y por esto se inventó el Script. Un script es un trozo de código interpretable que es procesado por esas rutinas de software. Y se dice que nació cuando un programador se fastidió de tener que hacerle cambios a sus programas todo el tiempo. Creó un sistema que en lugar de tener que ser reprogramado cada vez era capaz de seguir instrucciones sencillas dictadas en unas pocas lineas. Esta forma de programar se adaptó rapidamente al mundo del desarrollo de juegos de modo que un mismo conjunto de rutinas en combinación con un sistema para interpretar scripts pudo usarse en muchos títulos diferentes sin necesidad de recompilar nada. Bastaba con crear arte usable y teclear algunos scripts y ya teníamos un juego nuevo.

Con el tiempo, las empresas que lograron construir sus propios engines pudieron hacer juegos muy buenos y le dedicaron mas tiempo a crear historias y personajes elaborados y menos en leer libros de programación y matemáticas. Pero no había problemas porque el programador que había creado el engine trabajaba junto con ellos y podían ir a consultarlo cada que tenian alguna duda. Y como era de esperarse cuando otros les preguntaron sobre como hacian juegos tan buenos no faltaron millonarios que ofrecieron dinero a cambio de los derechos de uso de esos engines. Y así nacieron los sistemas de desarrollo que conocemos hoy.

La pregunta obligada antes de soltar al troll es ¿Porqué tanto desprecio a estas dos tecnologias sin cuya existencia los videojuegos no hubieran podido progresar? La respuesta es sencilla: ¡Hay desarrolladores ineptos que creen que estas tecnologias se crearon para que ellos no tuvieran que programar!

No es la flecha sino el indio…

Los que me conocen desde hace tiempo saben que he estado programando desde los tiempos en que se dio la transición de los 16 a los 32 bits en PC y que muchos de mis maestros (y no me refiero a los de la escuela) fueron programadores de sistemas de 8 bits. En esos tiempos si uno quería programar un juego no había otra que hacer la lógica principal con C/C++ y programar las rutinas gráficas mas avanzadas directo en ensamblador. En el caso de las consolas no había de otra que programar en ensamblador porque las memorias de los antiguos cartuchos eran demasiado caras. En ese tiempo ser programador de videojuegos era pertenecer a una casta superior que se hallaba muy por encima de cualquier otro trabajador de las computadoras. Pues si uno quería hacer juegos, sobre todo juegos 3D debía dominar no solo la programación a nivel muy avanzado sino también saber matemáticas mas avanzadas que las que se ven en cualquiera de las ingenierias a nivel universitario. Y por supuesto la única manera de que un juego 3D se viera bien en un 486 que corría con DOS era metiendo todo el código del juego en un EXE de apenas 100 o 200 kilobytes.

Pero un día llegaron las aceleradoras 3D. Artículos de lujo que muy pocos podían pagar y los programadores tuvieron que hacer juegos que si bien pudieran aprovechar este nuevo hardware si lo detectaban aún pudieran seguir corriendo en equipos que no lo tuvieran. Y eso fue hasta que salieron juegos infames que pedian este tipo de tarjetas como requerimiento mínimo para funcionar. Como era de esperarse hubo juegos que no vendieron lo esperado gracias a esto como fue el triste caso de Descent 3.

Y el asunto no terminó ahi, sino que como este hardware en sus inicios era cerrado no había manera de hacer rutinas propias para él y la única salida era recurrir a bibliotecas (por las que había que pagar derechos) para poder usar este tipo de hardware. Al mismo tiempo comenzaron a surgir bibliotecas cerradas de funciones que te permitian llamar a estos sistemas sin mas necesidad que meter un #include al inicio del código. La gente comenzó a creer que hacer juegos 3D era cosa de tener una computadora con un hardware determinado y no creian cuando se les decía que 3D en realidad eran algoritmos y matemáticas. Como prueba incontables empresas de videojuegos compraron costosas computadoras Silicon Graphics que nunca supieron como programar porque creian que tan solo por comprarlas iban a poder hacer juegos que se vieran como el Donkey Kong Country de Rare. ¡Hubieran podido hacer un juego con ese mismo nivel de gráficos conectando sus humildes PC en un cluster y sentando frente a estas a un programador que supiera un mínimo de Ensamblador x86 y Algebra Lineal!

Pasaron algunos años para que el hardware de aceleración gráfica se estandarizara lo suficiente para no tener que crear rutinas para cada tipo de tarjeta en el mercado pero todavía queda mucha gente que cree que las gráficas 3D las hace el hardware sin intervención del programador. Puede que tener una PC poderosa ayude a renderear video mas rápido o correr software de desarrollo mas avanzado pero si no sabes un mínimo de programación la computadora mas poderosa te resultará inutil.

Ahora vamos con los engines. Lo primero que hay que tomar en cuenta a la hora de intentar acortar los tiempos de desarrollo licenciando un engine es que es mucho mas dificil para un programador entender el código de escrito por otro programador que construir el suyo desde cero. Lo segundo es que hay diferentes tipos de licencias para estas cosas, unas van desde dar solo permiso para crear juegos usando herramientas visuales y un poco de scripting pero otras incluyen acceso al source code y derecho a usar partes de él en otros proyectos bajo estrictas limitaciones.

En si los engines son buenos si se saben usar. La trampa de los engines consiste en que muchísima de la gente que los licencia cree que no necesitan saber programar para usarlos cuando es todo lo contrario. Para que me entiendan usar un engine sin saber nada de programación gráfica es como comprar un barco y no saber navegar. Primero pueden sentirse muy poderosos por tener una pieza de equipo costosa y muy avanzada, pero pasado un tiempo de usarlo se van a perder en un mar de problemas que no van a saber como resolver y al final se irán a pique irremediablemente. No voy a mencionar gente que ha perdido dinero por pagar por estas cosas sin saberlas usar porque no es dificil encontrar estos casos en internet. Lo que si les voy a decir es que he visto una cantidad impresionante de quinceañeros que no saben siquiera lo que es un vector y que creen que van a poder hacer avanzadísimos juegos 3D sin tener que saber nada de programación. Esto es un espejismo.

Una cosa que sabe cualquiera que haya leido un libro de mantenimiento de sistemas es lo dificil que resulta entender un código escrito por otras personas, si a eso le sumamos que para entenderlo hay que saber conceptos matemáticos que no se ven en cualquier ingeniería y si a eso a la vez le sumamos que con el pretexto de la portabilidad estos engines pueden tener una misma rutina implementada de maneras muy diferentes y si todavía a eso le sumamos que le vamos a tener que “desensamblar” algunas partes tan solo para poder optimizarlo el resultado es que vamos a necesitar un modesto equipo formado por un experto en mantenimiento de sistemas, un maestro de matemáticas universitarias, un administrador de desarrollo de software y alguien que sepa hacer buena ingeniería inversa tan solo para USAR un engine a un nivel minimamente redituable. Pero lo que he visto en mi experiencia cercana es que quienes licencian un engine no solo no les interesa saber nada de programación sino que ni siquiera les interesa aprender sobre su funcionamiento. O como escuché a uno de estos decir en un foro que prefería pagar por un engine ya hecho en lugar de programarlo el mismo porque “eso le daba soporte y garantía”. ¿Tan poca confianza tienen en sus propios códigos?.

Otro error bastante nefasto que he visto cometer a muchos que juegan con dinero es que creen que porque otra empresa afamada al otro lado del planeta usó un engine X ellos van a poder hacer juegos igual de buenos si también lo licencian. Y el resultado es que no encuentan personal que pueda usarlos de manera confiable. El problema es que estas tecnologias por lo regular son software propietario al que muy pocos tienen acceso y cuando es libre o tiene una licencia menos restrictiva nada garantiza que quienes declaren manejarlo lo manejarán bien. Como ya dije he visto a muchos aficionados que no saben las cosas mas elementales de matemáticas creer que dominan un engine tan solo porque pudieron instalar la versión de prueba por 30 dias y lograron correr y medio modificar los ejemplos incluidos en el tutorial básico. Por cierto, quienes caen en esta categoría de seguro reconocen al ilustre personaje de la segunda imagen de esta entrada. De hecho si yo llego a licenciar un engine propio (el que lo voy a crear no está sujeto a discusión) incluiré en el costo de la licencia el salario de un especialista que asesore de manera presencial. Solo así podré garantizar al cliente que va a obtener aquello por lo que pagó y no tenga que traerse gente de esas regiones de nombres impronunciables donde se les hacen chiquitos del frio y que quién sabe si puedan o no con el trabajo, como uno cuyo perfil de linkedin me acabo de encontrar y al que no me aguanto las ganas de hacerlo víctima de mis mas infames tácticas de trolling.

Ya para terminar solo me queda darles dos consejos: El primero es que las aceleradoras gráficas son hardware y como hardware puede ser programado directamente en ensamblador o su lenguaje máquina equivalente. Así combinarán la velocidad del ASM con la mejora del hardware y que mejor que si aplican el algoritmo mas eficiente que encuentren. En cuanto a los engines no se olviden que no basta con ser capaz de correr los ejemplos y modificar los assets. Necesitan saber optimizar y para eso no basta con leer los manuales sino saber las matemáticas básicas tras las gráficas 3D y aspectos muy particulares de la plataforma en la que está corriendo. Y si se consideran a si mismos programadores mas les vale seguir estos dos consejos y dominar esas tecnologias antes de que esas tecnologias los dominen a ustedes.

octubre 1, 2012 Posted by | Uncategorized | , , , | 4 comentarios

¿Quién debe entrenar a los desarrolladores de videojuegos?

–La Escuela que puede existir o puede no existir–

Existe una leyenda urbana en la ciudad de Monterrey México sobre un misterioso maestro de artes marciales que cada cierta cantidad de años publicaba anuncios muy discretos en los diarios en los que invitaba a practicantes de cualquer disciplina de combate así como a cualquier interesado en la autodefensa a entrenar con el. Quienes lo conocieron comentaban que se trataba de un anciano muy sabio que impartía sus clases en su propia casa. Nunca se supo exactamente que estilo de combate era el suyo pero ponía mucho énfasis en siempre estar preparado para pelear y sobre todo ser discreto y silencioso como una sombra a la vez que humilde para no meterse en problemas.

Dos anécdotas sobre este sabio llegaron a mis oidos. La primera fue sobre alguien que le preguntó como debía de ir vestido para los entrenamientos. El sabio le dijo que debia de llevar la misma ropa con la que diario salía a la calle, pues los delincuentes no iban a esperar a que se pusiera su uniforme de entrenamiento para atacarlo. La segunda era la que le da el subtítulo a esta entrada. Se dice que el maestro había colocado un pequeño letrero en la entrada de su casa para orientar a los que buscaban la escuela. Cuando se despedía de sus últimos alumnos les dio una lección final. Se dirigió al letrero y señalandolo les dijo:

–“No se olviden que esta escuela puede existir…”–
Y luego descolgó el letrero del frente de su casa, lo ocultó de la vista y sentenció sereno:
–“…o puede no existir.”

No se cual fue el destino de este personaje pero estoy seguro de que él o alguno de sus discípulos sigue entrenando e impartiendo sus técnicas de combate en el anonimato casi absoluto, pues otros que dijeron haber asistido afirmaban que en el mismo lugar había otros alumnos que con solo verlos uno estaba seguro de que habian dedicado toda su vida a pelear. En fin, esta historia la cuento porque preparar a otras personas para que nos ayuden es una necesidad primaria en el mundo de los negocios de tecnología y al mismo tiempo es donde he visto que se cometen los peores abusos contra aquellos que quieren iniciarse en la programación.

Todos los que nos hemos sentido incapaces de satisfacer nuestras ambiciones hemos fantaseado alguna vez con encontrar a uno de estos maestros ocultos que nos enseñara a vencer nuestras limitaciones, no importa si se trata de un instructor de artes marciales que nos entrenara para pelear, un experto en finanzas con sombrero de copa que nos mostrara como hacer buenos negocios o en nuestro caso un programador con implantes cibertéticos que nos revelara el secreto para que las computadoras hagan nuestra voluntad. Y el primer problema que nos encontramos en esto de programar es el siguiente:


¿Quién es el responsable de entrenar a un desarrollador?

Las cosas mas humillantes y horribles relacionadas con el mundo de las computadoras están relacionadas con entrenamiento, capacitación y certificación de personal. Jóvenes cursan carreras completas donde no ven nada de programación. Universidades dejan de lado la enseñanza de las ciencias para proveer a empresas locales de administradores de bases de datos. Empleados comprometen el ingreso futuro de años a cambio de autofinanciarse una capacitación sin la cual no se les permite entrar a trabajar en UNA determinada empresa, empresas pierden dinero capacitando empleados que los abandonan y los autodidactas se encuentran con que a nadie le interesa lo que saben hacer porque nadie “los respalda”. Lo primero que tenemos que dejar en claro para ver de quién es la responsabilidad de entrenar a un desarrollador es quien es el que mas se beneficia con este aprendizaje.

¿Y quién se beneficia de los conocimientos de un desarrollador? Ya se que me van a decir que el principal beneficiado de los conocimientos del desarrollador es él mismo. Pero seamos objetivos.Por muchos conocimientos que un desarrollador individual tenga estos no le van a dar de comer solo por tenerlos. En cambio cualquiera que le invierta un salario sabe que va recuperar su inversión y puede calcular un margen de ganancia. Por otro lado no se puede ver a un desarrollador como una simple maquinaria a la que le invertimos dinero en mejoras pues simplemente los empleados aunque sean muy leales no son propiedad de la empresa como los activos.

Al final cada quien tiene sus ideas. Unos dicen que la universidad es la responsable de educarlos, pero como he dicho en series anteriores la Universidad está ahí para hacer ciencia y difundir la cultura y no para ser una oficina de recursos humanos. Otros dicen que las capacitaciones deben ser dadas por organismos certificadores en tecnología pero eso además de caro limita a los técnicos a usar cierta tecnología perecedera y no los deja lo bastante preparados para trabajar en una empresa determinada. Un desarrollador podría capacitarse a si mismo con una fuerte inversión de dinero, tiempo y voluntad pero nada garantiza a quien lo contrate la calidad de esa autopreparación. Por lo que al menos en el desarrollo de juegos solo queda un único responsable:

Quienes son responsables de capacitar a los desarrolladores de juegos son las propias empresas. ¿Alguna vez se han preguntado porqué los japoneses pudieron crear una verdadera industria de videojuegos en una era donde estos todavía no eran tan buen negocio como ahora? En los ochenta no existian todas las cosas que hay ahora para apoyar a “la industria”. Lo que voy a decir puede hacer enojar a algunos otakus e incluso incomodar a algunos japoneses que entiendan mi español neutral pero una de las razones fue porque la que las empresas japonesas de videojuegos no confiaban demasiado en la preparación académica de sus ingenieros.

En esta parte me iba a poner a hablar de la relación entre universidad y empresa en Japón pero eso requeriría demasiado espacio. De momento solo necesitan saber que las empresas de ese pais no esperaron a que las universidades les resolvieran sus problemas y en el caso de SEGA y Nintendo estos fundaron instalaciones propias donde capacitaban a sus trabajadores de manera constante. Por si fuera poco en paises como México las leyes laborales especifican muy claro que la capacitación debe de correr por cuenta de la empresa que contrata al empleado. Y aunque los japoneses tienen fama de inteligentes no creo que lo sean tanto como para aprender en una capacitación de algunas horas a la semana lo que un occidental no aprende en cuatro años de carrera de desarrollo de juegos y un par de maestrias especializadas en el tema.


¡Negarte a entrenar a alguien por miedo a que otros se beneficien de ese conocimiento no es honorable!

La necesidad de contar con instalaciones de entrenamiento no es privativa de las grandes empresas. También es necesaria en grupos independientes sin importar su tamaño o recursos financieros. Y en el caso de los grupos relacionados con las computadoras tienen como ventaja el manejo de información. Por cierto, he escuchado que la principal razón por la que muchos grupos no quieren entrenar a sus nuevos miembros no es la falta de dinero o el tiempo que podrían invertir en hacer cosas productivas. ¡El peor miedo que tienen algunos es que sus entrenados se vayan a otra empresa con los conocimentos aprendidos! Esto no solo egoista sino completamente absurdo. Y tan solo pensar en ese tipo de gente me ha hecho ir por mi frasco de antiácidos masticables. No digamos que estas capacitaciones no tienen el mas mínimo valor currircular ante ninguna autoridad del gobierno o que la información relacionada con tecnología caduca muy rápido. Sino que además la capacitación puede llegar a ser tan personalizada que aunque intenten aplicar esas técnicas en otra empresa estas no les servirán de nada. En resumen, es la empresa la que tiene la obligación de capacitar a su personal y lo único que puede exigir a cambio es un mínimo de preparación que garantice que va a ser capaz de aprender si es posible con la menor inversión de recursos..

Esto nos lleva a la historia del principio. Y a la famosa frase de “Esta escuela puede existir o puede no existir” Yo estoy seguro de que a quienes aprendieron a pelear con maestros ocultos como estos nunca les interesó obtener un documento que probara que habian entrenado con él y aunque les hubiera dado algún tipo de reconocimiento de seguro solo unos cuantos iniciados comprenderian su significado. Pues el si habian o no aprendido a pelear era ello que solo sabian ellos mismos y lo confirmarian cuando se vieran en una situación de vida o muerte. Lo que quiero decir es que en el caso de las capacitaciones no es bueno ir por ahí cosechando certificados, papeles o documentos sellados, esos son buenos para hacer trámites gubernamentales o mantener a los padres tranquilos porque cuando pongas a prueba tus habilidades nada de eso te va a ayudar. En el momento que alguien te pide un papel o te condiciona el salario por causa de este sabrás que estás ante una persona que no tiene honor y tú tampoco lo tendrás si aceptas sus condiciones y trato abusivos.

Ya para irme los dejo con otra frase de otro de estos sabios errantes que pudo o no pudo ser el del inicio de esta historia y que deja bien en claro el verdadero valor de los reconocimientos sociales:

Se dice que en una cierta escuela de artes marciales había un maestro muy fuerte y habil que llevaba al límite las capacidades de sus alumnos y los hacía practicar el combate todos los dias. Al final de una clase uno de sus discípulos se le acercó y lo cuestionó sobre el porqué si entrenaban tanto combate nunca los había preparado para ir a pelear al campeonato mundial donde podían ganar fama y muchos premios. Con seriedad y hasta con algo de desprecio el maestro se puso firme y le dijo lo siguiente:
–“Sabes, una noche vas a ir por la calle con tu familia y un grupo de pandilleros drogadictos y armados los van a atacar. ¡Esa noche vas a luchar por tu vida y la de tus hijos y esa va a ser para ti la pelea para ganar el Campeonato Mundial!

septiembre 21, 2012 Posted by | Uncategorized | , , , , | 3 comentarios

Como Contratar Desarrolladores Talentosos

–El caso de Square – Enix en Latinoamérica–

Existe una pequeña fábula que si son gamers de seguro les resultará familiar. Narra la historia de un terrible y poderoso monstruo al que nadie había logrado vencer. Varios líderes enviaron a sus ejércitos tan solo para ver como estos eran aniquilados. Hasta que un día apareció un guerrero de origen desconocido que desafió al gran monstruo y tras un combate interminable logró vencerlo. Cuando el héroe estaba por asestarle el golpe mortal para acabar con su existencia la bestia le suplicó lo siguiente:
–Por favor. Te pido que me ayudes. Mi mundo está siendo atacado por una fuerza maligna que quiere destruirnos a todos.
Extrañado por tal petición el guerrero bajó sus armas y le preguntó:–“Y si necesitabas que te ayudaran. ¿Porqué atacaste y mataste a todas las personas que se te acercaron?”. Cuestionamiento al que el monstruo contestó con gran respeto:

–Te pido este favor porque tu fuiste el único capaz de derrotarme. ¡Y porque para vencer a esa fuerza solo puede ayudarme alguien que sea mas fuerte que yo!

La historia no termina ahí, mas adelante el héroe ayuda al monstruo a recuperarse y hace equipo con él para para juntos enfrentarse a esa fuerza maligna que amenaza su mundo. Y lo de la referencia a los videojuegos viene porque en muchos de ellos hay personajes, sobre todo jefes que cuando son vencidos por el jugador, este tiene la opción de agregarlos a su grupo de aventureros. Hay muchos ejemplo pero uno de los primeros que recuerdo es el de Alucard de Castlevania III Dracula’s Curse, quien tras enfrentarse y ser derrotado por Trevor Belmont le pide a este que por favor le ayude a detener a Drácula, quien por si fuera poco además es su propio padre.

Esta historia me causó en ese entonces una mezcla de respeto y admiración. Pues el aceptar que alguien es mas fuerte que nosotros, sobre todo luego de que nos ha vencido de manera indiscutible no es para nada facil. Lo mas común sería enojarnos con quien nos venció y esperar el mejor momento para la venganza. Pero ahora muchos años después reflexiono y me doy cuenta de que la única manera objetiva de buscar a alguien en cuya fuerza superior nos podamos apoyar es esa. O como cuando colocamos una escalera en la pared y la sacudimos fuerte para asegurarnos de que no nos va a dejar caer cuando la escalemos.

En fin, esta historia del monstruo que encuentra a su poderoso aliado de esta manera tan controversial viene al caso porque acabo de ver un caso en la que una empresa usó esta técnica aunque de manera muy discreta. Cuando esta empresa consideró abrir oficinas en latinoamérica se encontró con que tenía que instalarse en un lugar donde pudiera encontrar buenas condiciones y sobre todo personal capacitado. Así como también identificar a los mejores talentos locales de esa región para incorporarlos a su planta laboral lo mas rápido posible. Esta empresa siguió la misma técnica que la del monstruo de la fábula. Pues en lugar de anunciarse en los medios y publicar ofertas de empleo lo que hizo fue organizar un concurso cuyos únicos requisitos fueron ser habitante de latinoamérica y crear un producto que cumpliera con ciertos requisitos técnicos muy específicos. El premio en si apenas era de unos pocos miles de dólares pero la verdadera recompensa para los participantes era la de poder acercarse a una empresa tan importante y mostrar sus habilidades de la manera mas objetiva posible. Y para la empresa que organizó este evento las recompensas fueron mayores: Pues por mucho menos dinero del que le hubiera costado contratar despachos de recursos humanos especializados en todos esos paises pudo obtener toda la información que quería y por parte de los participantes (incluso aquellos cuyos proyectos no llegaron a participar) estos vivieron lo que es ese tipo de trabajo. Hasta el momento de escribir esto no supe como acabó esta historia pero estoy seguro de que tanto el ganador de ese concurso como todos los talentos que quedaron dentro del conocimiento de esta empresa si no son los mejores, al menos serán los mejores que van a poder encontrar en esta región en el corto plazo. Y solo espero que otras empresas del ramo apliquen esta misma técnica tan objetiva e imparcial para identificar y contratar empleados talentosos.

Para los que saben de videojuegos ya han de saber que me refiero a Square-Enix, quienes organizaron un concurso de videojuegos para plataformas móviles a nivel latinoamérica. Y por lo que se dice, desde los tiempos en los que Square y Enix eran empresas independientes ya tenían la sana costumbre de hacer retos públicos para atraer a los desarrolladores de aquel entonces. Esta estrategia sin lugar a dudas es la mejor que conozco que ha seguido alguien del ramo y espero que cualquier empresa que tenga el suficiente prestigio para que los desarrolladores la tomen en serio imite esta técnica y consiga contactar a los mejores desarrolladores que encuentre.

Por cierto, esta nota no estaría completa sin las trolleadas de rigor. Pues para los que ya me conocen han de saber que desapruebo por completo las técnicas que las empresas latinoamericanas de videojuegos (especialmente las mexicanas) siguen para contratar personal. Piden cosas que nada tienen que ver con hacer juegos y luego se quejan de que no encuentran personal capacitado. Por ejemplo dicen que es importante estar titulado. Yo por ejemplo cursé la carrera de ingeniería en computación (con minúscula) y tengo contacto con maestros de mas de una universidad y puedo asegurarles que lo único que les enseñan en esas carreras es a derivar polinomios y estar informados sobre lo maravillosos que son los ERP y demás sistemas de administración por computadora. Piden gente muy joven pasándose por alto que las grandes leyendas del desarrollo de videojuegos que todavía viven rondan o superan los 40 años y no le sigo nada mas porque cualquier cosa que les pueda decir no los va a hacer sentir tan mal como el hecho de que sus proyectos multimillonarios no pudieron escapar de la quiebra ni siquiera con los apoyos millonarios que en su tiempo les brindó el gobierno.

Lo importante es la jornada y no el destino

Estoy de acuerdo que para contratar a alguien talentoso hay que poner a prueba todas sus habilidades. Pero esto debe de hacerse de manera objetiva de modo que al aspirante rechazado no le quede la menor duda de que el trabajo estaba fuera de sus capacidades. Como a los guerreros que fueron comidos por la bestia no les quedó la menor duda de que no fueron lo bastante fuertes para derrotarla. El problema es que por culpa de muchos antiguos estafadores los gobiernos prohibieron los “períodos de prueba” a los que podría someterse a los candidatos. La solución es hacer que los candidatos pasen por todas esas pruebas mucho antes siquiera de poner un pie en la oficina de contratación de personal. Otro ejemplo de esto nos lo dan las bandas criminales de cierto pais que de momento no recuerdo cual era y que ahora les voy a contar:

Se dice que que en cierto lugar lejano. En una plaza pública muy grande cada año se organiza un siniestro evento. Jóvenes rudos y sin oportunidades en la vida se reunen en ese sitio para molerse a golpes unos a otros. Desde horas antes la policía está con su equipo listo para someterlos y llevarlos detenidos. Pero aún así se da la pelea.¿Pero porqué sucede esto?.

¡Porque ese evento es usado por la mafia local para reclutar a sus matones! No muy lejos del sitio los líderes de las bandas criminales observan la lucha y se fijan especialmente en aquellos participantes que son capaces de dejar fuera de acción a la mayor cantidad de rivales al mismo tiempo que escapan de los policias. Al final del día los pocos que logran escapar de una pieza y no son arrestados son contactados por las bandas para invitarlos a unirse a sus filas.

En el caso de Square-Enix el concurso sirvió para probar las habilidades de los participantes sin involucrarse con ellos personalmente. Y no solo probaron que tan buenos eran como programadores o diseñadores de juegos. También probaron quienes eran capaces de sacar un proyecto adelante a pesar de la falta de tiempo y recursos, de información técnica y en algunos casos de como trabajar en equipo. Y todo esto sin siquiera verlos a la cara. A mi personalmente me hubiera gustado participar pero en el camino tuve que vérmelas con otros monstruos que me mantuvieron alejado de las computadoras y para cuando llegué este monstruo al que quería retar ya no estaba. De momento no se si porque alguien logró vencerlo o simplemente se aburrió de ganar siempre. Sea como sea, mis respetos tanto a los que se quedaron en el camino con proyectos inconclusos como a los que entregaron proyectos que no ganaron. Que al igual que los ganadores ahora ya saben de lo que realmente se trata hacer juegos y que no es nada mas de cumplir con requisitos sociales abusurdos y contar con certificaciones y licencias que a las computadoras no les interesan para nada. Ahora lo mejor es que aproveche esta valiosa lección y perfeccione mis habilidades para mas adelante econtrarme con otro monstruo igual o mas temible y poder medir fuerzas con él.

septiembre 14, 2012 Posted by | Uncategorized | , | Deja un comentario

Informe asm86[007]

–Miedo a emprender, supervivencia y mas esqueletos–

Había pensado que la nota de “Los Esqueletos Siempre Sonrien” tuviera una segunda parte. Pero como todo lo que había escrito no eran mas que insultos y frustraciones varias decidí que no valía la pena darle su propio espacio. Así qu decidí fundirla con otros dos temas mas interesantes: El aprender por uno mismo y la capacidad de sobrivivir en condiciones difíciles.

Todo el escándalo de la nota de los esqueletos comenzó porque hace un tiempo leí un escrito sobre como hay gente cree que hacer juegos es cosa facil y se asusta cuando se da cuenta de que no lo es. Y no exagero cuando digo que se trata de cobardes que corren por su vida. He visto a muchos que un dia se comportan con arrogancia solo porque alguien que sabe todavía menos que ellos les pagó un salario y al otro lloran por un empleo de lo que sea que les permita darle de comer a sus hijos. Es triste ver como los antiguos héroes del desarrollo de videojuegos como John Carmack de Doom o los fundadores de 3D Realms decían que lo único que necesitabas para hacer juegos además de una PC era información, muchísima dedicación y un refrigerador lleno de comida congelada y ahora resulta que los jóvenes de hoy no quieren dar ni siquiera eso. La mayoría de los que hoy quieren dedicarse a hacer juegos no están dispuestos a abandonar los ingresos que les reportan sus empleos normales y en el peor de los casos quieren que alguien les pague durante los meses que tarden en hacer un solo juego. Pues para que lo sepan, ningún inversionista que se respete estaría dispuesto a invertir su dinero en un proyecto con tan pocas garantías de éxito como lo es pagarle a un grupo de aficionados sin experiencia real para que desarrollen un juego completo en su primer intento. Se de uno o dos pero los que conozco la mayoría están ahora en quiebra y el resto corrió con su dinero apenas a tiempo.

Recuerdo a un desarrollador aficionado que solicitaba una cantidad de dinero bastante considerable para hacer un juego el solo. Cuando le preguntaron para qué quería esa pequeña fortuna respondió que la necesitaba para dejar su trabajo durante un año y el 100 porciento de ese tiempo a hacer el juego. Hasta ahora esa es la respuesta mas honesta que le he escuchado a uno de estos desarrolladores independientes. Pues programar es muy barato en el sentido de que no hace falta materia prima, maquinaria demasiado sofisticada (solo una PC) ni grandes cantidades de mano de obra. De hecho lo que verdaderamente hace la diferencia entre una desarrolladora pequeña y una con cientos de empleados es que esta última recurre a la fuerza bruta de sus artistas gráficos para crear toda clase de contenido para incluir en el juego. Tendencia que si no cambia mas de uno de los grandes va a tener que vender barato algunas acciones. Pero eso es tema de otra entrada. Ahora vamos a discutir el problema de los wanna be’s que lloran porque nadie les da dinero para sus juegos.

Un problema del primer mundo…

Muchos paises se rien de cosas que solo son consideradas problemas en el primer mundo pero que en el resto de los paises pobres no están sujetas a discusión. Por ejemplo protestar por las “abusivas” condiciones laborales que las multinacionales imponen a los trabajadores de paises pobres cuando antes de su llegada sus habitantes no tenían ninguna oportunidad de empleo o hacer protestas porque se maltrata a animales silvestres cuando estos no dudarían en matar y devorar a cualquier humano que sorprendieran desprevenido. Para los paises mas pobres o simplemente gente no tan acaudalada de esos mismos paises civilizados este tipo de problemas son cosa de risa. Uno los mas recientes y que mas úlceras me ha sacado desde que escuché aquello que a algunos les pagaban por retocar botones de interfaces es el siguiente:


No me he dedicado de tiempo completo a hacer juegos porque me da miedo abandonar mi trabajo seguro y bien pagado y no poder cumplir con mis responsabilidades económicas.

Si a ustedes esto les parece perfectamente razonable los felicito. Probablemente no tuvieron problemas para conseguir un empleo seguro y bien pagado. Probablemente son graduados de una universidad de prestigio y si ya tienen cierta edad de seguro están felizmente casados con una pareja profesionista, tienen una casa propia y se aseguran de que sus hijos vayan en su SUV todos los dias limpios y desayunados al colegio confesional mas prestigioso de su localidad. Se entiende que tienen compromisos que cumplir como créditos, pagos varios y otras responsabilidades que me da flojera describir en detalle. Y de seguro entre sus mayores preocupaciones está el saber la fecha límite para cubrir el pago mínimo de sus tarjetas de crédito. Los entiendo, personas responsables y trabajadoras como ustedes nunca abandonarian la estabilidad familiar y financiera que tienen para irse con un montón de geeks desarrapados a un cuarto apartado donde todo el día hacen cosas raras con sus PC (ni siquiera Mac) por las que no reciben ningún cheque semanal. A estos adultos responsables tengo algo que decirles: ¡Hay desarrolladores pobres que se rien de sus poblemas!

Corriendo el riesgo de que muchos de mis nuevos amigos me dejen de hablar o no le den like a las fotos de mi gato gordo en Facebook voy a decir algo que los puede ofender: ¡Casi todos los aspirantes a game developer que he conocido fuera de mi círculo mas cercano son gente privilegiada! Y eso no es malo pero considero que son gente demasiado inocente que puede ser víctima de toda clase de estafadores, ladrones y criminales de cuello blanco apenas pongan un pie fuera del mundo perfecto en el que viven. Cuando los veo suelo decirles de que el mundo que ellos conocen es como esas fortalezas amuralladas de algunas películas de zombies. Y que apenas pongan un pie fuera de esas barreras deben de estar preparados para enfrentárlos. Fuera de eso son gente de lo mas encantadora y que estoy orgulloso de haber tratado. Ahora bien, fuera de la protección de la muralla junto con los zombies me he encontrado no solo aliados sino gente que también quiere participar en esto. Aunque muy poca. De hecho me atrevería a decir que quienes viven en situaciones no tan privilegiadas ven esto de programar juegos como algo imposible o ajeno por completo a su realidad. Pero hace poco presencié un caso interesante.

…es una ilusión que abrazará el vagabundo

Como sabrán los que les interesa hacer juegos en el 2012 la empresa Square-Enix organizó un concurso de desarrollo de videojuegos a nivel latinoamérica para obtener información sobre la calidad y distribución de los desarrolladores locales. En ese tiempo un desarrollador principiante se me acercó y me pidió ayuda para entrar al concurso. Por desgracia para todos tuve algunas pérdidas familiares que me impidieron dedicarme al concurso como yo quería pero este personaje era por completo diferente a los mencionados en los párrafos anteriores. No lo conocí personalmente pero por su forma de expresarse deduzco que era un estudiante que rondaba los 20 años o tal vez menos, que por motivos económicos no había podido entrar a la universidad pública y que tal vez hasta había desempeñado trabajos eventuales para pagar sus necesidades mas básicas. De todos los mensajes que intercambiamos en ese tiempo el que mas me sorprendió decía algo así como: –“¡Gurú por favor enséñame a programar! ¡Necesito poder hacer juegos para pagarme la universidad!”–

Esta declaración me llegó no solo por haberme llamado gurú sino porque me dejó en claro que realmente creía en si mismo a un grado que ningún desarrollador de juegos autodenominado “profesional” que he conocido en persona lo hacía. Lo de gurú me hace reir apenado, pues no es la primera vez que alguien me imagina como alguien exitoso y bien posicionado en la sociedad. De hecho soy mas como una versión muy minimizada y geek de Ryu de Street Fighter. Un vagabundo sin empleo ni residencia ni familia fija que recorre el mundo (bueno hasta ahora solo el internet) buscando perfeccionar sus habilidades y haciendo trabajos eventuales que nada tienen que ver con las computadoras para sobrevivir. Aunque no soy tan bueno para la programación como el buen Ryu lo es para las artes marciales me gusta verme a mi mismo como un aventurero errante que busca acción en sitios donde otros solo ven amenazas y negocios riesgosos. Aunque cuando vaya en la calle con mi computadora oculta otros solo vean eso que la gente bonita designa como “un loser”.

En fin, este informe es también para comunicar que a partir de ahora las notas se van a volver un poco mas duras en el sentido de que voy a tratar a los principiantes con mayor severidad. Voy a tratar temas mas avanzados de la forma mas clara y amistosa posible pero al mismo tiempo aquellos que vengan nada mas para hacer copy-paste y entergar una tarea se encontrarán con que este blog será mucho mas ofensivo que nunca. Estoy cansado de que gente considere inferieriores (o peor aún superiores) a otras personas por cosas superficiales que no tengan nada que ver con sus verdaderos conocimientos y habilidades. En este sitio quien quiera respeto va a tener que pelear conmigo y con cualquiera de los lectores habituales y que no se preocupe si pierde porque aún si eso pasa será mas respetado que cualquiera que venga a exigir respeto sin habérselo ganado a golpes. Pues parafraseando a cierto fabricante de armas de Europa Oriental, los dioses crearon a los seres humanos diferentes pero luego las computadoras los hicieron a todos iguales. Y recuerden. Cuando alguien logra triunfar luego de muchisimos sacrificios, la mayoría se desanimará porque lo considera muy dificil; pero unos pocos se sentirán esperanzados al descubrir que triunfar es posible. Ahora mejor me pongo a programar porque buena falta que me hace conseguir unos cuantos triunfos.

septiembre 13, 2012 Posted by | Uncategorized | , , | Deja un comentario

¡Los Esqueletos Siempre Sonrien! (Parte 1)

–Demasiado optimismo puede matar a un programador–

Imaginen que caen en las garras de un monstruo que los destruye de manera lenta y sumamente dolorosa a lo largo de meses o años pero que les hace creer que todo va a estar bien. Que si tienen el valor para atacarlo les hace creer que si lo siguen golpeando con esa arma tan debil van a poder algún dia vencerlo y que si tratan de salir corriendo va por ustedes y les nubla la razón para que no lo hagan. Un monstruo que no pretende asustarlos ni mucho menos hacerlos huir. Solo algo que recuerda al sufrimiento de cuerpo y mente sugiere que algo está muy mal. Al final, sus cuerpos mueren mientras sus mentes permanecen atrapadas en un hermoso sueño del que no despertarán a menos que alguien los regrese a la realidad de un golpe y les muestre la horrible y verdadera cara del monstruo del que están siendo víctimas. Y esta nota es como ese golpe que anula ese diabólico hechizo. De inicio no les va a gustar pero ya me lo agradecerán después.

No sabría como llamar a este enemigo abstracto, aunque ya en la mitología de la India existían espíritus malignos capaces de anular la capacidad de percepción del ser humano esto tiene mas que ver con aquello que algunos llaman esperanza. De hecho en el mito de Pandora se decía que grandes horrores habían salido de su caja y que tan solo quedó dentro la esperanza cuando por fin lograron cerrarla. Este monstruo abstracto al que trato de imaginarme como un Esqueleto Sonriente se aprovecha de la idea de que la gente considera que la esperanza es algo bueno y les tapa los ojos de la razón a sus víctimas mientras devora sus almas. Y cada que te escucha quejarte se te acerca al oido y te llena de optimismo con frases como “échale ganas”, “tu puedes” o “sigue intentándolo”. Ahora veamos un poco mas sobre este esqueleto sonriente.

El Esqueleto Sonriente es el gemelo maligno de la Esperanza. Sus principales víctimas son los apostadores a quienes les hace perder grandes cantidades de dinero haciéndoles creer que en la siguiente tirada de dados van a ganar pero también suele susurarles a los enfermos que sus síntomas en realidad no son tan graves como para ir al médico o engaña a algunos enamorados diciéndoles que la persona que los ha rechazado toda la vida en realidad si los quiere. Y como este escrito es sobre programación, me voy a concentrar en como el Esqueleto Sonriente ha destruido las carreras de muchos programadores. En especial las de muchos desarrolladores de videojuegos.

Demasiado optimismo puede matar a un programador. De momento voy a mencionar el caso del creador de un juego conocido como Kingdoms of Amalur quien terminó en la ruina por su excesivo optimismo. En cierto momento tuvo un capital millonario, un gran equipo de desarrolladores a los que les daba todo tipo de prestaciones exóticas y todo lo necesario para terminar y llevar su juego al mercado. El tenía grandes esperanzas de que este juego fuera un gran éxito. Y si bien pudo terminar y sacar a la venta un juego que sin ser el mejor si que era mucho mas que bueno sus costos se elevaron tanto que ni vendiendo varios millones de copias pudo escapar de la quiebra.

El caso Amalur se repite mucho en todos los niveles. Desde empresas con presupuestos millonarios como la que acabamos de ver hasta modestos desarrolladores independientes que quieren hacer juegos en la computadora de su recámara. De hecho, me atrevería a decir que los programadores tienen que vérselas con el Esqueleto Sonriente desde que se les ocurre su primera idea para un juego hasta que reciben el pago final por sus servicios. Es mas, no me extrañaría descubrir un día que el CEO de alguna empresa de videojuegos sea el mismísimo Esqueleto Sonriente. Y si no me creen solo piensen por un momento lo siguiente: Muchos geeks relacionados con la programación tienen como máxima aspiración convertirse en desarrolladores de videojuegos profesionales y vivir de hacer juegos. Tienen la idea de que se trata de un trabajo muy divertido solo porque se la pasaron muy bien en sus épocas de gamers. No tienen idea de lo que en realidad es hacer juegos.

Lo mas siniestro es que en realidad nadie se beneficia del fenómeno del Esqueleto Sonriente. A primera vista podría parecer que un productor puede sacar ventaja al sobreexplotar a los desarrolladores para obtener mas horas de trabajo por un mismo salario pero a la larga termina con costos demasiado elevados y acaba con serios problemas de liquidez. Y al igual que el apostador compulsivo, todos pierden su dinero, su tiempo y en casos extremos hasta sus vidas o por lo menos buena parte de ellas tratando de sacar a flote proyectos imposibles de terminar. En el caso de proyectos personales el problema no va mas allá de dejar las cosas en el olvido (díganmelo a mi) pero cuando hay dinero de por medio, siempre hay alguien que tiene que pagar.


Conoce los límites de tu poder

Antes de discutir como hacerle frente al Esqueleto Sonriente veamos a uno de estos en acción: Digamos que ustedes van a un evento de geeks como por ejemplo una convención de comics. Ven que uno de los conferencistas en un “profesional” de la industria de los videojuegos. Durante la conferencia este les dice no solo lo maravilloso que es hacer videojuegos y las enormes fortunas que se mueven todos los dias. Tras varios minutos de hablar mucho y no decir nada finalmente llega a la sección donde comenta como pueden los pobres principiantes iniciarse a hacer videojuegos. Aquí es donde entran las bien conocidas herramientas de aficionado que pueden encontrar si buscan en google como hacer videojuegos sin saber programar y en el mejor de los casos da los nombres de algunas herramientas de diseño de licencia libre. Por cierto, siempre me he preguntado porqué en estas pláticas nunca dan detalles sobre herramientas libres que tienen aplicación mas seria en desarrollo de videojuegos como los compiladores GCC por ejemplo.

Ahora vamos a saltarnos lo ocurrido entre que salen de una de estas conferencias llenos de ganas de hacer videojuegos y vámonos hasta el momento en el que ya comenzaron a hacer uno pero no pueden terminarlo. Comienzan a notar que casi no duermen, que han descuidado sus estudios o trabajos honestos o si fueron lo bastante estúpidos y jugaron con dinero de verdad a que no van a poder cumplir con las fechas de entrega. Pero todo está bien porque están haciendo el trabajo de sus sueños y la envidia del troll de internet que dice que sabe de Ensamblador se los recuerda cada que se meten a leer su blog. En eso yo me apiado de su miseria y les doy un golpe para despertarlos del hechizo del Esqueleto Sonriente y lo que ven no les gusta nada:

He escuchado mucho de algunos el término “Reality Check”, y a la mayoría de los que les he escuchado este término tuvieron que cambiar de empleo en menos de un año. Esto es parecido a eso que llaman Reality Check pero con la diferencia de que a cada quién le toca una realidad diferente dependiendo de sus muy particulares circunstancias. La primera cosa que uno debe de hacer tras escapar del hechizo del Esqueleto Sonriente es estar muy pero muy consciente del límite de sus propias capacidades. Y esto no es para que se sientan poca cosa sino para que no intenten hacer algo que nunca van a poder terminar. Si por ejemplo yo les dijera que soy capaz de hacer en una semana un programa para una plataforma que desconozco por completo seguro fallaré. Pero si el excesivo optimismo del Esqueleto Sonriente aparece diré que si puedo hacerlo y fallaré intentándolo. Esto no es nada sencillo. Pero la única manera objetiva de medir nuestras capacidades es probándonos a nosotros mismos. Antes de lanzarse a dibujar ustedes solos todos los cuadros de animación de los 20 personajes de su nuevo juego de peleas o a programar las inteligencias artificiales únicas que le han de dar una personalidad propia a cada uno de esos 20 peleadores mídanse ustedes primero. Vean cuanto tardan en dibujar un solo cuadro de animación digno de mostrarse en el juego o si pueden hacer que por lo menos el peleador controlado por el CPU es capaz de caminar hasta donde está el jugador. Mas que ser realistas o moderados con lo que se proponen, lo que les pido es que sean objetivos. Pues es muy sencillo confiarse y lanzarse a hacer cosas que están por completo fuera de nuestras capacidades.

No me voy a ir sin antes darles el golpe que les devolverá la visión de la realidad. Y tras dárselo la primera cosa que ven es que están tirados en el suelo, sin dinero, sin comida, sin energía y lo que es peor sin un juego terminado. Primero me reclaman del porqué destruí su lindo sueño y yo procedo a detener sus golpes y girarles la cabeza para que queden cara a cara con el temible Esqueleto Sonriente.

En la siguiente entrada vamos a ver que hacer cuando uno recién acaba de salir del hechizo del Esqueleto Sonriente. Las etapas por las que uno pasa son enojo, desengaño, miedo, desesperanza y finalmente resignación, aunque la resignación puede no ser el último paso si siguen los consejos que voy a darles. De momento lo que les recomiendo es que si ustedes son programadores aficionados y creen que están viviendo “su sueño” primero borren esas sonrisas idiotas de sus caras, pues tanto optimismo no va a hacer que un mal código funcione, pues no olviden que aunque ya estén muertos los esqueletos siempre sonrien.

agosto 11, 2012 Posted by | Uncategorized | , , , | 1 comentario

¡No Puedes Escapar de la Programación!

–Cuando haces videojuegos todo tiene que ver con programar–

Como saben quienes han leido estos escritos desde hace tiempo, un tema del que escribo mucho es sobre programación de videojuegos, de hecho me interesé en el ensamblador porque en aquellos años era el lenguaje en el que se programaban los mejores juegos. Esta forma de pensar me llevó un día a la idea de abrir otro blog relacionado con el tema que mas se toca aquí (incluso mas que el ASM) y me refiero al desarrollo de videojuegos. Pero cuando escribía las posibles entradas me di cuenta de una cosa: ¡De que todo se relacionaba con la programación!.

Esta sentencia no es del todo mia. Es parte de una entrevista que escuché hace mucho por radio analógica. En un programa sobre computadoras entrevistaban a uno de los egresados de una de las en ese entonces muy contadas escuelas de videojuegos y el invitado dijo que no importaba a que área del desarrollo de videojuegos uno se dedicara, siempre se relacionaba con la programación de una forma u otra. Y esto lo confirmé cuando intentaba escribir una entrada de como se crean los sprites y vi que la mayor parte del texto hablaba sobre estructuras de datos, alineación de memoria y transferencias eficientes de secuencias numéricas. Es decir que nada que ver con lo que la gente que yo conozco que se dedica a dibujar para videojuegos hace. Ahora veamos las principales áreas del desarrollo de videojuegos que aunque lo intenten no pueden huir de la programación:

Los Artistas Gráficos no pueden escapar

Suponiendo que ustedes sean artistas gráficos porque en verdad les gusta dibujar y no porque programar les daba miedo de seguro tienen un estudio propio con una mesa de dibujo, lámpara flexible, una colección de tintas y lápices siempre disponible y si tienen dinero puede que hasta una tableta gráfica. Las paredes de su lugar de trabajo sostienen aquellas obras que los hacen sentir orgullosos y que les levantan la autoestima cuando el último cliente al que le hicieron los dibujos de esa campaña publicitaria no les pagó lo que querían. En fin, el asunto es que cuando intentan meter su arte en un videojuego este no se ve tan bien como lo hacía en los dibujos de las paredes. Ni siquiera se ve tan bien como se veía en la pantalla de la computadora en la que diseñaron. En lugar de eso los personajes parecen planos y sin detalle. No se aprecian los gestos faciales ni las expresiones en los juegos para móviles, los trazos se ven toscos e irregulares y las fotos digitalizadas de los personajes parecen recortes de revista. El artista se siente mal, pero nada de esto sucede porque sea un mal dibujante, sino porque no sabe como funciona el sistema gráfico de una computadora.

Algunos de estos errores comunes son por ejemplo no calcular bien la resolución en la que va a aparecer la imagen. Si tan solo dibujan en papel y usan un scanner a la hora de ajustar el tamaño los detalles grandes se van a deformar y los pequeños a perder por completo. También está el problema de la profundidad de color. Un Scanner puede capturar hasta 48 bits de profundidad de color pero las pantallas de muchos sistemas de videojuegos con dificultad alcanzan los 32 bits y aunque los alcanzaran el ojo humano puede no percibir bien las tonalidades. Algunos intentan paliar este cambio retocando las imágenes digitalizadas antes de integrarlas al juego. Debo advertirles que esto nunca funciona. Si una imagen digitalizada y pegada directamente a un juego tiene el aspecto de un recorte de revista una imagen digitalizada y retocada en un editor gráfico va a parecer un recorte de revista al que le dibujaron encima. Otro problema al convertir un dibujo a sprite sin saber programar es el de que queda “delineado”. Las figuras quedan con un contorno que hace que no se vean debidamente integradas con el resto de la escena. Esto es por no saber manejar la profundidad de color. De todos estos problemas hablaré en el futuro porque necesitan una nota para ellos solos. Ahora veamos como los modeladores 3D que no saben programar se dan de narices al tratar de hacer modelos para videojuegos.

Los Modeladores 3D no pueden escapar

Esta historia la vi en persona. Cierto modelador 3D se quejaba de que los modelos que hacía para videojuegos eran demasiado simples y angulosos y que cuando hacía que se vieran bien estos alentaban demasiado el juego o incluso no corrian. Esto sucede porque los primeros editores 3D para computadoras personales como el 3D Studio no hacían realmente modelos de objetos sino de escenas completas y a la hora de importar uno de esos archivos a un juego había demasiada información que en realidad no se usaba. Otro detalle que los modeladores 3D que nunca han hecho modelos para videojuegos es que los modelos se procesan en Tiempo Real. Hay reglas sobre como deben diseñarse esos objetos para que se vean bien en un videojuego de acción rápida y que no sobrecarguen las rutinas de rendering. Por ejemplo muchos de estos se dibujan incompletos de modo que al moverse rápido el cerebro humano los une. Si son observadores o tienen un Playstation de primera generación que funcione podrán ver como muchos personajes en realidad no tienen articulaciones sólidas. Otra manera de aligerar el rendering es usar las texturas de manera que parezca que el objeto tenga relieve irregular u obedezca a cambios de iluminación. El conocido como Normal-Mapping es en realidad una optimización para simular superficies irregulares en un objeto formado por caras planas.

Los modeladores 3D cuyo trabajo no se relaciona con los videojuegos no necesitan saber esto porque rara vez les piden hacer modelos que van a ser presentados por un sistema de visualización en tiempo real. Casi siempre lo que les piden son animaciones e imágenes fijas o en el caso de los que trabajan para cuestiones de ingeniería modelos muy detallados que no necesariamente se ven realistas. Al hacer modelado para videojuegos no se debe de hacer tanto detalle porque hace el modelo demasiado dificil de procesar. Pero tampoco basta con disminuir la cantidad de polígonos para convertir un modelo detallado en uno que pueda incluirse en un videojuego. Esto da al modelo una apariencia falsa y plástica. El proceso para convertir un modelo detallado en uno apto para un sistema en tiempo real comienza desde antes de diseñar el modelo detallado y toma en cuenta detalles tan poco artísticos como la precisión numérica usada para representar los vértices o que al multiplicar las dimensiones y profundidad de color de las texturas el resultado sea una potencia de dos alineable en memoria. En mi experiencia he visto gente que hace modelos de millones de caras con efectos de luz dificilísimos de procesar cuando podrían obtener resultados mas vistosos y eficientes con unos cuantos miles de caras, iluminación interpolada y unos cuantos juegos de texturas.

Por cierto, en mucho tiempo de convivir con desarrolladores de videojuegos, tengo por lo menos 10 años en los que no he visto que abran un archivo de imagen ni mucho menos uno de un modelo 3D a nivel binario. Casi siempre el sistema en el que están trabajando los carga de manera automática o los mas avanzados llaman a una función de una API (o a la clase de un paquete como dicen ahora) que lo carga en la memoria con tan solo pasarle el nombre del archivo. Les recomiendo que si quieren saber en lo que se están metiendo intenten un día por lo menos abrir uno de estos archivos en modo texto y desplegar los valores mas importantes. Conocer a nivel de bit los formatos gráficos de archivo no solo les ayudará a decidir cual es el formato que mas les conviene sino que podrán optimizar mejor los recursos y hacer gráficos mas rápidos, de mejor calidad y sin errores extraños relacionados con fugas de memoria.

Los Game Producers no pueden escapar

Esta última parte la pongo nada mas para reirme. Pues me resulta gracioso como los que menos parecen relacionarse con la programación en una empresa de videojuegos son los que mas daño pueden causarle a la empresa por sus pobres conocimientos sobre computación. Vamos primero con los game producers. Un game producer, o al menos los que yo he conocido personalmente son jóvenes egresados de prestigiosas carreras de negocios y tienen experiencia en comercio internacional. Para ellos es sencillo conseguir fondos para arrancar proyectos y conocen gente que les ayudará a publicitar y vender sus productos. Su problema es que decisiones que parecen perfectamente razonables para un negocio cualquiera pueden ser verdaderos suicidios a la hora de hacer videojuegos. Pues una cosa que casi todos los game producers aprenden a la mala es que esto de los juegos es lo que en cultura corporativa se conoce como “Bet Your Company” que es cuando inviertes meses o hasta años en producir algo que no sabes siquiera si se va a vender. Un Producer puede hacer cálculos del costo de desarrollar un videojuego a lo largo de un año y luego ver que la adquisición de una licencia de un engine puede recortar ese tiempo y el costo a la mitad. Cuando ve que el desarrollo no avanza según lo planeado contrata a mas ingenieros para sacar el trabajo y hasta prevee como cubrir las inminentes pérdidas. Y al final si es listo hace un trabajito para un cliente corporativo, queda tablas con las deudad y liquida la empresa. Esto le pasó porque aunque su razonamiento era perfecto para producción industrial o negocios tradicionales al no saber de programación cometió errores que lo llevaron a la bancarrota. Y es que para sacar a flote un negocio de software es necesario conocer una serie de fenómenos que solo ocurren en este tipo de negocios como que mientras mas ingenieros se unen al trabajo en etapas avanzadas mas tiempo tarda el sistema en terminarse o que lograr que un programador pueda modificar un código de otra persona cuesta mas dinero y toma mas tiempo que si el mismo lo hiciera desde cero. Incluso hay grandes tomos sobre administración del desarrollo de software y las carreras de ingeniería en computación mas serias comienzan a orientarse mas a eso que realmente a programar. Un productor o especialista en negocios que no sepa de programación puede cometer este tipo de errores y otros que le harán perder mucho dinero y sobre todo no cumplir a tiempo con los deadlines.

Los Beta Testers no pueden escapar

Finalmente llegamos a lo mas bajo de la empresa de videojuegos. Conocido en otra época como Beta Tester, un QA es un pobre diablo al que le obligan a jugar los mismos juegos malos una y otra vez durante horas para detectar errores. Si tanto los jefes encargados del departamento de control de calidad como los QA’s no saben nada de programación van a mantener las partidas durante dias y noches enteras y al final se les van a colar errores. Y eso ocurre porque probar un videojuego no es simplemente jugarlo sino que el que lo prueba debe de ser capaz de destruirlo.

Suponiendo que antes de pasarle al probador humano los programadores ya efectuaron toda una batería de pruebas automatizadas para llevar al videojuego a su límite y que el encargado de probarlo sabe de programación seguro hará pruebas que ningún jugador considerado normal haría. Por ejemplo, un programador sabe que los números se guardan en espacios de memoria de longitud limitada y no pueden crecer indefinidamente. Una prueba sería acumular todas las monedas o items que pueda para ver cuantas puede cargar el personaje, llevar el contador de puntuación a su máximo a ver si se detiene o reinicia o intentará atraer a la mayor cantidad de monstruos en una sola pantalla. Estas pruebas casi siempre conducen a un viejo error conocido como Overflow y pueden hacer que el juego se trabe u ocurran cosas extrañas. Otro tipo de prueba es la siguiente: Si conoce el concepto de banderas y toma de decisiones puede intentar cosas como tomar una vida al mismo tiempo que recibe el golpe final o intentar guardar el juego justo en el momento que va a aparecer la pantalla de game over. Incluso si conoce el concepto de máquina de estado finito y aceptores puede deducir y probar combinaciones de acciones que potencialmente podrían llevar al juego a un fallo. En fin, un QA que sepa de programación puede descubrir errores que un jugador normal no podría localizar ni aunque jugara durante años.

Ya para irme, les recuerdo que si se interesan por hacer videojuegos no pueden escapar de la programación. No importa si son artistas, productores o simple control de calidad. Les digo esto porque he visto grupos de desarrollo que no tienen programadores o estos son muy pocos en comparación con los especialistas en otras áreas. O que simplemente los menosprecian y marginan. Si sus trabajadores no tienen un mínimo de conocimiento de programación por lo menos procúrenles un asesor que si sepa y los oriente en su trabajo. Aunque viéndolo bien, si los artistas, productores o QAs no les interesa un mínimo la programación. ¿Para qué quieren dedicarse a hacer videojuegos?

julio 21, 2012 Posted by | Uncategorized | , , , | 2 comentarios

Anime, Videojuegos y Cálculo Diferencial

Tips para estudiantes de la carrera de Programación de Videojuegos

Hoy en día comienzan a aparecer universidades con carreras tan interesantes como Animación y Desarrollo de Videojuegos. Cuando yo era pequeño y no sabía nada de programación la existencia de una escuela donde uno apendiera a hacer juegos sonaba tan fantástica (en el sentido de fantasía imposible) como la de la escuela para magos de Harry Potter. Pasado un tiempo corrió el rumor de que empresas multinacionales como Nintendo tenían unos pocos centros de entrenamiento en los que capacitaban a sus ingenieros y en cierto momento a finales del siglo pasado se destapó el rumor de que esta misma empresa tenía uno de estos centros ubicado al norte del continete americano. Tal instalación era conocida como Digipen y se rumoreaba toda clase de cosas respecto a lo que pasaba ahi dentro. Para todo niño y adolescente gamer era un sueño entrar a un lugar como ese. Pero como si no fuera suficiente la enorme distancia, la muy reducida matrícula (entonces solo admitian 2 estudiantes por año) y la dificultad de las materias. Sus jefes habían puesto una sentencia que sonaba mas como una maldición para alejar a los profanos e impuros: “Si quieres aprender a hacer videojuegos con nosotros debes de ser muy bueno con las matemáticas”.

Les cuento esta historia para que los jóvenes de hoy sean conscientes de la enorme fortuna que tienen. Pues ya en México y otros paises de habla hispana existen carreras donde pueden aprender a hacer videojuegos. Tal vez no sean tan buenas como Digipen pero al menos cuentan como carreras profesionales y se encuentran registradas ante el gobierno. Existen carreras para todos los gustos y presupuestos que me llevaría mucho tiempo mencionar en detalle. De momento puedo mencionarles la Licenciatura en Animación y Arte Digital del ITESM que se da en una escuela de mucho prestigio y se enfoca al lado artístico y la Licenciatura en Multimedia y Animación Digital impartida en la UANL que se concentra mas por el lado de la ingeniería y tecnologiá. Pues bien, me han llegado rumores, sobre todo de esta última pero no dudaría que ha pasado también en otras escuelas de que hay un gran desencanto en los alumnos que entran a estas carreras.

Y aquí es donde entra la que podría llamarse como “La Maldición de Digipen” pues como ya habrán adivinado la principal queja sobre estas carreras es que tienen demasiadas matemáticas. No voy a regañar a los gamers y otakus ingenuos como muchos otros lo han hecho en internet sino que les voy a explicar en términos sencillos el porqué las matemáticas se relacionan tanto no solo con los videojuegos sino inculso con la animación tanto tradicional como por computadora.

Imagino que en este mismo momento varios de mis lectores se han de haber atragantado con un Pocky. Voy a darles un instante para que le den un trago a su Ramuné, terminen su partida en linea de Ragnarok y se les pase el susto. Estoy seguro que estos lectores no pueden creer que exista una relación entre las chicas mágicas en uniforme escolar, los emocionantes videojuegos de aventuras en linea y las aburridas y odiadas matemáticas. Pero existe. En esta entrada me voy a concentrar en el cálculo diferencial porque es el que mas se relaciona con la animación. Les recomiendo que sigan leyendo porque no los voy a aburrir e incluso sospecho que esto podría hasta llegar a gustarles.

Primero veamos lo que es la animación. Para que el ojo tenga la ilusión de que el cine y la animación tienen movimiento se presenta una secuencia rápida de imágenes donde cada una es ligeramente diferente de la anterior. Si lo hacemos bien, el ojo interpretará que esa secuencia de imágenes fijas tiene movimiento continuo. Los animadores antiguos hacían esas secuencias de imágenes con lapiz y papel que luego pasaban a una película cinematográfica. Con el tiempo mejoraron su técnica reciclando partes de dibujos, fondos y composiciones primero con materiales físicos y luego con computadoras. Pero sin importar cuanto ha avanzado la animación. La idea de presentar una secuencia rápida de imágenes con ligeros cambios de una a otra y que el ojo humano ve que se mueve sigue siendo la misma. Lo que debe de quedar por ahora claro es que para que la animación funcione los cuadros de animación deben de correr a suficiente velocidad y el cambio de uno a otro no debe de ser tan grande como para notarse. La animación es un cambio de posición con respecto al tiempo.

Ahora veamos como esto se relaciona con los videojuegos. Los juegos presentan también una secuencia de imágenes fijas que el ojo registra como una animación. La diferencia es que el videojuego es interactivo. La estructura de código mas importante en un videojuego y que hace posible esa interactividad se llama “Gameloop”. Se trata de un ciclo infinito en el que primero se leen los controles, se ejecuta el programa que controla el juego y al final se genera un cuadro de animación que se muestra en pantalla. En los juegos de acción rápida esto sucede unas 60 veces por segundo. Como esto es muy rápido el efecto es una secuencia rápida de imágenes fijas. Pero a diferencia de la animación que conocemos aquí esos cuadros de animación simplemente se pierden luego de que los vemos. A este proceso en el que se genera un cuadro de animación en una fracción de segundo y que no se guarda en ninguna parte es lo que se conoce como “Animación en Tiempo Real” y es necesaria para que un videojuego presente una animación con la que los jugadores puedan interactuar.

Si nos metemos mas a fondo en el Gameloop vemos que la lógica del juego debe de pensar en esa única fracción de segundo en que existe entre el anterior cuadro de animación y el siguiente. Para que el movimiento sea real y los controles se sientan bien hay que saber que tanto debemos de cambiar la escena. Si lo hacemos bien la animación se verá realista y los personajes jugables responderán a las órdenes del jugador. Ahora veamos un ejemplo muy simplificado de animación normal e interactiva.

Digamos que tenemos una linea recta por la que debe de volar una nave espacial. La nave comienza en el paso cero y cada cuadro de animación avanza uno de esos pasos. Si reproducimos la secuencia de imágenes vamos a crear una animación de la nave que avanza hacia adelante. Si quisiéramos que la animación fuera interactiva, digamos que queremos que la nave avance solo cuando oprimimos un botón haríamos lo siguiente:

Primero colocamos la nave en el punto cero y luego entramos al gameloop. Al inicio del gameloop vamos a ver si el botón está siendo presionado por el jugador. De ser así incrementamos en uno la posición de la nave. Si el botón no está siendo presionado no se aumenta la posición. Al final del gameloop generamos la imagen con la nave en su nueva posición. Podemos hacer que la condición para salir de ese gameloop infinito sea que la nave llegue al paso 100 o que se oprima el botón para terminar el juego. De ese modo tenemos una animación interactiva en la que hacemos que la nave avance cuando presionamos el botón.

Si presentamos la animación a una velocidad de 60 cuadros por segundo la nave hará su viaje en poco mas de segundo y medio en un vuelo ininterrumpido. Desde el punto de vista del programador la nave cambia de posición un poco en cada ciclo del gameloop. Ahora veamos una pequeña sorpresita.

La Animación son pequeños incrementos de movimiento respecto a pequeños incrementos de tiempo…
¡Y eso se llama Diferenciación!

La sorpresa que les tengo es que lo que acaban de leer en estos últimos párrafos es puro cálculo diferencial aplicado. Y mientras me imaginan poniendo una Trollface por haberlos hecho leer algo de matemáticas yo les voy a explicar con palabras sencillas como el ejemplo de animación es lo que lo que se llega a ver en el primer semestre de cualquier ingeniería.

La animación es movimiento. El movimiento se puede representar matemáticamente como la distancia en función del tiempo. En el ejemplo de la nave el movimiento es lineal a velocidad constante y sin aceleración. Se trata de una función lineal de primer grado. Ahora veamos donde entra el cálculo diferencial.

No voy a meter signos raros intercalados con las palabras “sea”, “tal que” y “entonces” porque ya los he trolleado demasiado para una sola entrada. Solo les voy a decir que el cálculo diferencial estudia el cambio de las funciones a medida que avanzan en pasos cada vez mas pequeños. Volviendo a la animación. A medida que el cambio en la secuencia de imagen y el tiempo que hay entre un cuadro de animación y el siguiente se reducen la animación se va haciendo mas y mas real hasta llegar a un punto teórico donde los incrementos se acercan al cero y suceden tan rápido que la animación comienza a ser igual al movimiento que existe en nuestro mundo físico.

El movimiento que definimos de la nave es a velocidad constante (un paso por cada unidad de tiempo) y no tiene aceleración (no aumenta su velocidad ni la disminuye). Al avanzar un paso por cada cuadro de animación la nave tiene una velocidad de un paso por cada unidad de tiempo. Y aquí viene otra sorpresita. Ustedes acaban de aplicar la derivada a una función de movimiento sin aceleración. Cuando diferenciamos una función de movimiento sin aceleración el resultado es una constante. En el caso de la animación de la nave esa constante es uno. Si quisieran cambiar la velocidad o definir movimientos mas elaborados, el proceso es el mismo.

De momento solo voy a mencionar todo lo que pueden hacer con esta técnica en el mundo de la animación y los videojuegos. Las funciones de segundo grado se usan para movimientos con aceleración constante como los que involucran a la gravedad en los juegos de plataformas, y las de tercer grado pueden simular la aceleración variable de un motor que varía su potencia. Hay muchas cosas mas de animación que pueden resolver tan solo sabiendo aplicar el cálculo diferencial. En un futuro mas o menos lejano les explicaré mas sobre el tema.

¿Todavía no te interesan las matemáticas?

Personalmente creo que esa aversión por las matemáticas que muestran los aspirantes a programadores de videojuegos viene en parte por los maestros que aunque dominan el tema no saben ni les importa nada del mundo gamer. Por otro lado, si los estudiantes supieran que para lograr un determinado efecto especial necesitan aprender cierta rama de las matemáticas probablemente no le tendrían tanto desprecio. Por ejemplo, a mis amigos y a mi nos tomó mas de un semestre darnos cuenta que para hacer una cámara movil necesitábamos entender el cambio de base en un sistema de matrices ortogonales. Si de inicio hubiéramos visto ese mismo tema en la clase de Algebra Lineal lo mas seguro es que nos hubiéramos quedado dormidos en clase. Pero si en la búsqueda por lograr una cámara movil en un juego 3D nos hubieramos topado con el cambio de base de matrices ortogonales la cosa habría sido mucho mas emocionante.

Tengo que admitir que la situación actual de estos estudiantes me resulta por completo desconocida. Pues cuando llevé las materias de matemáticas en la carrera ya había visto esos temas en libros de computación (especialmente la materia de Matemáticas Discretas) o por lo menos había escuchado que algunos de esos temas se relacionaban con la programación de videojuegos. Ya para terminar esta nota que ha quedado tan larga, mi consejo es que si quien lee esto tiene un cargo importante en alguna universidad (y si conocen al Rosas pásenle el enlace a esta página) organice las clases de modo que las matemáticas no sean tan obvias. Si comienzan la clase con “Vamos a hacer un Angry Birds pero necesitamos averiguar como programar el lanzamiento de los pájaros con la resortera” será mucho mas ameno y divertido que si empiezan con un “Y esto es un polinomio de segundo grado y deben de aprenderlo bien porque les va a servir cuando hagan juegos”. Al final de ambas clases los alumnos sabrán como se relacionan los polinomios de segundo grado con el tiro parabólico y el movimiento con aceleración constante pero los primeros habrán puesto mas ateción y lo mas importante: Habrán aprendido a resolver un problema de programación de videojuegos usando las mismas matemáticas que usaría un programador verdadero. Si los alumnos van con la idea de que hay un conocimiento oculto que les permitirá hacer sus juegos y los maestros los reciben con la conciencia de que sus alumnos quieren aprender cosas que les van a servir para hacer videojuegos y animación ambos se verán beneficiados y con ello será posible levantar en latinoamérica verdaderas escuelas de animación y desarrollo de videojuegos. Pues recuerden que hasta hace poco el decir que ingresarían en una escuela de programación de videojuegos sonaba tan increible como anunciar que pretendían aprender a manejar el Sable de Luz con el Maestro Yoda o ir a entrenar al Santuario para obtener la Armadura de Pegaso. Hoy en día ya existen verdaderas carreras universitarias que aunque no sean las mejores, al menos ya existen. Ustedes tienen una oportunidad que muchos otros nerds de hasta hace poco nunca tuvieron, y lo mas importante. Muchos ingenieros arruinaron su vida profesional o se amargaron en la carrera para lograr que las universidades tomaran en serio esta clase de temas. Y si un dia se sienten decepcionados por estas escuelas, recuerden que pueden recurrir a mi aunque sea para tener a alguien que los escuche quejarse.

junio 15, 2012 Posted by | Uncategorized | , , , , | 3 comentarios

¿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.

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

Informe asm86[006]

–3D, Ciencia de Revista y Vividores–

En Noviembre del 2010 escribí el último informe asm86. Había decidido ya no escribirlos para ya no quitarle el tiempo a la gente que lee estos escritos en busca de programación en ensamblador. He decidido retomarlos para mantener informados a los lectores de cambios y demás cosas intrascendentes. Por lo que pueden perfectamente ignorar estas entradas si lo que buscan es programación.


¿Y la serie de Programacion Gráfica?

El tema de hoy es sobre la serie de programación gráfica que inicié desde octubre del 2011. La verdad es que esa serie resultó ser mucho mas extensa de lo que pensaba. Tanto así que una de cada nueve entradas escritas en toda la historia de este blog pertenecen a esa serie. Por si fuera poco, aunque esto no se si es bueno o malo. Muchos estudiantes que por lo que se ve ni siquiera han terminado la secundaria encuentran las explicaciones de esa serie muy útiles para hacer sus tareas de física. Espero que al menos esas entradas les inspiren a estudiar algo con valor científico o por lo menos los interese por las matemáticas. En fin, quiero suspender esa serie y rematarla con unos pocos ejercicios prácticos. De ese modo podrán usarla para sus cursos en las nuevas carreras de desarrollo de videojuegos que tanto están proliferando en latinoamércia. Puede que no sean tan valiosas como la visita anual de un instructor certificado en el uso del último y mas costoso paquete de diseño pero para los 3 o 4 que si quieren programar de verdad y no solamente hacer prácticas profesionales (o internships si no es escuela pública) seguro encontrarán esa serie como algo valioso.

Se lo que muchos de ustedes han de estar pensando. Que esperaban que esa serie les dijera como hacer un videojuego 3D de última generación. Lamento decirles que eso no es algo que se aprenda en unas pocas semanas leyendo unas cuantas docenas de notas en internet. Yo mismo llevo estudiando estas cosas desde 1997. Año en el que una buena parte de los que leen este blog (sobre todo los que vienen para que les ayuden con la tarea) ni siquiera habían nacido. Por si fuera poco, en esa serie no quise incluir nada de código de ningún lenguaje para evitar que se convirtiera en otra colección de llamadas a API y scripts de engine que tanto abundan hoy en internet sobre todo en las páginas de los “profesionales” del videojuegos. Y algunas ni a eso llegan.

El verdadero propósito de la serie de programación gráfica para principiantes fue inducirlos a lo que es en realidad la programación gráfica: Matemáticas. En realidad desde la primera entrada donde decía que solo necesitaban lapiz, papel y calculadora hasta la última en la que se generan vistas arbitrarias de una escena en 3D no necesitamos mas poder que el de una calculadora escolar. O una hoja de cálculo si es que no tienen mucha paciencia. Suponiendo que supieran la suficiente programación para conectar puntos con lineas rectas y conocieran los algoritmos mas elementales de programación de videojuegos lo mas avanzado que podrían hacer sería un videojuego como el de la imagen que acompaña esta entrada. Un juego vectorial de Star Wars creado en 1983. O también pueden tomar un engine y usarlo con un mínimo conocimiento de lo que están haciendo. Pues es para darse un facepalm ver como desarrollladores autodenominados profesionales tienen problemas tan tontos como el de que las unidades terrestres no se quedan pegadas al piso o que las cámaras nunca hacen las tomas que quieren.

En fin, no dejo de sentirme como un troll por este asunto así que les adelantaré que van a necesitar hacer por lo menos una multiplicación de matrices con el lenguaje de programación que ustedes mejor entiendan o que usen una hoja de cálculo porque en las últimas entradas vamos a ver como se diseña una escena vectorial y se le toman “fotografías” en diferentes partes del espacio. Ya en el futuro lejano veré si continuo en una segunda serie donde trate temas como iluminación, detalle de superficie, eliminación de partes ocultas o técnicas de animación. Pero eso será muy en el futuro, pues primero tengo que explicarles conceptos matemáticos que no hemos visto como funciones, cálculo vectorial, derivadas parciales y otras cosas que mejor no les platico para que no se decepcionen desde ahora. Espero que con esta primera serie que está virtualmente terminada (ya no va a haber temas nuevos sino solo practicar lo ya visto) sean por lo menos capaces de entender lo que es la verdadera programación gráfica y desarrollen sus propias cosas. Ahora pasemos con temas menos tecnológicos.

Los Vividores de la Ciencia

Existe la leyenda de cierto ejército cuyo nombre está prohibido mencionar en Internet había logrado increibles avances científicos en un período tan corto que hasta hoy en día hay quien asegura que habían recibido ayuda de los extraterrestres. Cuando les preguntaron a sus ingenieros como habían logrado tanto en tan poco tiempo mencionaban que la única diferencia era que su ciencia era diferente a la que acostumbraban hacer sus enemigos. Y que por desgracia es como se hace la ciencia hoy. Ellos aseguraban que la manera equivocada de hacer ciencia era hacerla demasiado teórica. Cuando la ciencia es demasiado teórica y poco práctica el resultado es que tenemos a un grupo enorme de personas que cuesta mucho mantener y que no producen bienes útiles ni comercializables fuera de unas pocas publicaciones que solo unos pocos intelectuales en el planeta entienden. Ellos decían que no podía invertirse dinero real en una ciencia teórica y que trabajando de este modo podían pasar generaciones antes de obtener verdaderos avances. Tal vez fue por la esperanza de terminar un arma que evitara su inminente derrota o que sus ideas sobre la ciencia fueran ciertas. El asunto es que ese modo parasitario de hacer ciencia, que para evitarme problemas voy a llamar “Ciencia de Revista” parece estarse extendiendo en latinoamérica en eso que ahora llaman desarrollo de videojuegos. Y no parece ser que sea con el inocente fin de “impulsar el conocimiento” que unos pocos académicos persiguen. Mas parece un plan de grupos bien definidos para hacerse de dinero facil y mano de obra barata.

Estos grupos usan las universidades como fuente de mano de obra casi regalada y para ahorrarse obligaciones legales. Esto no es nuevo y lleva haciéndose desde hace bastante. Lo que me entristece es que con ese pretexto se están perdiendo valiosos recursos. De hecho se rumorea que grandes eventos de eso que ahora llaman “geeks” se hacían tan solo para sacarle dinero al gobierno y a los patrocinadores ahora ya no van a ser tan grandes. Creo que alguien ya se está dando cuenta de que las empresas que dicen apoyar a impulsar no están rindiendo como negocios ni pagando los impuestos que deberían de pagar por haber ayudado a su creación. Yo propongo que el conocimiento debe de ser libre y que las empresas de videojuegos en latinoamérica deben de ajustarse a las mismas reglas que el resto de las empresas de la región. Eso de darles dinero del gobierno por proyectos no redituables hechos por adolescentes que se la pasan todo el día chateando en Facebook no es la forma de fomentar el desarrollo tecnológico y mucho menos cuando el salario de estos ‘trabajadores’ no alcanza los niveles mínimos con el pretexto de que se trata de ‘internships’. Estos grupos ni siquiera están fomentando el empleo porque solo contratan a gente de círculos muy pero muy elitistas y no precisamente porque sean los mejores. Y a los pocos que contratan ni siquiera se trata de empleos permanentes pues rara vez trabajan por mas de 2 años seguidos. Espero que si algún funcionario público encargado de darle dinero a estos vividores lee esto recapacite y mejor utilice ese dinero para mejorar la infraestructura de comunicaciones digitales que buena falta hace en latinoamérica. Sobre todo la de las universidades públicas porque es una verguenza que los estudiantes no puedan tener acceso a Internet luego de haberse gastado el cheque de todo un mes en el enganche de sus netbooks a crédito.

Por ahora los dejo y mejor me pongo a programar, que tengo mucho que leer y como recordarán la lectura es la tarea en la que un programador invierte mas horas.

abril 22, 2012 Posted by | Uncategorized | , , , | 1 comentario

¿Porqué los Religiosos Odian los Videojuegos? 3

–Parte 3: Duelo de Caballeros–

Esta es la tercera y última parte sobre entradas que tratan de explicar el porqué los religiosos odian a los videojuegos. En las entradas anteriores vimos que sin ser por ello buenos o malos, los videojuegos y su cultura se relacionan mucho con las ideas del pensador europeo del siglo XIX llamado Federico Nietzsche al manejar ambos el mejoramiento personal por medio de la búsqueda del poder, la emoción de vencer las limitaciones que se le presentan a uno en la vida y la importancia de contar con información sobre como funciona el mundo (real o virtual) para poder obtener lo que uno quiere de él. Estos tres conceptos tan comunes en los videojuegos ya eran conocidos hace mas de 100 años como “La Voluntad del Poder”. También vimos que este tipo de ideas aunque hoy puedan parecernos muy buenas no le hicieron la menor gracia a los religiosos de aquellos tiempos y desde ese entonces se han encargado de desprestigiar a tan importante filósofo y declarar sus escritos como diabólicos. En esta entrada, que ya no va a ser tan neutral como las anteriores, voy a dejar claro que este centenario sistema de ideas que hoy ha revivido gracias a los videojuegos lejos de ser “diabólico” puede dar lecciones muy buenas sobre como ser mejor persona y con ello beneficiar a la sociedad en la que uno vive.

Por desgracia cualquier tema que se relacione aunque sea remotamente con las creencias no puede tomarse a la ligera. Incluso hay muchos creyentes que están convencidos que fuera de los estrictos límites de la fe que profesan (incluidas otras religiones con las que compartan sus orígenes) toda la gente es malvada. De hecho tengo que admitir que la relación entre los videojuegos y las ideas de Nietzsche no fue descubierta por mi sino que le escuché en una conferencia de un grupo de fanáticos religiosos y conspiranóicos que afirmaban que tras los videojuegos había una poderosa sociedad secreta que se había propuesto controlar mentalmente a los gamers para así poder dominar el mundo. Y la única prueba que tenían para demostrar lo diabólicos que eran los videojuegos era la pelea entre Nietzsche y los religiosos del siglo XIX sin detenerse a pensar si realmente lo que enseñaba Nietzsche, y por ende los videojuegos era malo.

No voy a tratar de ‘desconvertir’ a nadie cuyo sistema de creencias diga que las ideas de Nietzsche que se presentan en los videojuegos son malas. Ellos van a sostener esto por el simple hecho de que sus líderes así se los ordenan. Tan solo voy a mostrarle a aquellos gamers y la gente que vive cerca de ellos que los videojuegos no solo son cosa de matar y que incluso los juegos que la gente considera mas violentos pueden enseñarnos valiosas lecciones y ayudar a otras personas sin por ello permitir que se aprovechen de nosotros.

Compartir y Trabajar en Equipo

Todos los que han jugado algún videojuego con capacidad de multijugador cooperativo saben saben que hay una gran diferencia entre compartir y dejarse explotar. Así como que no es lo mismo trabajar en equipo que dejarse a la voluntad de los demás. Fuera del mundo de los videojuegos diferenciar estas cosas es muy dificil a menos que se trate de una situación de peligro potencial. Los videojuegos ofrecen esa misma situación de peligro potencial pero al ser todo virtual no hay verdadero peligro. Algunos ejemplos genéricos sobre compartir y trabajar en equipo se dan cuando un jugador está a punto de perder y el resto de sus compañeros se ponen de acuerdo para protegerlo hasta encontrar en su camino el equipo de primeros auxilios con el que puedan curarlo. Y hacen esto porque saben que cuando a ellos les pase, sus amigos también lo van a ayudar o de lo contrario quienes queden de pie al final no sobrevivirán solos por mucho tiempo. Esto se aprecia muy bien en el juego de Left 4 Dead.

Otro ejemplo en este tipo de juegos es el balance de las armas y habilidades. Muchos de estos juegos están desbalanceados a propósito para obligar a trabajar juntos a los jugadores si lo que quieren es ganar. De modo que no hay armas o equipo que sea mejor o peor por si mismo sino que su efectividad depende de quien lo use. De modo que si el personaje de un jugador es por ejemplo especialista en explosivos y en su camino encuentra un rifle de alto poder sabe que lo mas inteligente es dárselo a su compañero francotirador que es experto en el manejo de este tipo de armas y que este a su vez puede protegerlo desde la distancia cuando el primero tenga que acercarse a las unidades enemigas para colocarles sus bombas. Un juego donde se ve esto es Team Fortress o cualquier otro juego de guerra con elementos tácticos.

Todo esto, junto con un liderazgo balanceado en el que todos los jugadores se ponen de acuerdo para seguir una estrategia en lugar de solo obedecer ciegamente a un lider que probablemente no sea tan buen estratega hace que un equipo de gamers llegue a ser muy poderoso y hasta llegue a ser reconocido entre las comunidades en linea. Es decir que se ven de manera medible los beneficios de compartir y hacer equipo. Si los videojuegos realmente fueran tan malos como dicen no ocurriría esto. Y eso por no mencionar las mejoras sociales que trae el hacer equipo con otros jugadores en otras partes del mundo.

Uso eficiente del tiempo y el dinero

Otra queja contra los videojuegos sobre todo de parte de madres gritonas es que los gamers solo pierden el tiempo y el dinero con los videojuegos. Si bien hay juegos que demandan muchas horas y que no se caractarizan por baratos hay juegos que enseñan que el buen manejo del tiempo y el dinero es algo muy importante. Y los juegos que mas enseñan esto son los de estrategia en tiempo real como Starcraft. Quienes son aficionados a estos juegos saben que cada segundo que dejan pasar es un segundo en el que el ejército del enemigo aprovecha para crecer. Que debe de tener siempre una reserva de minerales para cuando la necesite y que mientras guia a sus unidades por el campo de batalla debe de mantener a sus fábricas trabajando. El aficionado a los juegos de estrategia incluso desarrolla cierta conciencia laboral y sabe que sus trabajadores aunque no sean tan heróicos como sus soldados debe de invertir en ellos y protegerlos, pues sabe que si su rival les pone las manos encima y mueren su ejército será el siguiente en morir por la falta de suministros.

El valor del trabajo constante y la experiencia

Otro mito sobre los videojugadores es que son perezosos y que dedican demasiado tiempo a sus juegos. Es triste ver como el no ser capaz de mantener la atención en una sola cosa por períodos largos de tiempo comienza a verse no solo como algo aceptable sino incluso como una especie de virtud a la que algunos antropólogos comienzan a considerar como una ventaja evolutiva que les ayuda a reproducirse. El Gamer sabe que la experiencia y el dinero solo se consigue en largas jornadas de trabajo duro y esto por supuesto lo ha aprendido de los juegos RPG, tanto locales como en linea. En estos juegos los personajes creados por el jugador pueden volverse cada vez mas fuertes e ir atesorando riquezas a fuerza de librar y ganar muchas pero muchas batallas.

Y hablando de ganar batallas, mas que todos los tesoros fabulosos o las poderosas espadas que pueda encontrar, el gamer aventurero sabe que el bien mas valioso en un juego RPG es la experiencia y que si el rival al que se enfrenta tiene un nivel de experiencia mucho mayor que el de él no podrá ganarle nunca sin importar la habilidad que tenga en el manejo de los controles. Del mismo modo, un gamer conoce sus limitaciones gracias a esto mismo y sabe que aunque hay monstruos fuertes que dan mucha experiencia cuando uno los vence no siempre se tiene la suficiente experiencia para vencerlos. El videojugador sabe que debe de ganar experiencia para poder tan siquiera desafiarlos. Esto es especialmente importante en las batallas contra los grandes jefes.

Como historia personal, les diré que cuando estudiaba cálculo ganaba puntos de experiencia no solo leyendo libros sino resolviendo muchos de estos problemas en la comodidad y seguridad de mi casa. Puede sonar tonto pero la situación era la misma que en cualquier juego RPG donde el enfrentar al mismo tipo de monstruo una y otra vez me permitía obtener la experiencia necesaria para ganar las batallas contra los jefes, que en el caso de los problemas de cálculo se trataba de los exámenes.

Paciencia y tolerancia a la frustración

Otra cosa que los gamers saben es que se aprende mas de un fracaso que de mil triunfos. Al ser interactivos los videojuegos hacen responsable al jugador de sus propias victorias y derrotas. Vamos a olvidar por un momento que existen juegos con errores de diseño que los hacen imposibles de ganar o que el control está tan mal programado que el sistema no obedece sus comandos. Cuando el juego es realmente bueno el jugador seguirá jugando sin importar cuantas veces pierda e incluso cuando ya no pueda continuar (porque se le acaben los continues) sabe que siempre puede comenzar de nuevo. De hecho en la era en las que existieron los salones de videojuegos conocidos como Arcades, los gamers de entonces sabían que para disfrutar mas su estancia en esos lugares lo mas inteligente era volver a empezar desde el principio cada que perdían. Con lo que podían pasar mas tiempo practicando por horas en los niveles mas fáciles en lugar de solo minutos en los mas difíciles.

El concepto de reto es lo mas importante en el diseño de un videojuego, pues este no debe de ser tan abrumador como para que sea imposible de ganar ni tampoco tan facil como para ser terminado en un solo fin de semana. Eso sin mencionar que en el caso de los videojuegos cuando uno es derrotado realmente nada de valor se pierde. Y eso nos lleva a la última de las enseñanzas que los videojuegos les dan a los gamers para hacerlos mejores personas.

Se Juega Solamente Por Diversión

Este sin duda es una de las cosas que personalmente mas me gustan del mundo de los videojuegos. Los videojuegos aportan la misma emoción de riesgo que otras actividades mucho mas autodestructivas a las que eufemísticamente se les llama “juegos” pero a diferencia de estas nadie sufre pérdidas que puedan afectarlo en la vida real. Y si nada se pierde en los videojuegos es precisamente porque nada se gana. El único premio que los videojugadores ganan es el respeto y la admiración de sus compañeros cuando se juega en equipo o el probarse a si mismo en los casos de los juegos para un solo jugador.

Un gamer también tiene un sentido del honor que no tendría si los videojuegos involucraran apuestas con dinero real como ocurre en esas estafas organizadas a las que por mero accidente etimológico también se les llama “juegos”. Y es que un gamer no hace trampas, pues sabe que es mucho peor ganar con trampa y que lo descubran que perder a manos de otro gamer mucho mas aventajado que él. Incluso si ha hecho trampas y no lo descubren, como no ha ganado nada real no se siente tan bien consigo mismo que si hubiera obtenido una victoria con honor.

Los antiguos sabios decían que al único que no se le puede mentir es a uno mismo, y esto queda demostrado en los jugadores que hacen trampa en los juegos para un solo jugador. Si tomamos en cuenta que en los videojuegos no hay ganancias ni pérdidas reales hacer trampa en los videojuegos de un solo jugador es una reverenda idiotez. Pero sucede. Entiendo a la gente que aprovecha una falla de un juego muy dificil para poder terminarlo ya que con el tiempo intentan terminar el mismo juego sin sacar ventaja de esa falla. Lo que no entiendo es a los jugadores que apenas iniciar la partida introducen todos los códigos “ocultos” para obtener armas y vida ilimitadas. Tengo la teoría de que la gente que hace esto es porque su existencia es tan miserable y tan falta de triunfos y reconocimiento personal que hacen esto para engañarse a si mismos y sentir que realmente son buenos para algo. Esto no es muy diferente al caminante frustado que le da una patada a un perro callejero para quitarse de encima su sentimiento de inferioridad. Quienes introducen los códigos de armas y vida ilimitada apenas arrancando el juego están muy por debajo que aquél caminate frustado, pues ni siquiera tienen el valor de patear de verdad al perro por miedo a que este los muerda.

Y sobre esos usuarios (porque no merecen llamarse gamers) ya hay algunos chistes. Hay juegos que le dan un final malo a quienes hacen este tipo de trampas e incluso recuerdo en el viejo juego de Rise of the Dragon en el que si el jugador perdía demasiadas veces seguidas en ciertas escenas el juego se burlaba de él y le ofrecía “pasarle el nivel” si consideraba que este era demasiado dificil. Es como si la máquina le pusiera uno una trollface y le dijera a uno que es tan imbecil que si quiere puede ver el final del juego con tan solo presionar un botón. E incluso hay algunos aficionados que pueden considerar que presionar ese botón era demasiados dificil.


Mis Heréticas Conclusiones…

Ya para poner fin a esta serie de el porqué los religiosos odian los videojuegos quiero rematar con unos pensamientos heréticos. Aunque los mas creyentes están convencidos de que fuera de los límites de su religión todos son malvados, la humanidad ha considerado que actividades criminales como el robo y el asesinato son malas muchísimos siglos antes de que fueran fundadas las religiones vigentes en nuestra época. Basta con mencionar a los antiguos sumerios y su código escrito en piedra. Incluso en lugares aislados donde no ha llegado la religión existen personas decentes que hacen cosas buenas y criminales que hacen daño a otros. Del mismo modo que existen personas honradas y deshonestas entre los que se dicen creyentes. Y en cuanto a eso que llaman violencia en los videojuegos. Yo prefiero que la violencia exista solo del otro lado de la pantalla y que de este lado se den tan solo unas cuantas groserías entre gamers furibundos. Ahora vamos a conectarnos a una partida de nuestro videojuego favorito en linea y vamos a “matarnos” para así resolver entre nosotros los gamers una única cuestión: ¿Quíen es el Bueno?.

marzo 25, 2012 Posted by | Uncategorized | , | Deja un comentario

¿Porqué los Religiosos odian los Videojuegos? 2

–Parte 2: El Esclavo Rebelde–

Como advertencia para los que no han leido la primera parte, quiero dejar claro que este escrito no es un ataque directo contra ninguna religión o las creencias de nadie en general. Solo trato de explicar el porqué estos grupos atacan a los videojuegos y he llegado a la conclusión muy personal de que simplemente la cultura de los videojuegos, independientemente de la temática o contenido de estos no se apega mucho que digamos a las costumbres sociales de las personas mas religiosas sin que por ello ninguno de los dos grupos sea bueno o malo. Tan solo son dos formas de pensar diferentes que trato de presentarles desde un punto de vista neutral. Cosa que me resulta sumamente dificil. Ahora que ya han leido esto pueden apartar de mi esas antorchas y seguir leyendo.

En la primera parte de este artículo se explicó que la gente religiosa ataca a los videojuegos porque la cultura que hay alrededor de ellos y de la gente que los juega aunque no es en si “mala” tiene parecidos asombrosos con las ideas del filósofo europeo del siglo XIX conocido como Federico Nietzsche. En la cultura gamer se considera que un jugador “Bueno” es aquel que comienza debil pero se va haciendo cada vez mas y mas fuerte a medida que juega y aumenta su nivel de habilidad y que encuentra emocionantes los retos y las dificultades del mundo virtual. Ideas que el pensador antes mencionado se refería como “La Voluntad del Poder”. También vimos que este intelectual hizo en su tiempo enojar mucho a la iglesia con sus ideas y que aún hoy ya entrados en pleno siglo XXI sigue viendo estas ideas con muy malos ojos. En esta segunda parte vamos ver el otro lado de la historia. El porqué los grupos religiosos consideran la cultura gamer, tan relacionada con las ideas de Nietzsche como una verdadera amenaza para ellos.

Como ya se dijo antes, en el mundo de los videojuegos el bueno es el poderoso o bien el que comienza debil pero va aumentando su nivel a medida que progresa en su aventura. Mientras que el jugador malo es el que no puede progresar aún a pesar de llevar ya algún tiempo jugando. Entre los gamers a tales jugadores ineptos los llaman “Noobs”. En general, este tipo de jugadores no toman demasiado en serio los juegos y con frecuencia dejan de jugar o si siguen jugando con frecuencia recurren a trampas o en el caso de los juegos en linea a vivir a expensas de otros jugadores mas experimentados. Pero en general, la gente que no tiene este tipo de cultura en cuestión en general no juega o si juegan no pasan de ser eso que llaman ahora jugadores casuales.

En la entrada anterior también discutimos que el concepto de “bueno” depende mucho del tipo de ideas que tenga la persona a la que se le pregunte. Si vamos con alguna de esas personas que atacan a los videojuegos y los acusan de diabólicos y les preguntamos quien es el bueno la respuesta va a ser algo como esto:

–El hombre bueno es bondadoso, lleno de piedad, ayuda los que nada tienen y se sacrifica por ellos, que no es orgulloso, que obedece y cumple con todo lo que se le ordena, que no es ambicioso ni soberbio y sobre todo que vive con mucha fe y sobre todo que tiene fe y temor a su respectivo dios (esto último lo agrego para no quedar mal con ninguno de los dioses)”

Ahora que vemos esta definición se ve porqué a esta gente no le gusta jugar videojuegos. Alguien que piensa de esa manera no tiene la motivación para progresar en un juego porque si no es orgulloso entonces no le importa conseguir grandes puntuaciones, si no es ambicioso no le interesaría construir personajes con niveles altos en los juegos de aventura en linea, si no es combativo nunca va a enfrentarse a otros jugadores (ni siquiera a los virtuales) y si solo actua por voluntad externa en lugar de la suya propia se sentiría perdido en un videojuego que le presenta un mundo que responde a cada una de sus acciones y en el que para avanzar necesita tomar decisiones propias. Por no mencionar otros motivos que al sonar demasiado siniestros para gente ajena a estos grupos sonarían mas a ataque intolerante. Ahora veamos el porqué las ideas de Nietzsche hicieron enojar tanto a los religiososo del siglo XIX y lo siguen haciendo hasta el dia de hoy.


El Buen Esclavo No se Rebela

En sus obras, Nietzsche decía que lo que la iglesia de su tiempo predicaba era la “Moral del Esclavo”. Que las virtudes que debía de tener un buen creyente eran aquellas que uno busca a la hora de elegir un sirviente como ser obediente, nunca rebelarse, depender siempre de un amo, no pensar por si mismo y lo mas importante aceptar lo que se le dice sin cuestionarlo nunca. Decía también que aunque hablan mucho de tratar bien a otros y perdonarlos, en secreto (y algunos no tan en secreto) en realidad aguardan con impaciencia el dia en el que todo el mundo sea consumido por la ira divina cuando solo ellos sean los que se salven y ver desde su nubecita como todos los demás pecadores arden en el infierno.

A decir de este mismo pensador, otra cosa muy mal vista entre los creyentes es el considerar que uno tiene el control sobre su propia voluntad y o que las propias acciones pueden cambiar su vida de ninguna otra manera que no sea el condenarse para toda la eternidad. De hecho un típico regaño antiguo que los padres hacían a sus hijos poco obedientes era el de ¿Te mandas solo?. Con lo que queda claro que el actuar por voluntad propia para el creyente o que uno es responsable del resultado bueno o malo de sus acciones es un insulto a la divinidad. Ahora repasemos los 3 puntos originales que cumplen los buenos gamers y comparémoslos con lo que es ser religoso.

Hacerse mas fuerte es malo.- Para los creyentes ser debil es bueno. No lo dicen de ese modo de manera abierta pero ellos consideran que el debil no solo debe de mantenerse tal y como está sino que incluso el fuerte tiene la obligación de poner su poder a su servicio. Se considera que el rico debe de darle sus riquezas al pobre para que las malgaste en comida en lugar de mostrarle como hacer negocios. El valiente debe de arriesgar su vida protegiendo al cobarde para que este conserve su miserable existencia en lugar de entrenarlo para que aprenda a pelear sin miedo y que el sabio debe de resolverle todos sus problemas al ignorante en lugar de enseñarle a resolverlos el mismo y otras lindeces que en el mundo de los videojuegos serían conductas típicas de los despreciables Noobs pero que para el creyente son auténticos mandamientos divinos.

Luchar contra las limitaciones es malo.-El otro punto que hace a los videojuegos lo que son es el de vencer limitaciones. Entre los religiosos se considera que si una persona tiene algún tipo de limitación o problema personal mas o menos constante es una carga que debe de soportar y no solo no hacer nada para deshacerse de ella sino incluso que tampoco debe de quejarse. Las limitaciones, problemas propios y otros dramas que uno va arrastrando. El buen creyente debe de aceptar tales penas con resignación porque es su cruz. Este tipo de razonamiento se presta para que algunos vivan permanentemente explotados por jefes injustos, maltratados por parejas que abusan de ellos en todos los sentidos y la mas conocida que los pobres no intenten hacer nada por mejorar su situación económica. Incluso cargar con esas penurias les da entre ellos un aire de santidad.

Por el contrario, en el mundo de los videojuegos todos saben que esas limitaciones están ahí para ser sobrepasadas y los mejores momentos de los videojuegos se dan cuando logramos vencer a ese monstruo que parecía invencible, entrar a la fortaleza que parecía impenetrable o encontrar el tesoro oculto que comenzábamos a creer que no existía. Cuando un gamer se encuentra ante una limitación aparentemente impasable no se resigna sino que comienza a maquinar estrategias para superarla y esto lo hace dentro y fuera del mundo de los videojuegos.

Adquirir conocimiento sobre el funcionamiento de las cosas es malo.-Podría incluir aquí varias citas biblicas que prueban esto pero decidí que estas son demasiado perturbadoras para el tipo de gente que acostumbra leer mis escritos. En resumen esas citas dicen que la divinidad ve con desprecio el conocimiento humano por muy avanzado, científico y beneficioso para la humanidad que este sea y eso abarca cualquier adelanto tecnológico creado en los últimos 5000 años. Para el creyente el entendimiento de como funciona el mundo es un auténtico crimen contra sus dioses y un desafío a su autoridad. El creyente considera que si algo que hace tiene éxito o no es porque la voluntad divina lo quiso así y que no debe de cuestionarse el porqué de los resultados porque su modesta mente humana es incapaz de entender las razones de los dioses. Estas personas se ven a si mismas como niños pequeños que se someten a los designios de un padre que sabe que es lo que mejor conviene y permite o impide que ocurran las cosas solo porque así lo dice.

Por el lado opuesto, un verdadero gamer siempre está en busca de conocimientos que lo conviertan en mejor jugador. De hecho las primeras publicaciones exitosas comercialmente relacionadas con los videojuegos fueron guias con secretos, tips y estrategias que no solo servían para ganar en el juego sino incluso para hacerlo mas divertido (mas retador) o incluso volver a jugar juegos que uno creia que ya había dominado. El verdadero Gamer sabe que el conocimiento es valioso y que sus acciones bien informadas pueden llevarlo a ganar los videojuegos mas difíciles. Que si ganó fue gracias a su propia habilidad y dedicación y lo mas importante: Que si perdió el juego fue únicamente por su propia culpa. En pocas palabras, el gamer sabe que el es el \unico responsable de sus actos y que las consecuencias buenas o malas se deben a lo que hizo o dej\o de hacer.

El creyente ha crecido en la idea de que ser sumiso es una virtud porque su dios ya ha decidido que hacer con su vida y no es nadie para cuestionar sus designios. Mientras que buscar hacerse mas fuerte, mas rico o mas sabio conduce a la rebeldía y al orgullo y por lo tanto es malo. Esta comparativa la he hecho al nivel de las personas y no al nivel de grandes instituciones porque si lo hiciera este escrito se vería tendencioso y conspiranóico. De hecho estoy seguro que ahí afuera hay muchos gamers que se consideran a si mismos como religiosos y que puede que lo que acabo de decir les resulte hasta un poco agresivo. La verdad es que exageré un poco. La gente que llega a atacar a los videojuegos por razones como estas suelen ser fanáticos relativamente peligrosos capaces de movilizar a mucha gente. Y como dije al principio, ni los gamers ni los creyentes son buenos o malos. Solo son dos ideas distintas que para un observador externo le resultarían neutrales.

El punto sobre como el pensamiento y ejercicio propio de la voluntad al que los religiosos se refieren como rebeldía al final sea uno de los puntos mas importantes junto con el conocimiento objetivo de las cosas y el deseo de alcanzar una meta personal es algo aterrador para alguien que no piensa como ellos. De hecho en el mundo de los videojuegos uno no piensa en términos de sirvientes que se humillan sino en grandes jugadores que se admiran unos a otros al comparar sus habilidades y que les gusta organizar partidas en equipo para combinar sus fuerzas y pasar un buen rato compitiendo en feroces partidas de juego en linea.

En la siguiente y última entrada voy a hablar sobre como aunque la cultura de los videojuegos tiene puntos que discrepan de manera indiscutible a las ideas de ciertas iglesias eso no significa que los gamers sean unos seres rojos con cola y cuernos que van por la calle golpeando viejitas. Por el contrario, un verdadero aficionado a los videojuegos sabe bien que el poder y conocimientos obtenidos a lo largo de sus aventuras pueden ayudar a avanzar a otros jugadores al mismo tiempo que le hacen el juego mas divertido. Y que saber compartir recursos de manera inteligente así como saber trabajar en equipo permite conquistar victorias que muy dificilmente podría conseguir jugando solo.

marzo 17, 2012 Posted by | Uncategorized | , | 1 comentario

¿Porqué los Religiosos Odian los Videojuegos?

–Parte 1: ¿Quién es el Bueno?–

El primer ataque a los videojuegos que recuerdo haber presenciado en un medio de comunicación de masas fue allá por fines de los ochenta en una cierta revista sobre temas de salud. Se les acusaba no solo de ser violentos sino de ser un potencial peligro para las personas a nivel físico, social y psicoógico. No pienso reproducir todo lo que se contaba en tal publicación para no hacerles el juego pero lo que hoy me sorprende es que en la década de los ochenta los videojuegos eran bastante mas inocentes que lo que después fueron y aún aquellos que podrían considerarse violentos como por ejemplo el Contra no tenían la suficiente capacidad técnica para mostrar imágenes violentas verdaderamente impactantes. Lo que quiero discutir ahora es sobre el motivo oculto (a mi parecer) por el que los fanáticos religiosos, y demás grupos organizados relacionados con la iglesia atacan a los videojuegos.

Antes de hablarles sobre el personaje que acompaña a Mario Bros en la primera imagen, y con quien comparte algo mas que el mismo estilo de bigote. Quiero contarles un pequeño chiste que resume toda la filosofía de los videojuegos y que tanto preocupa a las personas creyentes. Aqui vamos:

Se dice que un dia un turista norteamericano pasó por un pueblito rural de lationamérica en el que se celebraba una fiesta local. Cuando llegó a un sitio donde se organizaban peleas de gallos quedó gratamente impresionado y quiso apostar. Emocionado, se acercó a uno de los pueblerinos que parecía saber mucho del tema y le preguntó con el poco español que sabía:

–Hi mister. ¿Cual de los gallos ser el bueno?–

–¿El bueno? Pues el bueno es sin duda el colorado.–Contesta el campesino sin el menor atisbo de duda. Ante tal seguridad el turista saca un billete de 100 dólares y le apuesta al animal que se le indicó. Cuando la pelea empieza el gallo al que le había apostado sus 100 muere despedazado de manera rápida y cruel sin haber hecho nada por defenderse. Al ver esto, el turista se enfurece y después de gritar muchas de las palabras de 4 y 6 letras mas conocidas del idioma inglés se lanza en contra del campesino al que le pidió consejo y le reclama el porqué le dijo que el gallo perdedor era el bueno. A lo que el campesino, poniéndole una Trollface le contesta:

–Pues si, mister. El colorado era el bueno… ¡El maldito desgraciado es el otro!

¿Quíen es el Bueno?

La respuesta a esta interrogante tiene respuestas muy diferentes dependiendo del sistema de creencias de la persona a la que se le pregunte. Este cuestionamiento pueden hacérselo ustedes mismos. Traten de pensar todos los sinónimos y palabras que les vengan a la mente que se relacionen con el concepto de “bueno”. Ahora, antes de que me las digan, pasemos a hablar sobre el señor de bigotes cuya relación con el mundo de los videojuegos va mucho mas allá de su parecido físico con Mario Bros. Ese hombre se llamó Federico Nietzsche y vivió en la Europa del siglo XIX. Como biografía rápida diré que durante su corta y poco saludable vida hizo enojar mucho a la iglesia y a lo largo de todo el siglo XX esta se encargó de desprestigiarlo y hablar cosas tan malas de él como el que sus ideas influenciaron a criminales de guerra (adivinen cuales) o que no estaba bien de la cabeza tan solo porque falleció encerrado en un hospital psiquiátrico. Pues bien, este personaje sigue siendo despreciado por los religiosos aun mas de un siglo después de su muerte tan solo porque intentó contestar la pregunta del turista sobre quién es el bueno.

¿Y quién es el bueno? Se estarán preguntando. Pues Nietzsche consideraba que el “Bueno” era el poderoso o por lo menos el debil que aspiraba a hacerse mas fuerte por medio de su propia voluntad, trabajo duro, búsqueda del conocimiento, esfuerzo constante y sobre todo el deseo de alcanzar una meta personal que de momento se encuentra fuera de sus capacidades. Si ustedes son gamers, de seguro esta definición les va a parecer muy familiar. Pues en todo videojuego sin importar su temática o nivel de eso que los religiosos llaman “violencia” siempre se sigue este mismo patrón. Uno comienza un nuevo juego siendo un personaje debil que no sabe nada del universo al que ha llegado. Todo es nuevo y desconocido y conforme vamos avanzando y aprendiendo poco a poco nos volvemos mejores jugadores, cada vez mas rápidos, mas fuertes y mas duros de vencer. Cada vez que descubimos un secreto oculto o damos con la técnica para superar un nivel que no podíamos pasar sentimos una gran emoción. Esa satisfacción de haber superado una limitación Nietzsche ya la conocía e incluso solía decir que lo que uno siente en ese breve momento que logra vencer una limitación es lo que los poetas llaman felicidad.

Otro aspecto de la cultura gamer muy relacionado con las ideas de Nietzsche es el concepto de reto. Un verdadero gamer no abandona un juego cuando ha llegado al final, a menos claro que se trate de un juego muy malo. Un verdadero gamer no solo acaba los juegos sino que los domina. Intenta encontrar todos los secretos ocultos, terminar el juego en el nivel mas dificil sin perder, alcanzar la máxima puntuación o simplemente competir con otros jugadores. El verdadero gamer también sabe que nada le quita mas emoción a un juego que los cheats o códigos para hacer trampas. Pues cuando un juego ya no tiene un reto o limitación que imponerle ya no es divertido de jugar.

La tercera de las ideas de Nietzsche relacionadas con el mundo de los videojuegos es un poco mas abstracta y tiene que ver con la forma como las personas interacturan con el mundo. Tratar de explicarle la interactividad a la gente de este siglo es como tratar de explicarle la magia a los elfos. Pues el concepto de poder tener un intercambio de información con una máquina es para la gente de hoy lo mas natural pero no siempre fue así. Nietzsche decía que el conocimiento objetivo del funcionamiento de las cosas da poder y te permite obtener aquello que quieres. Al final un videojuego no es mas que un sistema que el jugador logra dominar a medida que comprende su funcionamiento. Entender como sus acciones pueden tener diferentes efectos dentro del juego. Como cuando descubre que cierta arma o combinación de movimientos es mas efectiva para ganarle a un monstruo que creíamos que era imposible vencer.

La Voluntad del Poder

Todos estos conceptos que tanto se relacionan con el mundo de los videojuegos se resumen en la idea que Nietzsche llamaba “La Voluntad del Poder”. Y resulta increibe que alguien que viviera mas de un siglo antes del primer videojuego hubiera escrito libros sobre algo tan parecido a lo que hoy conocemos como cultura gamer. Tras leer esto, si ustedes son gamers o simples aficionados a los videojuegos se han de estar preguntando sobre como unas ideas tan saludables sobre la superación de uno mismo y la sana competencia pueden hacer enojar tanto a la iglesia. La respuesta la voy a detallar en la siguiente entrada pero daré un pequeño adelanto ahora del porqué. Las ideas de Nietzsche enfurecieron a los religiosos y probablemente los hagan enfurecer también a ustedes por el simple hecho de que la definición de “Bueno” que el defendía era completamente opuesta a la de la iglesia de su tiempo.

Si hicieron lo que les dije al principio de la entrada y escribieron en un papel todas las ideas que se les ocurrieran relacionadas con la palabra “bueno” y entre estas vienen conceptos tales como poder, fuerza, belleza, sabiduría, audacia, efectividad o cualquier otra cosa que se le parezca entonces los felicito. Probablemente son gente que disfruta de los videojuegos y no entiende el porqué la iglesia los odia. Si en cambio en su lista las ideas relacionadas con “bueno” se parecen mas a: obediende, docil, piadoso, gentil o ingenuo. Entonces probablemente consideren que los videojuegos son diabólicos y se refieren a ellos genéricamente como “Nintendos”, whatever. Para usted Nietzsche es un enviado del mismísimo demonio y los videojuegos junto con la música rock y el anime son instrumentos diabólicos para apartar a las almas puras del camino del bien. Y hoy en la noche va a rezar por mi salvación porque está plenamente convencido que por escribir esto me voy a ir al infierno a pasar una eternidad entre homicidas y madres solteras y un cuervo me picará el alma por siempre.

En la siguiente entrada les voy a hablar sobre como la cultura de los videojuegos (y por asociación las ideas de Nietzsche) son vistas por los religiosos no solo como algo inmoral, terrible y diabólico sino incluso como una amenaza muy seria al poder que ellos tiene sobre las comunidades. Pues para los predicadores sobre todo los de los cultos pequeños o sectas, un gamer acostumbrado por instinto al concepto de “Voluntad de Poder” es sumamente dificil de convertir. Y aunque no lo parezca voy a intentar tomar un punto de vista neutral hasta donde pueda.

marzo 15, 2012 Posted by | Uncategorized | , | 3 comentarios

Programación Gráfica: Volumen de Vista y Zoom

–Como funcionan las miras de los First Person Shooters–

Esta es la continación de la entrada anterior sobre el volumen de vista. Como ya vimos, se trata de un volumen en forma de pirámide cuya punta termina en el ojo del observador y que contiene la porción del mundo que abarca el campo visual del jugador. Lo que vamos a ver hoy es como funciona este volumen de vista y como si sabemos controlar sus parámetros podemos crear efectos como el de una mira telescópica de un rifle de francotirador, cámaras capaces de obtener primeros planos de objetos móviles o con un poco de práctica obtener tomas grupales mas cinematográficas de manera automática.

En la primera imagen vemos una corte lateral del típico volumen de vista. Las diagonales inclinadas son definidas por las dimensiones de la pantalla y las lineas verticales de colores los planos frontal y posterior. El mas importante, aunque no forma propiamente parte del volumen, es el representado por la linea verde que es el plano de proyección. Cuando vamos a generar una vista 3D lo que hacemos es cortar la porción del mundo que queda dentro de la pirámide y luego proyectar aquello que quede dentro sobre el plano de proyección con las ecuaciones de proyección en perspectiva que discutimos hace ya tiempo. La linea punteada indica la dirección en la que el jugador está viendo. Esta linea de vista pasa exactamente por el centro de todos los planos.

Lo primero que necesitamos entender para comprender el volumen de vista es que los 3 planos de colores son siempre paralelos entre si. De ese modo la distancia entre ellos puede reducirse a una simple cantidad escalar en lugar de una compleja estructura de datos vectoriales. Lo segundo es que los valores que definen el volumen de vista están dados en coordenadas de referecia visual. La tercer cosa es que el corazón del volumen de vista se sitúa justo en el centro del plano de proyección, que correspondería con el centro de la pantalla y por donde pasa la linea de vista. Una cuarta cosa que confunde mucho a los principiantes es que el volumen de vista se abre en dirección opuesta a la que indica el vector que define el plano de proyección. Esto hace que el número que indica el alcance del campo visual sea cada vez menor conforme la distancia de vista aumenta. Esto es completamente contraintuitivo pero es necesario para que los cálculos funcionen.

Si somos conscientes de estas cuatro cosas podremos definir un volumen de vista de cualquier proporción y longitud con tan solo 6 valores. Ahora veamos con detenimiento cada una de las partes que componen un volumen de vista 3D.


Como definir un Volumen de Vista

En la segunda imagen se ve el volumen de vista con mayor detalle. El corazón del volumen de vista está a la mitad de la linea vertical verde marcada como VRP (view reference pointo o punto de referencia visual) que como recordarán indica el punto central del plano de proyección. Este punto es muy importante porque todos los demás números se relacionan con este.

El ojo, o punto de referencia de proyección PRP queda en la punta de la pirámide. Si a este punto le restamos las coordenadas del punto de referencia visual obtenemos las componentes del vector normal al plano de proyección VPN. Este vector es común no solo para el plano de proyección sino también para los planos frontal y posterior. Mas adelante verán que el punto donde se situá el ojo al final corresponde con el origen de un transformado y muy óptimo sistema de coordenadas de referencia visual.

Xmin,Ymin,Xmax,Ymax.-Son 4 valores que indican las dimensiones de la pantalla. Mientras mas grandes sean estos valores mayor será el tamaño de la imagen que se va a generar en pantalla y por consiguiente el volumen de vista será mas amplio. Xmin y Ymin son las coordenadas de la esquina inferior izquierda de la pantalla y Xmax, Ymax las de la superior derecha. Pueden ser simétricas repecto a la pantalla. Estos valores no solo definen la amplitud del volumen de vista sino que nos permiten mostrar la imagen en diferentes tipos de monitores o tamaños de ventanas en un ambiente gráfico. Y por supuesto se considera que estos puntos son coplanares al plano de proyección.

Plano Posterior.- Mostrado en azul es el plano que limita la distancia máxima hasta donde se puede ver con claridad. Y aquí es donde comienza la confusión. Pues este número debe de ser menor que el valor que define el plano fronta.

Plano Frontal.- Mostrado en rojo. Es el plano que queda frente al ojo del jugador y que es el que evita que los objetos entren en su ojo (lo que generaría una división entre cero) El número que define el plano frontal debe de ser MAYOR que el del plano de posterior.

Plano de ProyecciónMostrado en Verde, aunque este no es precisamente parte del volumen de vista es importante asegurarnos que se encuentre en un punto entre los planos frontal y posterior, y para que esto suceda la componente Z (N en coordenadas de vista) del punto de referencia visual que indica el centro de la pantalla sea mayor que el valor del plano posterior pero menor.

Como la relación entre los números que definen los planos de proyección, frontal y posterior son completamente contraintuitivos (palabra que significa que algo en realidad es opuesto a como uno podría imaginarse que es) voy a explicarlo con otro dibujo. En la siguiente imagen tenemos un volumen de vista a lo largo de un eje horizontal. Este eje horizontal es la normal a los planos frontal (rojo), de vista (verde) y posterior (azul). El ojo o punto de referencia de proyección se encuentra en 16, el valor de F que define el plano frontal es 13, la componente z del punto de referencia visual VRP y que coincide con el centro de la pantalla es 10, el valor de B que define el plano posterior es 4. En la parte de abajo pueden verse lineas de colores mas gruesas que indican los valores de B, VRPz y F en términos absolutos. Por el lado izquierdo se tienen los valores máximos y mínimos de la vertical de la pantalla Ymin y Ymax. Es importante recordar siempre que en el sistema de coordenadas de referencia visual la normal al plano de proyección que se despliega en pantalla sale del monitor en dirección al usuario. Así que el volumen de vista se extiende en dirección opuesta a esa normal que en términos físicos sería hacia dentro del monitor.

Les aconsejo que jueguen con estos valores para obtener diferentes volúmenes de vista. El del ejemplo es un caso de un volumen de vista simétrico en el que la linea de vista coincide con el vector normal a los 3 planos. Pero este no es siempre el caso. Como cuando uno camina por la calle y mira de reojo hacia un lado sin girar la cabeza. Para lograr este efecto se dan valores máximos y mínimos de la ventana que no sean simétricos. Digamos que queremos hacer una pantalla de 4 unidades de alto por 4 de ancho, los valores simétricos serían -2,-2, 2, 2. Quedando el centro de la pantalla en 0. Pero también podríamos hacer que los límites fueran 0,0,4,4. Esto sin cambiar la posición del ojo o punto de referencia de proyección. Para poder procesar este tipo de vista se usa una extraña operación llamado Sesgo de Vista que reacomoda los planos y los realinea con la linea de vista ideal. Reacomodando con ello parte del mundo. Este tema se discutirá mas adelante porque también se aplica a la proyección paralela.


Como Simular una Mira Telescópica

Ahora veamos como controlando los 6 valores del volumen de vista podemos simular una mira telescópica en un juego de disparos en primera persona. En algunos juegos antiguos se simulaba la visión telescópica simplemente creando otra cámara que se acercaba al objetivo. Esto causaba algunos errores muy tontos en algunos juegos como por ejemplo que el personaje pudiera verse su propia nuca si se acercaba al objetivo lo suficiente. Por no mencionar que el temblor de las manos que hace tan emocionantes los tiros a largo alcance tenía que ser simulado. En fin, unos pocos juegos si implementaban la mira telescópica del modo que vamos a ver ahora mismo.

En las últimas imagenes se ven los dos casos. En ambos se tiene la misma situación en la que el jugador tiene frente a si a su oponente a una distancia fija. En la vista sin ampilificar tenemos F = -1, VRPz = -4 y B = -8 mientras que en la amplificada tenemos F = -1 VRPz = -3 y B = -7. La razón del signo negativo es porque el punto cero coincide con el ojo del tirador y la normal a los planos crece hacia la izquierda. Y la razón por la que estos 3 valores no son iguales como pretendía que fuera en un inicio es por simple descuido mio. En el recuadro inferior de cada toma tenemos la proyección que genera ese volumen. Los valores de Xmin, Ymin,Xmax y Ymax son -1, -1, 1, -1. que generan una imagen de 2 por 2 unidades que a su vez ha sido escalada por un factor de 2 para ampliarla y hacerla mas visible en un cuadro de 4 por 4. En la imagen que percibe el jugador puede ver a su oponente de las rodillas hacia arriba y aunque puede atinarle no puede hacer un tiro de mucha precisión. Veamos los datos de esta vista como los ve la computadora:

;VISTA SIN AMPLIFICAR
;el origen est\a en la cabeza del tirador 
;el volumen crece en sentido contrario a la normal de los planos
;la normal de los planos va hacia la izquierda

F: 		-1 	; plano frontal F en rojo
VRPz: 	-4	;plano de proyecci\on en verde. Coordenada z del VRP
B: 		-8		;plano posterior B en azul

;coordenadas inferior izquierda y superior derecha de la apertura de la ventana.
xmin: -1	
ymin: -1
xmax:  1
ymax:  1

Ahora veamos que sucede en la escena amplificada de la imagen.

Del lado derecho tenemos exactamente la misma situación con los dos personajes parados en el mismo sitio. Los valores de F, VRPz y B siguen siendo los mismos. Pero ahora los valores de Xmin, Ymin, Xmax y Ymax son -0.5, -0.5, 0.5 y 0.5. Con lo que el volumen de vista se estrecha tal y como pasa como si nos asomáramos por una mira telescópica. Como ahora tenemos un plano de uno por uno mostrado en una pantalla de 4 por 4 unidades el resultado es un acercamiento en el que podemos ver con mayor detalle la cabeza y parte del pecho del personaje oponente. Si el cambio no se hace en un solo paso sino en incrementos o decrementos pequeños pueden lograrse efectos drámáticos de acercamiento y por supuesto replicar los movimientos de modo mas realista.

;VISTA AMPLIFICADA
;el origen est\a en la cabeza del tirador 
;el volumen crece en sentido contrario a la normal de los planos
;la normal de los planos va hacia la izquierda

F: 		-1 	; plano frontal F en rojo
VRPz: 	-3	;plano de proyecci\on en verde. Coordenada z del VRP
B: 		-7		;plano posterior B en azul

;coordenadas inferior izquierda y superior derecha de la apertura de la ventana.
xmin: -0.5	
ymin: -0.5
xmax:  0.5
ymax:  0.5

Otros efectos que pueden lograrse es el de encuadre. En el que se definen puntos en el propio objetivo que correspondan directamente con los límites de la ventana o asociar directamente el punto de referencia visual a un objetivo para obtener primeros planos. Puede crearse la ilusión de que algo pasa a mucha velocidad por delante del jugador (como un avión supersónico en un juego de simulador de vuelo) con tan solo deslizar los valores mínimos y máximos de la pantalla en un sentido u otro. Y por supuesto ajustar la vista a diferentes tamaños de ventanas y monitores, que es la función mas importante de esos valores.

Para los que no entendieron la explicación del párrafo, seguido de cada una de las imágenes se muestran los datos del volumen de vista en el formato de triturado numérico.

Ya para terminar por hoy quiero comentarles sobre las ventajas y desventajas de la proyección en perspectiva. La principal ventaja es que es realista en el sentido que imita como los humanos ven su mundo. Es buena para un juego o una animación. Pero no en situaciones en las que necesitamos manipular objetos de manera interactiva como lo haríamos en un editor 3D. En la siguiente entrada vamos a discutir sobre otro tipo de proyección que aunque no es realista vence todas estas limitantes. De momento sigan programando y recuerden que en este curso de introducción a la programación gráfica no necesitan de grandes conocimientos o computadoras muy avanzadas. Así que no se dejen asustar cuando alguien venga a decirles que eso de hacer 3D es algo inalcanzable.

marzo 14, 2012 Posted by | Uncategorized | , , , | Deja un comentario