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