9 de julio de 2007
El Presidente de los Estados Unidos sufrió… un pequeño accidente a manos de Sam y Max. Pero era todo por prevenir más atrocidades del mismo como… el control de las armas. Mientras tanto, Max se lanza para presidente, ¡vota por él!

El episodio es bastante más largo que el tercero, que fue corto pero muy bueno. Este episodio es aún más gracioso. La parte del musical fue de antología. Me distraje con varias cosas y lo abandoné a la mitad, pero hoy lo retomé y terminé lo poco que me faltaba del juego. De verdad, si te anima este tipo de juegos, deberías por lo menos bajarte la demo del juego y probarlo para que sepas cómo es.
A estas alturas ya sacaron todos los episodios, hasta el 6, de esta serie. Hace como una semana me mandaron un código para que me envíen la primera temporada en DVD sin mayor costo que el de envío, que ya veré cuando haré efectivo :-D . El episodio que viene a continuación es el 5, titulado Reality 2.0. Les seguiré contando pronto de este tremendo juego.
9 de julio de 2007
Esta es una pequeña introducción general al área de GPGPU. En este artículo explico un poco de qué se trata esta relativamente nueva área de conocimiento, y está apuntado a aquellas personas con nociones de programación interesadas en utilizar tarjetas gráficas para resolver problemas de computación.
En la industria de los fabricantes de hardware gráfico ha estado surgiendo una utilidad que no se había previsto cuando comenzó el boom de acelerar los gráficos mediante estos dispositivos hace ya varios años. Todo comienza con el uso de las tarjetas gráficas para hacer otras cosas distintas a… dibujar algo en la pantalla para el usuario. De unos años para acá el mundo académico se ha vuelto loco con las capacidades de GPGPU, que son las siglas de General Processing for Graphics Processor Units.
Una tarjeta Nvidia GeForce 6600GT. Un modelo más de tarjeta gráfica. [Fuente]
GPGPU engloba todas las técnicas en las que se utiliza el poder de las tarjetas gráficas para hacer procesamiento general. Desde tareas consideradas relativamente mundanas, como buscar valores u ordenar arreglos, hasta hacer cálculos físicos como el estado de un líquido o el movimiento de una tela. Su capacidad para resolver esta clase de problemas que es el queso en la tostada que ven los académicos, y que han comenzado a aprovechar los desarrolladores.
¿Por qué preferrir las tarjetas de video a los procesadores?
La mayoría de los problemas físicos de los que hablamos en este artículo requieren de procesar una gran cantidad de datos en un tiempo muy corto. Un ejemplo de esto es que los líquidos suelen definirse como la interacción de muchas partículas, por lo que se tiene que procesar la información de cada partícula para calcular un estado. La naturaleza de estos datos, entonces, no es secuencial: en vez de ir punto por punto procesando información, es necesario procesarlos de manera paralela.
Un ejemplo de simulación de fluidos, utilizando un GPU para calcular su estado en el tiempo. Screenshot de Plasma Pong, un juego de pong con un agregado de fluidos. [Fuente]
Es ésta la diferencia fundamental entre un procesador como lo conocemos hasta ahora (llamémoslo CPU) y los procesadores de las tarjetas gráficas (llamémoslos GPUs). Los CPUs fabricados por Intel o AMD son unidades que procesan un dato a la vez y lo devuelven, es decir, son procesadores de una instrucción y un dato. A esto se le conoce como procesador SISD, siglas en inglés de Single Instruction, Single Data. A diferencia de éstos, los GPUs son capaces de aplicar una sola instrucción a muchos datos en el mismo tiempo, es decir, son procesadores de una instrucción y múltiples datos, procesadores conocidos como SIMD, siglas en inglés de Single Instruction, Multiple Data.
Cuando se utiliza un GPU para resolver un problema físico, la diferencia en rapidez con su contraparte hecha en CPU es por lo general de orden exponencial. Los problemas físicos al ser resueltos con una solución paralelizable, se pueden ejecutar en un GPU con una rapidez que no puede ser alcanzada por un CPU normal y corriente.
Un procesador en una tarjeta gráfica puede aplicar una sola instrucción a muchos más datos que un CPU. Éste es un procesador de una tarjeta Nvidia Geforce FX 5600 [Fuente]
¿Cómo lo hacen?
Mientras que un CPU contiene una unidad encargada de procesar un dato a la vez, una tarjeta gráfica contiene varias unidades de procesamiento, a las que se les asigna una instrucción, y luego se les pone a procesar los datos.
Esto último se entiende mejor si explicamos por qué las tarjetas gráficas funcionan así. Las tarjetas gráficas trabajan fundamentalmente con información gráfica, un tipo de información que suele necesitar una gran cantidad de información procesada en un tiempo corto. Esta información gráfica, por lo general imágenes, se traducen en bits de información a los que se les suele aplicar la misma instrucción. Si suponemos 1 byte para representar el color de un pixel en una imagen de 1024x768, una imagen que ya puede ser considerada pequeña para los estándares que manejamos hoy en día, tendríamos que aplicar una instrucción para 786.432 bytes. Si encima agregamos que debemos procesar esta imagen 60 veces por segundo (para ofrecer al usuario una buena experiencia gráfica), multiplicando el anterior número por 60 estamos viendo que es necesario procesar una cantidad cercana a 42MB de información cada segundo.
Luego, las tarjetas gráficas incluyen procesadores, llamados fragment shaders, que vienen instalados de 4 a 8 en una tarjeta. Siendo hardware especializado, tienen un rendimiento superior haciendo una clase de tareas en específico que un CPU. Lo descrito anteriormente es una exagerada simplificación de cómo es la arquitectura
Pasemos entonces a programarlo todo en GPU
Antes de comenzar a pasar todos los algoritmos a GPU, hay que entender la forma de programar este tipo de soluciones. Es necesario entender que la forma de programar cuando se utiliza un GPU es totalmente distinta a cuando se utiliza un CPU. Esto se debe a las restricciones que impone el hardware gráfico para alcanzar esta rapidez. Este hardware todavía se utiliza fundamentalmente para dibujar gráficos, por lo que aún se maneja una terminología propia de esta área. El gran obstáculo que tiene GPGPU a la hora de resolver un problema es cómo utilizar esta maquinaria, especializada en dibujar gráficos, para hacer cosas más generales.
Así que tenemos que una tarjeta gráfica recibe información como vértices de un objeto, los colores de estos vértices, la textura que van a utilizar, las coordenadas de la textura que tienen. La tarjeta gráfica se encarga de transformar esta información en pixeles (aunque el término más preciso para esto son fragmentos), que luego son dibujados en la memoria que representa la pantalla, un área llamada el framebuffer. Como notarán, los términos que utilizamos acá son totalmente distintos a los que utilizamos cuando queremos hacer algo en un CPU.
Sin embargo, es posible hacer una traducción entre CPU y GPU. Esto es lo que ha permitido que GPGPU como área de estudio se haya desarrollado. Así que en algunos casos es factible representar los datos que queremos procesar como una textura, donde cada pixel es parte del estado. El objetivo sería aplicar una instrucción, o una serie de instrucciones, a cada pixel de esta textura, y dibujar el resultado en el framebuffer. El paso final sería leer los resultados del framebuffer y ponerlos en la memoria principal de la computadora para su posterior interpretación.
En principio, para hacer procesamiento general se limitaba a aplicar las funciones de la tarjeta gráfica que estaban presentes en el lenguaje de la aplicación. De un momento para acá se ha desarrollado un procesador de pixeles más genérico, al que se le pueden dar una serie de instrucciones para que lo aplique con cada fragmento. Cuando salieron esta clase de procesadores, el único lenguaje disponible era una versión de assembler específico para ellos.
Hoy en día existen lenguajes de mayor nivel, que permiten expresar estas instrucciones más como lo propone el problema que cómo una adaptación a lenguaje de máquina. La corporación Nvidia desde hace algún tiempo ha propuesto el lenguaje Cg (C for graphics), mientras que Microsoft propone HLSL (High-Level Shading Language), desarrollado en conjunto con nVidia, y utilizado en su librería DirectX. Por otra parte, la junta de OpenGL, uno de los grandes estándares de librerías gráficas, propone el uso de GLSL (GL Shading Language).
¿Hacia dónde va GPGPU?
Hemos visto que el procedimiento para hacer procesamiento general en una tarjeta gráfica no es más que una gran vuelta que el programador tiene que hacer para lograr su objetivo. La realidad es que el programador tiene que hacer muchas cosas en las que puede equivocarse, dando como resultado que hacer GPGPU sea un proceso largo y propenso a errores.
Las empresas de hardware han visto el potencial que tiene esta área y está comenzando a lanzar más productos apuntados a hacer GPGPU de manera más sencilla. Nvidia ha sido una de las empresas líderes en este campo, y comenzó lanzando un lenguaje específico para GPGPU, llamado CUDA, junto con dos librerías de cálculo, uno para álgebra lineal (BLAS), y otro para transformaciones rápidas de Fourier (FFT). Nvidia ha lanzado también procesadores específicos para GPGPU, con la línea Tesla de computadoras especializadas en procesamiento general. De seguir en esta tendencia, quizás veamos pronto un nicho sólido del hardware gráfico.
¿De aquí a dónde?
GPGPU es un tema grande, y aquí lo cubrimos de una manera muy general. Un punto de partida ideal para aprender más sobre este tema sería GPGPU.org, que incluye láminas y tutoriales para saber más de este tema. Para resolver problemas más específico sería necesario referirse a las páginas de aquellas personas que estén trabajando en esos problemas.
El libro The Cg Tutorial escrito por Mark J. Kilgard, experto en esta área, y publicado por la Addison-Wesley, lo recomiendo personalmente con los ojos cerrados para aprender este lenguaje y lanzarse de lleno a aprender a programar con GPUs.
6 de julio de 2007
SIGGRAPH está a la vuelta de la esquina, por lo que presento uno de los videos mostrados el año pasado. Cubic Tragedy, una animación hecha por Ming-Yuan Chuan de la Universidad Nacional de Ciencia y Tecnología de Taiwan, fue una de las más aplaudidas en el Electronic Theater de SIGGRAPH 2006. El Electronic Theater es uno de los grandes eventos de SIGGRAPH, con una pantalla gigantesca y una de las audiencias más grandes en materia de computación gráfica. Así que este video realmente apunta a ese público conocedor de modeladores 3D, siendo no más que un gran chiste interno: una mujer hecha de polígonos busca ser más bella utilizando implementos propios de estos programas. Espero que lo disfruten tanto como lo hice yo. ¡Feliz fin de semana!
6 de julio de 2007
El blog Ataque Combinado elaboró una lista de los 10 juegos más difíciles de terminar, seleccionándolos de las listas personales de sus 4 integrantes. Estos juegos fueron elegidos en base a la experiencia y la memoria de cada uno, por lo que la lista es bastante subjetiva, y refleja las plataformas con las que jugaron estos señores. Yo también me uno y hago una contribución a mi lista de los 10 juegos más difíciles de terminar (en mi opinión).
1. King’s Quest III: To Heir is Human
En particular, TODOS los juegos de la serie King’s Quest, escritos por Roberta Williams para Sierra On-Line, son extremadamente difíciles. Este fue uno de los primeros juegos que jugué, de cuando no tenía idea del inglés, así que mi hermano era la ayuda para jugarlo. Tampoco era que se podía avanzar mucho, porque él también estaba pelando bola. En grande.
Una de las grandes trabas de este juego, al igual que otros de su especie, es que existen miles de maneras de morir, o de quedar trancado en el juego sin poder avanzar o regresar por no haber hecho algo antes. Otra de las grandes trabas de este juego es tener que hacer las recetas para las pociones. Se trata de leer las instrucciones del manual que trae el juego, pero las instrucciones están escritas de una manera bastante… complicada. A propósito, en este juego las instrucciones se tienen que escribir: “Abrir puerta”, “Poner polvillo en tapara”, etc.
Más información: Wikipedia.
2. Maniac Mansion
Aunque ya hemos visto en un video que el juego se puede terminar en 9 minutos, una hazaña que ni el propio creador pudo imaginar, lo cierto es que este juego es bastante complicado de terminar por la cantidad de cosas que puedes hacer. Comenzando porque tienes que escoger a dos acompañantes de seis posibles, para tener un total de 3 personajes que controlar en el juego. Supuestamente puedes terminarlos con cualquier combinación, pero lo cierto es que se hace bastante complicado cuando no tienes, por ejemplo, a Bernard, uno de los más versátiles.
Aunque no es tan acentuado como en KQ3, es posible perder de varias maneras el juego, así como es posible quedarse trancado en algún momento.
Más información: Wikipedia
3. Prince of Persia
Atravesar 12 niveles llenos de púas que salen del piso, de pesados guardias con espadas, de cuchillas que te dividen en dos en un pestañeo, de tu propia alma que lucha contra tí mismo, de piso que se cae al poner tu peso, de esqueletos inmortales. Todo esto en 1 hora o menos, o si no el Visir se lleva a tu amada princesa que te ama a pesar del choque de clases sociales. En este juego hay que pensar realmente las cosas antes de hacerlas, con la buena fortuna de que no es posible quedarse trancado. Este es el único juego que comparto con Ataque Combinado.
4. Igor: Objetivo Uikokahonia
Las maromas que tenía que hacer Igor para llegar a la isla de Uikokahonia, para así poder reunirse con su amor de toda la vida, son las más disparatadas e imposibles de imaginar. Pensar en cómo entregarle un gato a una vieja miope en un parque, o poder redactar un trabajo de biología para entregar a la universidad. Igor: Objetivo Uikokahonia fue uno de los primeros juegos de aventura hechos en España, por la empresa Pendulo Studios. Igor realmente tiene unos puzzles que lo pueden hacer a uno renunciar al juego si no se tiene una mente extremadamente abierta. Uno o dos de esos puzzles implica cazar píxeles.
Más información: Computer Emuzone.
5. Amazon: The Guardians Of Eden
Access Software Inc. es la reina en cuanto a juegos de aventura innecesariamente complicados se refiere. Tanto Amazon, como Countdown, otro juego de esta empresa, tiene puzzles con tiempo, caza de píxeles, quedarse trancado, etc., etc. Sin embargo, Amazon es un juego de aventura muy bien logrado, imitando un estilo de B-Movie de los 50s. Por lo menos trae una ayuda que proporciona pistas si estás muy mal.
Más información: JuegoManía.
6. Sanitarium
Sanitarium es un juego demente, en todos los sentidos. Del protagonista no sabemos mayor cosa durante el transcurso de todo el juego, más allá de que sufrió un accidente vial serio y despertó con la cabeza vendada en un manicomio. Es más, no sabemos siquiera si está en un manicomio, pues el personaje transita por toda clase de situaciones, pueblos, estatuas que se mueven, personas muertas en vida, y demás. Así que no sabemos cuando está lúcido o cuando está soñando. ¿Qué clase de razonamiento se puede hacer para llevar a término un juego de esta naturaleza? De todas maneras, lo recomiendo totalmente para un momento de locura.
7. The Dig
The Dig es responsabilidad de Steven Spielberg. El resultado es una aventura de dimensiones épicas… en un planeta desierto previamente habitado por una civilización avanzada. Se podrán imaginar que la cosa va por descubrir qué diablos querían decir estos seres con sus símbolos extraños y dispositivos cuasi-mágicos. El juego tiene realmente sus complicaciones para terminarlo, por lo que se hace fácil merecedor de estar en esta lista.
Más información: Wikipedia
8. The Lost Mind of Dr. Brain
Lost Mind… es un juego para niños… en la dificultad fácil. En las dificultades intermedias o difíciles puede llegar a ser realmente una pesadilla. El juego no es más que un conjunto de puzzles apuntados a retar distintas áreas del cerebro, aunque uno o dos puzzles son más bien tipo acción, donde hay que tener una mano rápida y un buen mouse. El Tren de Pensamiento puede llegar a ser especialmente frustrante en la dificultad difícil, al igual que el puzzle de programación. Y pensar que la caja dice “Hasta los 11 años”.
Más información: MobyGames
9. MAD TV
Creo que la dificultad de MAD TV parte del hecho de que correr una estación de televisión es de por sí complicado, y el juego no echa, aunque sea, una manita para comenzar. Se necesita rapidez para poder decidir cómo llenar los espacios publicitarios y de programación (8 espacios cada uno). Los espacios publicitarios son los que dan dinero (duh), pero necesitan un mínimo de audiencia para que la suelten, por lo que más vale que los programas atraigan. Súmale a eso que tienes que levantarte a una reportera pasando programas en TV que a nadie le gustan. Hablemos de servir a dos maestros.
O pensándolo bien, tal vez era que ya quería pasar lo mejor de lo mejor en programación sin tener un centavo encima.
Más información: Wikipedia
10. Challenge of the Ancient Empires!
Challenge… es otro juego para niños con nivel de dificultad ajustable para adultos. Mientras que pasar el nivel fácil es una tarea idiota, pasar el nivel difícil pueder costar bastante. Los 4 primeros niveles se mantienen más o menos similares, con unas arañas o vampiros más, y con puzzles de fin de nivel más complicados (los mejores son los de lógica para terminar el nivel). Pero el último, que incluye elementos de los otros cuatro, es un mundo distinto en el nivel difícil. Sumémosle el hecho de que si te mata el jefe tienes que comenzar la caverna de nuevo. ¡De nuevo!. Esta gente no conocía la Declaración de los Derechos Humanos cuando hizo el juego.
Más información: Wikipedia
Conclusión
Quizás notarán que una buena parte de estos juegos son previos a la época de Internet. Más allá del hecho de que mi formación gamer se concentró en estos años, la sensación de dificultad de estos juegos proviene, creo yo, de que no había una forma tan sencilla de acceder a ayudas o walkthrus. A diferencia de hoy en día, que con entrar a GameFAQs basta, en ese momento las pistas debían provenir del boca a boca, a través de oh sabios gurúes que ya habían jugado el juego antes y conocían cómo terminarlo. Pero en fin, ya dejo de botar la cédula.
Ya casi que se podría convertir en un meme y todo :-) . Si te mola hacer una lista así en tu propio blog, eres bienvenido.
4 de julio de 2007
De acuerdo a la respuesta que dio Squidi en TIGSource, él mismo no pudo cumplir con el reto de los 300 diseños de juegos que se propuso: la entrada #49 del reto no es un mecanismo de juego explicado, sino un artículo viejo de un blog que él tenía. Luego, Squidi da por terminado el reto que comenzó y continuará con la implementación de alguno de estos mecanismos.

Lo lamentable de esto, y lo dice Squidi en su despedida, es que no compartirá el proceso de creación con el público, debido a que este feedback podría afectar el proceso mismo. En resumen, él no está dispuesto a tener que defender cada decisión de diseño que haga ante decenas de personas, por lo que este proceso de creación será privado y (supongo) sólo veremos el resultado final, cuando lo publique.
Aquí en El Chigüire Literario he logrado hacer algo similar con las crónicas de CuteGodChigüire, pero imagino que la diferencia de tráfico entre su sitio y el mío debe tener algún impacto en la viabilidad de proyectos de esta naturaleza. A propósito de estas crónicas, las he tenido un poco abandonadas debido a que he tenido que concentrarme en otras cosas que no puedo postergar. Espero que a partir de la próxima semana se normalicen un poco y pueda volver al ritmo normal de guías que tenía en meses anteriores.
Y si todo va bien la próxima semana, les tendré un tremendo anuncio también. Saludos.