ADMINBLOG PROYECTOSDESCARGASNORMASACERCA DE
Blog de Miguel Herrero
La habitación que concede deseos

No será una sorpresa decir que he terminado Hotel Dusk, aún tras haberle puesto a caldo en su respectivo análisis. Lamentablemente, a pesar de las enormes deficiencias que tiene el título en cuanto a la jugabilidad, la historia está muy, pero que muy bien.

Las tramas de todos los inquilinos del hotel están entremezcladas y todos juegan un papel más o menos importante en su historia, y en la de los demás personajes. Todos ellos están muy bien desarrollados y dan mucho juego, sobretodo según se acerca el final.

He tardado unas 11 horas en terminarlo, tirando de guía en bastantes puntos, porque odio tener que averiguar una forma de hacer las cosas cuando tengo otra mucho más sencilla enfrente de mis narices. Os voy a poner dos ejemplos. En uno, tenemos que rebobinar una cinta. Podemos usar un rotulador, pero como no es redondo, no consigue girar los dientes de la cinta.

La solución es usar un lápiz (que hay que buscar por el hotel, claro) sin embargo, hubiera estado bien que dejasen rebobinarla con la llave que llevas desde el comienzo del juego. Sinceramente, yo he usado miles de veces una llave para rebobinar una cinta y obligarme a usar un lápiz me parecía un pretexto un poco débil para que el jugador lo lleve encima y poder usarlo en otro puzzle posterior.

Otra de estas situaciones se da al final en el que (tranquilos que no os destriparé el argumento) iremos por un pasillo en el que, de forma muy marcada, se nota que la pared tiene un borde. Vamos, que tiene una pinta de puerta secreta ‘que tira pa’tras’. Y los personajes tardan un rato en darse cuenta.

Una cosa que me ha gustado es que el final no es cerrado. Realmente en el juego no se resuelve gran cosa. Es decir, seguimos sin encontrar a Bradley (el motivo principal del protagonista), pero se nos aclara toda la situación de lo que pasó en el hotel. Nos explican todo, pero no hay grandes re-encuentros. Por un lado es una forma descarada de dejar una segunda parte en el aire (que me consta que existen rumores de su desarrollo) y por otro deja una sensación agridulce en el jugador que, sinceramente, me gusta bastante. Al menos no es el típico final feliz con sabor a pastel.

Si para la segunda entrega mantienen el nivel narrativo y mejoran un poco la forma de adaptarlo a un videojuego, estaremos ante uno de los títulos ejemplares de la DS.

 
Dichosas partículas

A pesar de no dar un palo al agua en estas fiestas, he estado dándole vueltas sobre cómo implementar un sistema de partículas. El que hice para SDE era extremadamente ineficiente, pero creo que las bases las conozco lo suficiente. Me gustaría implementarlo en un shader, pero parece que no hay demasiada flexibilidad.

Las opciones que tengo (si alguien conoce alguna más, que me lo diga) son, implementarlo por software, implementar un sistema sencillo en un vertex shader (muy sencillo) o implementar algo más complejo en un shader aunque requeriría SM3.0 para poder leer una textura en el VS (y utilizarla para almacenar los parámetros de cada partícula).

Tendré que darle vueltas estos días a ver cual es la mejor solución, aunque la implementación por software va ganando, por aquello de que sea compatible tanto con shaders como sin ellos.

 
Feliz Navidad ’07

Pues eso, que estoy haciendo el vago a base de bien, y cuando no estoy con la DS o la PS2, simplemente no estoy :) . Como no puedo regalaros nada físico a través del blog, aquí os dejo una foto de ‘algo’ que tengo pegado en el armario.

¡Un saludo a todos!

 
Hoy es nochebuena y mañana navidad

Ya se que hoy NO es nochebuena exactamente, pero algo había que poner de título a un post sin una temática concreta. Además quién sabe cuando volveré a escribir otro post, es mejor asegurarse. Lo primero de todo, feliz navidad. Algunos ya estaréis de vacaciones y otros empezaréis pronto (espero).

Para empezar, diré que el trabajo en Melt ha empezado a dar sus frutos. Tras un par de días mezclando los nodos de escena, ahora mismo las transformaciones funcionan perfectamente, y ya he conseguido aplicar shaders a un objeto. Sé que me repito un poco, pero lo diré una vez más: OpenGL mola. Tras haber aprendido a programar gráficos con DirectX, el paso a OpenGL resulta sencillísimo. Las cosas son sencillísimas (al menos hasta dónde he llegado) e incluso GLSL me resulta más práctico que HLSL.

Por ejemplo, llegado a un punto, casi decido no hacer nada con la fixed-pipeline. Tendría que mantener las transformaciones para fixed y programmable y parecía una lata. Lo bueno es que con GLSL no hace falta pasarle las matrices al shader, sino que puedes meterlas en la fixed-pipeline y acceder a ellas desde el shader. No he hecho nada especialmente complicado por ahora, solo un shader que devuelve el color rojo. Espero que cuando se empiece a complicar el código la situación no empeore.

Cambiando de tema, ya tengo en mi poder una guitarra compatible con Guitar Hero. Al final, la he comprado en una tienda en lugar de por eBay (como me recomendó ditman) porque no encontraba nada con un precio más bajo. Aún así, tampoco creo que la vaya a encontrar más barata.

Llegó ayer y solo he podido probarla con el Guitar Hero Encore (una expansión del II) que dicen que tiene el peor tracklist de todos. Aún así me he divertido muchísimo y ayer terminé el nivel normal (aunque algunas canciones las hice bastante mal). Hoy por la mañana he avanzado hasta la mitad del nivel difícil. Sin duda, lo peor es que hay pocas canciones conocidas, aunque se dejan jugar.

Todavía tengo que coger mucha práctica y he de decir que cuando terminas, notas que la muñeca ha trabajado. Además, en algunas canciones que toco bastante bien con la guitarra real, se ve que el juego lo complica bastante más. Es decir, que hay casos en los que la canción real es más fácil de tocar.

Eso es todo por el momento, ¡que paséis una agradable nochebuena!

 
Programando en OpenGL

Últimamente he vuelto a reescribir lo poco que tenía hecho de Melt, porque no me gustaba el resultado. Estaba parcheando demasiado las cosas, y ahora procuro pensarlo todo mejor, para no arrepentirme en el futuro. Ya he avanzado más de lo que tenía la última vez, y tengo nodos con relaciones padre/hijo en una escena. Esta vez, la cosa ha sido más complicada porque he utilizado más clases propias, especialmente para representar entidades matemáticas como Matrices, Quaternions, etc.

De momento OpenGL no me está dando mucho la lata, y la mayoría de errores estaban en el código del Quaternion (¡como no!) . En cuanto a mi ritmo de trabajo, ha mejorado bastante gracias a una TODO-list en la que apunto pequeñas tareas que deberían poder realizarse en un día o dos, y en la que voy escribiendo los días que tardo en cada cosa. Esto me obliga a hacer pequeños cambios rápidos y que funcionan, en lugar de dejar el código ahí día tras días, lo que acaba haciendo que pierda el hilo.

En cuanto al diseño del motor, creo que está quedando bastante bien. Estoy simplificando al máximo las cosas, así que el usuario final pierde el control casi totalmente (aún más que con Ogre) pero creo que es lo correcto si lo enfocamos exclusivamente a desarrollar juegos rápidamente. La idea es que el usuario pase más tiempo desarrollando la lógica del juego que configurando el motor.

Lo próximo que me toca es añadir shaders a los objetos, espero que no sea difícil. Lo que sí lamento es que mi tarjeta no soporta FBO lo que me sería útil a la hora de hacer render-a-textura, por lo que tendré que tirar con los pbuffers de toda la vida.

También me estoy encontrando con dificultades a la hora de abstraerme de OpenGL. Ahora mismo, si quisiera usar DirectX, tendría que tocar todo el subsistema gráfico. OpenGL está por todas partes: en la ventana de renderizado, en los objetos (tienen un método dibujar que renderiza su VBO), y hasta las matrices están hechas para usar el estilo ‘por columnas’ que utiliza OpenGL.

Abstraerse de la librería gráfica es más que hacer un par de llamadas para dibujar, y me resulta difícil imaginar una abstracción para todo eso, salvo teniendo un montón de herencias. Al menos, de momento no es algo prioritario.

Os pondría alguna captura, pero digo yo que os podáis imaginar una ventana con dos cuadrados negros dando vueltas :)