ADMINBLOG PROYECTOSDESCARGASNORMASACERCA DE
Blog de Miguel Herrero
Septiembre se acerca

Ya han pasado los examenes de Junio (para bien) y ahora mismo mi única preocupación es terminar el proyecto. El plan es presentarlo a mediados de Septiembre, y creo que es posible presentar algo decente en ese plazo.

Ahora mismo me encontraba enfrascado en el desarrollo del motor físico. Inicialmente iba a ser 2D, pero encontré un libro bastante decente con el que ya he hecho una simulación en 3D simplificada. El problema ha sido al incorporar los cuerpos rígidos a la simulación. Ahí he visto que no era tan fácil la cosa, y que no me iba a dar tiempo ni en broma.

Así que cambio de planes, voy a terminar la versión simplificada del motor para tener una física sencilla pero que funciona relativamente bien y así poder dedicar más tiempo a re-diseñar el motor en Agosto. Se supone que en lo que queda de mes tendría que terminar el motor físico y el motor de audio (no creo que me lleve más de un par de días).

Estoy aprendiendo un montón, y me doy cuenta que hacer algo tan ambicioso como lo que tenía en mente no es moco de pavo y hay que poner limitaciones. No puedes hacer algo sencillo y que a la vez permita mucha profundidad, son conceptos contrapuestos. Yo me estoy decantando por lo primero, espero que salga algo decente de todo esto.

 
Documentando

Hace unos posts escribía sobre una pequeña crisis con el proyecto, porque cuando uno tiene que improvisar sobre la marcha, hay cosas que salen bien, pero otras no tanto. El módulo de interfaces de usuario está en esa segunda categoría. Es decir, funcionar funciona, pero tengo la sensación de que a la larga algo va a terminar saliendo mal.

Así que he decidido para y ponerme a diseñar el motor en condiciones. Tomaré lo que llevo hecho hasta ahora como un prototipo (sobre el que aún tengo que probar dos módulos más: el de sonido y el de física) y re-diseñaré todo sobre el papel. Evidentemente, voy a aprovechar la mayoría de cosas que tengo hechas, pero quizá cambie alguna que otra trampa que he tenido que hacer por ahí.

Curiosamente, me parece que la documentación hasta el momento no está saliendo mal. Solo llevo hechos hasta los requisitos y unos pocos diagramas pero, a pesar de que lo mío no es escribir documentación (quizá la falta de costumbre) el resultado es bueno, por el momento. Y sin resultar un coñazo, algo que para mí es lo principal a evitar, especialmente con la gran cantidad de relleno que suelen llevar los tomos de los proyectos fin de carrera.

Incluso estoy organizando un poco la presentación, aunque ya sé que todavía queda mucho para eso, pero a partir de un blog de Dani Gayo terminé viendo varias ponencias sobre el tema. Quizás salga con vaqueros azules y polo negro ‘a lo Steve Jobs’ a ver lo que pasa :D

Esperemos que las cosas sigan avanzando poco a poco. No se si me dará tiempo a terminarlo para finales de Junio, no puedo asegurar nada. Pero de Septiembre no pasa, eso seguro.

 
Quién mucho abarca

Hoy he pasado un par de horas programando Flexo y he tenido una revelación. No es que sea un software especialmente grande, pero digamos que estoy perdiendo el control de la situación. Posiblemente consiga terminarlo para presentarlo como PFC, no creo que tenga problemas, pero el diseño se está desvirtuando más de lo que me gustaría.

El principal problema me lo estan dando la comunicación entre subsistemas. Mi idea era que todo estuviera bien integrado y que se reutilizase un montón de código y todo eso. Pero eso solo hace que tengas unas jerarquías de clases monstruosas y tengas que hacer ciertas concesiones en algunos casos, pues es imposible hacer todo tan genérico como yo pretendía.

Por un lado, evidentemente hay cosas que han salido muy bien, y estoy contento con ellas, pero otras no me acaban de convencer. Quizás este sea uno de los problemas de llevar el proyecto solo (y alargarlo durante tanto tiempo): se pierde la perspectiva.

Quizás solo sea un mal día, un escollo como otro cualquiera en el desarrollo de un proyecto. Pero sí que echo de menos tener el contrapunto, tener alguien que me pare los pies o que me de otro punto de vista. En fin, que mañana será otro día.

 
Flexo Gui System

Hoy quiero enseñaros lo que he estado haciendo con Flexo las pasadas semanas. Me he centrado completamente en el sistema de interfaces de usuario.

He estado un poco perdido en los detalles, por lo que no hay comportamiento real por ahora, pero he implementado un buen número de características bastante útiles. Por ejemplo, he creado un fichero tipo XML para cargar los interfaces, manteniendo las posiciones y tamaños de los componentes de forma relativa, en lugar de absoluta. También hay relaciones padre-hijo entre componentes, y he tenido cuidado de mantener la proporción de los componentes al cambiar de resolución, especialmente con las imágenes.

También he añadido algunas características al texto. Ahora las palabras se ajustan al espacio al que se han asignado, alineadas a la izquierda (hacer un justificado del texto hubiera sido muy problemático). Debería hacer un tema con texturas (sé que el que hay ahora es rematadamente feo), pero eso será después de que añada comportamiento a los componentes y añada algunos nuevos (al menos barra de progreso y algún tipo de combobox).

También tengo que integrar control de foco, porque quiero poder controlar los interfaces con el teclado o pad. A ver si consigo terminar algunas de estas cosas hoy por la tarde…

 
Más avances

Llevo unos días de no parar, principalmente programando. Y posiblemente, la mitad de ese tiempo haya sido depurando. Pero creo que hoy me tomaré el resto del día libre :)

Anteayer finiquité el sistema de partículas. Ahora tengo partículas que se pueden duplicar (solo cuando el emisor está inmóvil, para poder calcular sus posiciones de forma local) y utilizar un mismo sistema de partículas en varios lugares. Si el emisor cambia de posición, entonces hay que crear un nuevo sistema de partículas, porque la geometría se calcula de en el espacio de coordenadas global.

En la siguiente captura, se ven dos sistemas que emiten partículas rojas, que son el mismo sistema de partículas duplicado. Por otro lado hay un sistema que emite partículas azules que da vueltas alrededor de los otros dos:

Después de eso, me puse a pensar sobre una clase para manejar sprites y pensé en hacer una herramienta similar a la de generación de fuentes, pero para hacer las animaciones. Al final, ha quedado menos ‘usable’ que como había pensado en un principio, pero es que no consigo que redibuje bien los componentes en el Frame. El resultado por el momento es este:

Esta mañana estuve pensando en hacer una pequeña ventana de previsualización para la animación, y creo que ya sé cómo hacerlo, aunque tendré que darle algunas vueltas más para que acabe de encajar.

Edito: soy débil… no he podido resistirme a hacer la ventanita de preview. ¡No puedo dejarlo!