En todas las vacaciones no he dado un palo al agua. Quizás haya hecho un poquito, pero muy MUY poco. Sin embargo, nada más llegar aquí, en un par de días he avanzado bastante, y tengo muchos de las tareas previstas completadas (por lo que necesitaré añadir nuevas tareas).

Todavía no estoy en disposición de hacer una primera release, porque me gustaría tener un poquito de los módulos principales, o por lo menos del de gráficos y entrada/salida. Ahora mismo no puedo mostrar gran cosa, ya que ni siquiera cargo mallas, pero os aseguro que lo que no se ve es lo que me ha dado trabajo.

Hoy he terminado (hasta que vea que algo no funciona bien, claro) la “comunicación” entre los shaders y los materiales. Además he retocado un poco el parser de XML y he hecho otro mini-parser para leer las variables de los shaders. Creo que ha quedado muy sencillito y muy cuco. Habrá que ver qué tal es el rendimiento cuando sobrecargue un poco la pantalla, pero ya se sabe que lo primero es hacer que funcione, y luego ya habrá tiempo (o no) para optimizar.

A groso modo, tengo hecho un sistema básico de cámaras (aunque como no hay entrada de teclado, no se puede mover), un sistema de ‘gamestates’ bastante decente, un árbol de escena (con sus transformaciones, nodos padre/hijo y cacheo de matrices para evitar recalcular todo cada frame), gestión de shaders, texturas y geometrías (con el clásico conteo de referencias) y otras tantas cosas más.

Dentro de poco, en cuanto finalice del todo los materiales y cargue modelos y otras geometrías (¿alguien dijo terrenos? :D ) ya tendré lo básico y empezará la parte más ‘enseñable’. Aunque todavía me quedan algunas cosas en el aire que no están del todo claras.

Sigo dándole vueltas a si hacerlo todo en la CPU y permitir el uso de la fixed-pipeline u obligar a usar shaders. OpenGL pone muy fácil mantener la retrocompatibilidad, pero ciertos efectos (como las particulas o el billboarding) preferiría hacerlos en la GPU simplemente por curiosidad acerca del rendimiento. Supongo que hoy en día, hasta las Intel tienen soporte de shaders medianamente decente y, admitámoslo, nadie va a usar mi motor para nada. Pero sigo indeciso.

También dudo sobre la parte de la GUI. No se si optar por un diseño sencillito, o permitir skinning de los widgets. Quizás debería hacer uso de los dos métodos, o mirar cómo lo hacen otras librerías. El tener una GUI única sencilla tampoco me parece mal, no hay más que ver los mods del Half-Life 2, todos con ese interfaz minimalista con un par de colores.

Eso es todo por el momento. Aunque ya tenga esto un poco más avanzado, realmente tengo curiosidad por asistir al curso de Jesus de Santos que, aparte de caerme muy bien, parece que sabe del tema. Está claro que me queda mucho por aprender sobre motores, aunque tampoco es que quiera pasarme toda la vida con ello. Soy demasiado despistado como para ser un buen programador, y lo que realmente me interesa es la creación de videojuegos (audio, vídeo, todo en general) y no picar código como un condenado.

La imagen que parte este post en dos es una captura de lo que tengo hasta ahora, con un quad que tiene multitextura (una textura es piedra y la otra es césped) que se aplica con un shader en GLSL. Nada del otro mundo… por ahora.