domingo, 27 de abril de 2014

Hito 4 (25/04/2014)

English version

Un nuevo hito, nuevas funcionalidades, nuevas optimizaciones, nuevos bugs, y nuevos objetivos, pero también la preocupación de ver el final del curso TAN cerca. Vamos a remarcar algunas cosas:

En primer lugar merece mención el nuevo sistema de generación procedimental. Además de cambios de menor importancia, lo más significativo es el abandono del texto plano para representar los mapas. Es decir, ahora la generación procedimental no genera un archivo ASCII, y luego se procede a rellenar la información de las casillas de la mazmorra, sino que la generación realiza directamente el segundo paso.
Eso sí, por falta de tiempo, la generación de salas de Isidro no se ha podido adaptar a este nuevo sistema, por lo que en el vídeo veréis una generación temporal menos precisa para colocar ciertas cosas. Lo que sí se ha añadido es la escalera de fin de nivel como elemento de la generación procedural, así como la colocación del jugador en un punto lejano a ella.

El siguiente punto interesante a comentar es el combate, y aquí tenemos varios avances. Primero, disponemos de sistemas de ataque y defensa y estados alterados (poison). Segundo, disponemos de un feedback bastante alto sobre el combate. Esto se debe a la implementación de los billboards (que vienen a ser texturas que sitúas en el espacio y rotan siempre hacia la cámara), usados para mostrar el daño y daños críticos, bloqueos y esquivas sobre la cabeza de los enemigos a los que atacamos. Además, se ha implementado un shader que resalta el contorno de los enemigos de un color determinado, para indicar a qué enemigo tenemos "seleccionado", que viene a ser a qué enemigo vamos a alcanzar si atacamos en esa dirección.

También se ha implementado un sistema de oclusión lógica de entidades. Esto viene a ser que las entidades que estén a una distancia muy lejana de la sala actual del jugador, no tendrán turno ni realizarán ninguna acción, por lo que ahorramos bastante cómputo y los turnos serán más ágiles (no tienes que esperar a que mueva alguien que está horriblemente lejos). Esto es posible gracias a que el nuevo sistema de generación procedimental, genera un grafo para la mazmorra, y conocemos la adyacencia entre salas de una manera muy sencilla. Queda pendiente una oclusión lógica para las antorchas (necesitamos apagar luces como sea), ya que para éstas hay que seguir un algoritmo diferente que se encargue de apagar incluso las de nuestra misma sala que no estén afectando a los elementos que vemos actualmente con la cámara.

En cuanto a arte, llegó tarde, pero llegó a tiempo el primer enemigo de nuestra artista, el constructo de piedra. Sustituye a nuestro troll, cosa que llena nuestro corazón por un lado de tristeza, pero por otro lado supone un triunfo ya a estas alturas necesario. Por ahora dispone de animación Idle y Attack.

Finalmente, ¡máquinas de estado! Sencillas, pero sí que estuvieron para el hito. Tenemos un comportamiento muy básico para nuestro constructo basado en detección del jugador por el algoritmo de FOV. Mientras no nos ve, el enemigo patrulla. Si nos ve, va a por nosotros, y si nos tiene en rango ataca mientras sigamos en rango. Aún no hay detección de sonido, olfato, ni "tacto" (no se da cuenta de que le apuñalas por la espalda).

Mil cosas para el próximo hito (tampoco muy lejano), pero ya es hora de meter algo de contenido, interfaz (lo prometemos, esta vez sí que sí), generación procedimental terminada, oclusión de antorchas, más arte (nos comentan cosas bastante interesantes), más comportamientos de máquinas de estado, mejor percepción y mejor sistema de sonido. ¿Suena mucho? Pues sí, es un tocho bestial, pero estamos a alturas de ponernos las pilas, eso está claro. Intentaré informar más durante el desarrollo del hito.

Ah, y el vídeo del Hito 4, sencillo, pero enseña un poco cada cosa que se ha explicado aquí. ¡Disfrutadlo!


viernes, 4 de abril de 2014

¡Cómo nos cunde este hito!

English version

Sí, el período entre el hito 3 y el hito 4 es ínfimo, minúsculo, insignificante, y con una semana santa que... vale sí, hay tiempo para currar... pero sigue siendo Semana Santa (vacaciones, tocarse las narices, ya me entendéis...). Por eso es que estamos a full en estas semanas, ¡y no veas si está dando resultado el asunto!

Vamos a las novedades (spoiler), que son lo importante.

Primero, ¡las antorchas! (Juan estará más que orgulloso). No, no hablo de la tarea que teníamos pendiente de meter antorchas en la mazmorra generada procedimentalmente (que también están), sino de antorchas antorchas. Esto significa que ya tenemos partículas, y la verdad que para estar hechas por un programador con vagas dotes para el diseño gráfico, ¡están estupendas! Imagencita al canto:


Después, mejora de la pantalla de carga. Hay una serie de "tooltips" (por ahora más divertidas que informativas) e imágenes posibles, y se escoge un elemento de cada aleatoriamente en cada pantalla de carga. ¡Esto me lo reservo para enseñarlo en el hito!

Animaciones de muerte. Bueno... de animaciones nada, por ahora, pero podríamos tenerlas. Vamos, las entidades ahora mueren, pero tardan un tiempo en desaparecer.

Otro detalle gráfico estupendo: ¡BILLBOARDS! En cristiano, "mensajitos con daño e información de los ataques encima de la cabecita del bicho". Ya hay un sistema para mostrar el daño hecho a los enemigos, así como información de golpes críticos, esquivados, etc... Falta refinarlo un poquito, pero mola un montón.


Y dos últimas cosas muy prometedoras:

  • Máquinas de estados: Por fin el curro de Juan le ha dado los frutos que se merecía. Parece que la tregua con luabind ha llegado, y los beneficios (profits) con ella. Todo apunta a que ya hay un sistema montado que permitirá construir máquinas de estado de forma más que aceptable. ¡Estamos todos en ascuas!.
  • Rol: Madre mía, qué capacidad tiene Roberto para encerrarse en su cueva llamada Lua, y salir con millones de cosas relacionadas con el rol, pero a lo bestia, que te preguntas si de verdad necesitamos TANTO rol. Pues no sé cuánto necesitaremos, pero a la velocidad que va, esto estará engullido. Yo no puedo estimar lo que tendremos para el hito en este aspecto, pero la experiencia me hace ser optimista.
¡Volveremos con más!


lunes, 31 de marzo de 2014

Hito 3 (21/03/2014)

English version

¡Qué pronto ha llegado el Hito 3! (y qué brutalmente pronto que va a llegar el Hito 4 por culpa de la Semana Santa).

Bueno, no vamos a quejarnos, porque la verdad que en este hito el juego ha ganado muchísimo, sobre todo, en aspecto gráfico (joder, ¡está quedando precioso!). Si es que sólo hay que ver el powerpoint que hemos hecho, me atrevo a decir que el mejor que ha hecho cada miembro del grupo en su vida. ¡Marina! te queremos (es nuestra artista, y sí, NUESTRA, ¡que ni se te pase por la cabeza intentar robarla!). Coñas aparte y dejando aparte la presentación, en serio, se lo ha currado un montón, le ha dado toda la gracia visual que caracteriza al juego, y junto a las peleas de Juan con los shaders y la iluminación, se ha logrado crear una maravilla.

Más cosas que traemos en este hito: ¡Por fin! más estados de juego. Concretamente el estado de pausa, y modificada la arquitectura para que el mapa se genere DESPUÉS del menú (suena útil, ¿verdad?) en lugar de antes, como precursor de lo que sería el tener varios niveles y pasar de uno a otro cuando convenga. También integramos el sonido, aunque con algunos problemillas (nada grave, hombre), lo importante es que está, se escucha, y se posiciona. ¡Por fin tenemos Lua integrado! y CEGUI migrado a la misma bajo petición del tutor (¡con lo bien que se porta CEGUI cuando se le deja quietito!). Para quien no sepa nuestras intenciones con Lua, que venís a ser todos, su principal función va a ser nuestro motor de rol. Lua es nuestra base de datos de objetos, enemigos, información del jugador, etc... Y madre mía, ¡qué de rol ha metido nuestro compañero Roberto en los 5 minutos antes! Esto de Lua va a dar muchísimo juego (literalmente). Pero del rol ya hablaremos próximamente, que tendremos cosas mucho más sustanciosas.
¿Qué más puedo destacar? Bueno sí, hay una interfaz muy básica, pero esto es un paso importante ya que significa que la artista empieza a entender (y cagarse en cada punto y coma de) CEGUI, y joder, cómo es que no lo he comentado hasta ahora..., tenemos Generador Aleatorio de Mapas. Sí, uno de los features más importantes de nuestro juego. Decide aleatoriamente todo, tamaño, cofres, enemigos, salas, pasillos, forma de la sala, dificultad, ¡y lo conecta todo a la perfección! Una lástima que para el vídeo, el generador aleatorio aún no colocaba antorchas (¡que ojo, existen! pero no las colocaba).

Bueno, esto es lo más importante y visual. También comento que se ha modificado la arquitectura para permitirnos hacer cosas más chulas y útiles, como desactivar componentes en cualquier momento, y esa clase de cosas que no le interesan a nadie, y menos si ese alguien ha conseguido leer hasta aquí. Así que cerrando, ¡dentro vídeo del hito 3!:


jueves, 6 de marzo de 2014

Hito 2 (07/02/2014)

English version

Ya el segundo hito. Esta vez, habiendo entendido cómo funciona la arquitectura por debajo
(incluso habiendo realizado unos cuantos cambios a nuestro favor), y habiendo hecho un poco de diseño, el avance ha sido rápido y los resultados son muy visibles. Además, nuestra artista ha demostrado lo que vale con sus primeras texturas. Comentemos los avances:


Respecto a la arquitectura, hemos hecho cambios de bajo nivel, como puede ser la optimización del sistema de mensajes, y un sistema que permite indicar la frecuencia de actualización de cada componente. Un cambio muy importante es la implementación de un sistema de arquetipos para instanciar entidades, ya que en nuestro juego no tendremos un mapa fijo (al ser procedimental). Lo que necesitamos en su lugar es almacenar los valores configurables de las entidades en un mapa de arquetipos, y a partir de ahí instanciar entidades copiando dicha información. Para ello, ha sido necesario también crear un gestor automático de nombres únicos para las entidades. Respecto a los gráficos, hemos creado una malla estática a la que incorporamos las entidades gráficas que no van a modificarse (suelo, pared, techo y escalera).

En el ámbito de lógica, también tenemos novedades. La primera de ellas es un sistema de turnos dinámicos, que sustituye al provisional del que partimos en el hito anterior. Ahora se trata de una lista ordenada por un valor de "delay", que depende de la acción realizada y de la velocidad de la entidad. Se recoloca la entidad según este valor tras terminar su turno.
Otra novedad es el almacenamiento de la información de cada casilla. Cada casilla puede tener un único "actor" (enemigo o jugador), y tienen propiedades (si se puede ver a través de ella y si puede ser transitable). Finalmente, una lista de entidades no actores de la casilla (para los objetos, cofres y puertas).
También hemos establecido nuestro sistema lógico de colisiones basándonos en la información del mapa, por lo que los actores no pueden moverse a una casilla marcada como no transitable.
Finalmente, el jugador puede interactuar ya con las puertas (las cuales pasan de no transitables a transitables), y puede atacar a los enemigos y ser atacados por ellos.

Pasando al tema de la IA, disponemos de un A+ adaptado para un mapa de casillas. Se calcula una ruta a un punto dado y será seguida por el enemigo, e incluso se tiene en cuenta el coste debido a giros para dar prioridad a los desplazamientos no frontales. No hay mayor IA por ahora.

Respecto al control del jugador, se han añadido las acciones "esperar", "interactuar" y "atacar". Al desplazarse el jugador, la cámara dispone de un pequeño "traqueteo" que da mayor realismo al movimiento. A la rotación libre de la cabeza del jugador se le ha añadido el eje y, por lo que ya no estamos limitados a mirar hacia la izquierda y la derecha. Al hacer un movimiento inválido (a una casilla no transitable), no perderemos turno, y la cámara hará un movimiento de "rebote" que indicará que la acción no pudo realizarse con éxito.
Un dato a destacar es que todos los actores (jugador y enemigos) usan el mismo controlador, y la diferencia reside en quién les da las órdenes (teclado y ratón o bien la IA).

Finalmente, hemos añadido comandos útiles a nuestra consola de depuración, y de hecho su uso ya empieza a ser útil para depurar el juego:
    • Comando freebird: Activa o desactiva la cámara libre para explorar el mapa
    • Comando spawn: Instancia entidades en ejecución (Pruebas de combate)
    • Comando grid: Muestra u oculta una rejilla que indica el límite de las casillas
    • Comando spawncube/destroycube: Crea en ejecución un cubo para marcar alguna posición

Aquí tenemos el vídeo correspondiente el hito 2:



Hito 1 (20/12/2013)

English version


Llega el primer hito para Master Dungeon. Con muy poco tiempo de desarrollo, peleándonos con la arquitectura, y tratando de entender dónde se hace cada cosa, ha sido toda una batalla conseguir tener algo de provecho que enseñar.
Aun así, podemos presumir de algunos logros:

En primer lugar, disponemos de un cargador del mapa de la mazmorra. A estas alturas nos conviene algo sencillo. Disponemos de un fichero ASCII en el que cada caracter representa un tipo de casilla (puerta, pared, solo suelo, etc...), y se almacena. Posteriormente, se instancia en el mundo real cada elemento teniendo en cuenta un tamaño de casilla, tal y como se indica en el fichero. La idea es que posteriormente haya un generador procedimental que cree la información de la mazmorra en ejecución.

Para poder instanciar los objetos, hemos tenido que pelearnos con el 3DMax y OgreMax (exportador de 3DMax para Ogre). Hemos utilizado modelos muy sencillos gratuitos encontrados por Intenret, ya que ahora mismo lo que nos interesa es ver que cada cosa se instancia donde indica el fichero de la mazmorra, y que los objetos no se solapan ni quedan separados.

También disponemos de un sistema de movimiento por la mazmorra para el personaje, por ahora con un "sistema de turnos" simulado (los turnos pasan cada cierto tiempo). El jugador puede desplazarse en las cuatro direcciones básicas, puede rotar a la izquierda y a la derecha, y puede mover la cabeza 45º a cada lado (esto último no cuenta como acción).

Finalmente, y no por ello menos importante, contamos con una herramienta de depuración para nuestro juego, una consola de comandos configurable. Por ahora, disponemos de un comando showmap, que crea una pequeña vista aérea de la mazmorra.

Esperemos poder ofrecer mucho más (y mejor) para el hito 2, una vez tenemos ya la arquitectura entendida y más rodaje con el entorno de desarrollo.

Aquí pongo el vídeo correspondiente el hito 1:


Share