Blog

Juan Mellado, 20 Diciembre, 2005 - 14:08

Ya está subido el nuevo artículo a la web explicando las modificaciones realizadas en el código fuente del Arkanoid que he estado haciendo en JavaScript.

La verdad es que le he dedicado más tiempo al apartado que trata de las posibles mejoras a realizar que a la redacción de las modificaciones en sí mismo. Y es que este es uno de esos típicos casos en los que resulta bastante fácil dejarse llevar por la imaginación: "features, features, features, ..."

Juan Mellado, 19 Diciembre, 2005 - 18:56

El raytracer ya empieza a tomar forma, y como muestra un botón:

Esfera con iluminación local

La escena se compone de una esfera con una luz direccional, y el modelo de iluminación sólo contempla de momento iluminación local incluyendo ambiental, difusa, especular y emitida.

Juan Mellado, 19 Diciembre, 2005 - 15:27

DirectX se actualiza cada 2 meses, y el SDK de este mes de diciembre ha venido con un pequeño regalo de Navidad: documentación y ejemplos de DirectX 10.

Los ejemplos sólo funcionan sobre la demo de Windows Vista, así que no he podido probarlos, pero leyendo un poco por encima la documentación se ve que la estrella de esta nueva versión será el Geometry Shader (GS). La principal aportación del GS será la posibilidad de generar geometría en tiempo real. Es decir, que se podrán generar vértices dentro de la GPU, lo que supone un cambio muy importante con respecto a la situación actual, en la que la GPU sólo puede operar con los vértices enviados por el driver desde el programa. Y es más, se podrá trabajar a nivel de primitiva. Es decir, se podrá trabajar con triángulos en vez de con sólo vértices de forma individual como se hace ahora mismo.

En el tutorial 13 del SDK se ve de forma fácil como se puede utilizar el GS para hacer que la GPU genere geometría en tiempo real. El tutorial contiene un ejemplo en el que contruye una malla a partir de otra. Se toman todos los triángulos que componen el modelo de un personaje y se generan nuevos triángulos "extruyéndolos" en la dirección de la normal. De esta forma se consigue una nueva malla que rodea al modelo como si fuera un "campo de fuerza" que se adapta perfectamente a su figura. Y todo esto dentro de la GPU, sin intervención alguna por parte de la CPU.

Otro ejemplo de la documentación incluye un sistema de partículas gestionado también totalmente dentro de la GPU. Todo un caso de estudio.

Pero el GS no es el único cambio importante e impactante de esta futura versión de DirectX, el pipeline en general también cambia, y mucho. Se compondrá de las siguientes "stages": Input Assembler, Vertex Shader, Geometry Shader, Stream Output, Rasterizer, Pixel Shader y Output Merger. El Stream Output, a pesar de tener un nombre tan poco atractivo, promete poder redirigir la salida del GS hacia "stages" posteriores y anteriores. Es decir, las salidas del GS podrán volverse a utilizar como entradas del pipeline. Y todo esto además sin intervención de la CPU gracias al uso de buffers dentro de la propia tarjeta gráfica y una nueva API llamada DrawAuto diseñada exlusivamente para esto.

Otros cambios de DirectX incluyen un mejor soporte para depuración, con posibilidades de cambiar en tiempo de ejecución de un device hardware a otro software, o la aparición de nuevos APIs, como DXGI para trabajar con las distintas tarjetas gráficas que puede haber presentes en el sistema. De hecho, un puntero a una interface de tipo IDXGIAdapter es uno de los parámetros que se deben pasar a la función D3D10CreateDevice, aunque en los fuentes de los ejemplos se deja a NULL, supongo que para tomar la tarjeta principal por defecto.

También hay otros cambios orientados a la integración de los juegos dentro del nuevo Windows Vista. Al parecer, esta nueva versión de Windows llevará una opción de menú llamada "Games" en la que se listarán los juegos instalados en el sistema con sus características. Para que los juegos aparezcan en ese menú las compañias desarrolladoras tendrán que crear un pequeño fichero XML con unas determinadas características. Para ayudar en la creación de ese fichero Microsoft suministra una pequeña herramienta que se engloba dentro de lo que se dado por llamar "The Windows Vista Game Explorer".

Una última nota, dentro de algunos de los directorios donde se encuentran los fuentes de los ejemplos hay pequeños vídeos en los que se ven los programas en acción. Siempre es interesante echarles un vistazo.

Juan Mellado, 19 Diciembre, 2005 - 12:49

Aunque hace tiempo que salió, no ha sido hasta ahora que me he decidido a bajar la demo de Psychonauts.

La verdad es que es una apuesta interesante. Un juego pensado para explotar un poco más de lo habitual las posibilidades de un ordenador como plataforma de entrenimiento, a medio camino entre el realismo y la caricatura total. El problema es que se ha quedado en eso, un planteamiento interesante, pero poco más. Y es que bien mirado no es más que un juego de plataformas, en 3D con una vista en tercera persona, con lo que pretende ser una gran historia de fondo y algunos efectos gráficos muy bien conseguidos.

El juego transcurre en dos mundos paralelos. El primero que se corresponde con un mundo real, y que hay que explorar al estilo de las aventuras gráficas de toda la vida, hablando con la gente y buscando objetos. Y el segundo totalmente surrealista, con una ambientación puramente bélica, en el que hay seguir un camino esquivando obstáculos, superando pequeñas pruebas y recolectando items.

El efecto gráfico más destacable es el de un proyector de películas que se integra muy bien con la acción del juego en determinados momentos. Aunque personalmente creo que han abusado de él, aparece demasiadas veces.

En lineas generales me ha parecido un juego correcto y entretenido, aunque un tanto infantil para mi gusto.

Juan Mellado, 17 Diciembre, 2005 - 18:16

Acabo de subir la versión 1.2 del Arkanoid que estoy haciendo con Javascript. Esta vez le he añadido los famosos "items" que caen de forma aleatoria al golpear un ladrillo y que proporcionan puntos y efectos cuando se capturan con la paleta.

Dentro de unos días trataré de explicar las modificaciones que he hecho al código fuente, y creo que con eso daré por concluido este proyecto. El objetivo inicial era hacer un pequeño programa para aprender JavaScript, y creo que con esta última versión puedo considerarlo como objetivo cumplido.

Posiblemente siga haciendo algún que otro remake en JavaScript de juegos populares, para relajarme y "desintoxicarme" un poco de mis otros proyectos.