ADMINBLOG PROYECTOSDESCARGASNORMASACERCA DE
Blog de Miguel Herrero
En ocasiones… un true

Hoy me dió por intentar algún método de sombreado. Tenía un tutorial bastante bueno sobre como hacer stencil shadows, pero cuando metí mano a la clase Mesh de Direct3DX, vi que iba a ser un poco latoso ir trabajando con sus vertexbuffers, haciendo lock y unlock para trastear con ellos y demás. Decidí dejarlo para otro día. Además, a todo el mundo parece gustarle explicar las cosas simplemente con su código y yo prefiero que alguien me explique qué es lo que está haciendo. El código puede ser muy obvio para su autor, pero no lo es tanto para los demás.

El caso es que decidí coger el proyecto 'ejemplo1' que había usado en los inicios del motor, para cargar una malla e intentar sombrearlo de alguna manera. Y por arte de magia la malla había desaparecido. Ántes funcionaba, lo juro, pero ahora solo se mostraba el más absoluto vacío. Por algún momento, eso me hizo recordar el exámen de paralelas. Tras los últimos días de exámenes no he dormido mucho que digamos o, al menos, no lo que suelo dormir normalmente. Y no conseguía ver el error, aunque sospechaba que sería de lo más absurdo. Después de un rato lo encontré: el objeto tenía una matriz de transformación a ceros, es decir, estaba escalado al 0% (microscópico, vamos). Resulta que en el constructor de la clase Node debería haber un miserable updateRelativeMatrix = true; para inicializar la matriz de forma correcta.

Tras esto, volví a mi intento inicial de poder de alguna manera proyectar una textura sobre una malla. El método se llama 'projective texturing' y es más viejo que maricastaña. Ántes de que a todos se nos pusiera el culo a jugar parchís con tanto shadowmap y stencil shadows, esto era la repera. Así que por lo menos tenía la eficiencia asegurada, y realmente es un método que se sigue usando y resulta muy versátil a la par que espectacular si se utiliza bien. Pero por más que busqué no conseguía encontrar documentación decente. Lo más que encontré es un documento con algo explicado en OpenGL.

Tras 30 minutos leyendo artículos que no condúcen a nada, me bajé un ejemplo del SDK de ATI y ¡oh! ¡sorpresa! entre tanta llamada y tanta línea de código no se entera ni el tate. Así que intenté hacer un simple render a textura bajo el coche, a un simple plano. Todo muy simple. Y resulta que me topé con otro bug acerca del alfa de los materiales, que curiosamente funcionaba bien sobre las partículas, pero no sobre un billboard suelto. Grrrr, se me empezaba a hinchar la vena de la frente en 3D.

Vale… respiré hondo e intenté dibujar un billboard en el que se vea solo lo negro y lo blanco se vuelva transparente (vamos, lo contrario de una modulación ADD). Bueno, hecho, no ha sido muy traumático. Ahora a por el gran final. Mmmm, otro mini-bug a la hora de gestionar mallas… ¡esto es un no parar señores! (menos mal que este era de los facilitos y con una pequeña traza todo resuelto). Un minutos más tarde ya estaba listo el render a textura, solo necesitaba que el coche se dibuje negro en vez de con su textura ¡y el color emisivo no funciona! Así que de golpe y sopetón, activé la iluminación y, al no haber luces, se renderizó en negro. Puff, menuda chapuza que quedó al final. Me parece que esto no ha sido una buena idea :(

Este es el resultado amigos:

Conclusión: Que para desperdiciar un render a textura en esta mierda más vale usar la típica sombra rectangular de toda la vida. Por lo menos me ha servido para depurar un par de bugs molestos. Y para darme cuenta de que realmente necesito dormir un poco.

 
Ultimate Spiderman

Juegazo. Y punto.

La historia está bien desarrollada y presentada excelentemente en forma de viñetas de cómic MUY dinámicas. No, en serio, MUY MUY dinámicas, pero conservando las onomatopeyas en los golpes, los saltos y demás. Todos los gráficos son muy simples y utilizan la técnica de cel-shading para simular el dibujo tipo cartoon. Gráficamente ninguna pega, porque además la ciudad en la que te mueves es enorme y tiene una distancia de generación muy lejana, por lo que siempre hay edificios hasta lo que alcanza la vista.

Ultimate Spiderman

Para captar la atención al principio del juego se introducen un par de misiones con secundario de lujo (la antorcha humana de los 4 fantásticos, y el amado por todos Lobezno, que hace una pequeña aparición como jefe final :D ). Spiderman se maneja de maravilla deslizándose entre edificios a golpe de telaraña y realmente es más una cuestión de cadencia que de machacar botones. Una cosa interesante es que solo podrás lanzar telaraña cuando haya algo cerca, por lo que nada de ir enganchándose a la nada, como en otros juegos. Aquí si no tienes edificios ni árboles (por ejemplo, cuando todo son casitas pequeñas) toca ir a pié.

Spiderman puede saltar mucho, y también tiene doble salto. Como mucho tiempo se pasa en las alturas, el juego es bastante permisivo con las caídas, así que no te haces daño hasta que realmente caes de mucha altura. También puedes pegarte a las paredes evidentemente, y también hay un movimiento para hacer un salto mayor impulsándote lanzando telaraña a los edificios de enfrente. Una delicia vamos.

El juego intercambia misiones de historia con otras que permiten despejar un poco y divertirse, como atrapar a los típicos atracadores (puedes atarlos en una farola), detener un coche en marcha (te subes en el techo y empiezas a golpearlo) o realizar carreras por la ciudad pasando por diversos checkpoints. El juego es muy completo y no se hace para nada pesado.

¿Y lo mejor de todo? pues que puedes manejar a Venom (¿acaso no es lo que todos queremos?). Con venom las cosas cambian, y principalmente nos moveremos a base de unos saltos enormes. De hecho, al final del juego se desbloquea Venom para usarlos por la ciudad a tu antojo, y cosechas puntos a base de destrucción. Evidentemente cada vez salen más policías y al final de la partida acabas dando saltos perseguido por varios helicópteros al más puro estilo Hulk (la película). Las misiones con Venom también suponen un cambio de chip que es de agradecer, además del hecho de vivir la historia desde los dos lados.

¿Qué más puedo decir? me ha encantado. Tiene una jugabilidad estupenda, unos gráficos que cumplen sobradamente su cometido, unas voces bastante buenas (al menos en inglés, ni quiero saber si ha sido doblado al español) y todo lo que se le pueda pedir (¿He mencionado ya que es DIVERTIDO?). Altamente recomendable.

 
CSI: Las 3 dimensiones del asesinato

Ya había jugado al primer juego de la serie, y tenía curiosidad por saber cómo habrían enfocado la tecnología 3D en lugar de usar los ya obsoletos videos quicktime. Para empezar, el juego ocupa 1/3 de lo que ocupaba el original y, aunque se ha perdido algo de definición en los personajes, los fondos lucen mucho mejor. Hacen uso de muchos reflejos y brillos en la superficie dando un aspecto envejecido/corroído a muchas superficies. Por otra parte no se puede cambiar la resolución, aunque he de decir que la configuración ‘alta’ utiliza antialiasing por lo que junto a la baja resolución hace que se produzcan difuminados similares a cuando ves un vídeo. Vamos, que a veces parece que estás viendo un vídeo como en los originales (aunque no es el caso). Los escenarios no van ‘foto a foto’ como el original, si no que generalmente puedes rotar la vista y mover la cámara por unos raíles imaginarios para encontrar todas las pistas posibles.

Esta aventura es mucho más guiada que la primera, que ya era bastante fácil, y el interfaz ha cambiado un poco, pues ahora solo te dejan elegir las herramientas cuando hay algo que hacer, y las limitan a las que tienen relación con lo que hay que recoger. Ántes podías tener duda de como recoger una pisada, pero ahora solo tienes dos herramientas entre las que elegir. Puede parecer algo útil pero, dado que el desarrollo del juego se basa en recoger pistas quizás sea limitar la jugabilidad.

El juego sigue siendo calcado al original, dividido en capítulos, compartiendo el caso con uno de los personajes principales de la serie. Había oído que en el original, las acrtices femeninas no habían participado en el doblaje; gracias a dios en españa han participado todos los dobladores de la serie, así que no hay ese problema. Lástima que las interpretaciones parezcan tan poco inspiradas, ¿acaso si es un videojuego hay que doblarlo mal a posta?. La música es como en la serie, nada nuevo: canciones relajadas de trip-hop con toques de electrónica. Por lo menos, esas sí que parecen sacadas de la serie.

En resúmen juego breve pero entretenido y dado que cuesta alrededor de 20€ lo que ofrece es suficiente. Lástima que esté tan poco optimizado, porque con tan poco detalle y en escenas tan controladas, a veces parece que el motor no puede con todo.

 
SDE v0.02

Ya está subida la última versión de SDE (0.02) con los cambios más recientes. En ella se puede ver el sistema de partículas y el sonido 3D, ya hay un sonido de llamas asociado a las partículas. Además podéis moveros por el ‘tablero’ de juego y ver como cambia el sonido según la posición del jugador. Las clases de sonido están terminadas, solo falta depurar un poco más las clase Effect que implementa distintos efectos de sonido (de momento solo reverb y eco, pero en cuanto funcione bien añadiré unos cuantos más).

Uno nunca sabe cuando subir una versión, porque siempre suele haber algo ‘en desarrollo’ y es dificil tener trozos de código más o menos estables, así que creo que habiendo casi terminado el módulo de sonido es un buen momento para hacerlo.

Yo desarrollo con la versión 2.0 de Managed DirectX pero, como se incluye el código fuente y una solución para el Visual Studio es fácil compilarlo para la 1.1 (creo que solo un par de llamadas de creación de shaders están afectadas).

EDITO: Ya están depurados los efectos de sonido (al menos funcionan, aunque seguro que todavía hay fallos), así que añadiré varios efectos más, que estarán listos para la próxima release. Total, no creo que a nadie le corra prisa :D Lo que sigue faltando es muchísima documentación, pero si alguien necesita saber algo que lo diga… ¡todos a la vez no!

 
GUI en SDE

Estos días he estado ocupado portando la mini-GUI que hice para el Swift a mi motor. Ahora tengo todas las clases que ya tenía hechas mas una progress bar, y es posible que haga algunas más si las necesito.

En la imágen podéis ver un botón (el que pone 'OK'), una edit box (vacía), una progress bar y abajo a la derecha una especie de combobox simplificada. Así en pequeñito no se vé muy bien, así que siempre podéis ampliarla, pero yo aviso que tampoco hay mucho que ver.

Lo próximo que tengo en mente es comenzar con el módulo de sonido y hacer algunas clases para crear y gestionar los estados de juego. Así ya tendré un poco de todo y podré ir desarrollando un poco más el juego de ejemplo. También me gustaría tener un módulo de red, aunque no sé si hacer yo uno propio (cosa que me vendría bien) o utilizar el que Samuel estaba haciendo para el Blast Zone. Lo que sea con tal de no estudiar paralelas

A ver si en unos días organizo un poco el código y puedo subir una nueva release de SDE.