Entrega del hito final para la asignatura de videojuegos 2.
Antes de nada decir que en este issue se incluyen los entregables de todos los hitos, estuviesen retrasados para este hito final, o ya terminados en otros hitos. Estos últimos se adjuntan para poder tener acceso a ellos de manera inmediata pero su desarrollo e implementación están igual que en las anteriores entregas, dado que se daban por terminados. En cada entregable se indicará si su versión es la misma que en anteriores entregas.
Los ítems 9,10,12 y 13, se tratan en un mismo vídeo explicativo para hacer mas cómoda la entrega y la evaluación. Ademas de eso en el apartado de cada uno se incluye una breve explicación. Los items 24, 25 y 26 se entregan como uno solo en un archivo de drive. Más información en el item 24.
Todos los entregables se prueban en el mismo archivo ejecutable, por lo tanto el mismo archivo de proyecto. En caso de que algún entregable tenga una variación para la ejecución, se indicará en la descripción del mismo y se adjuntará el ejecutable y el proyecto con dicha variación.
Aunque todo el código fuente se encuentra en la carpeta "Proyecto", en cada entregable se adjuntará el código fuente que le corresponde, si es posible.
Entrega general
Aquí un enlace al archivo comprimido que contiene, por un lado, el proyecto para compilar; y, por otro, el ejecutable ya compilado para probar.
Controles del Juego
Click izquierdo para manejarse por el menú
Movimiento ingame con click derecho (mantener, o un solo click)
Q para ataque normal
W para disparar rayo paralizador
Shift para movimiento lento (mantener)
Esc para menú ingame
Entregables:
Ítem V2.01 - Diseño e implementación de la arquitectura basada en objetos
Sin cambios: Se han añadido más clases, aunque la arquitectura sigue siendo la misma
Esta es la parte que más tiempo nos ha llevado en el proyecto, ya que hemos pasado de tener un juego sin estructura ni arquitectura aparente, a algo semi-decente en cuanto a arquitectura y estructura. Hemos perdido demasiado tiempo con esto, porque hemos rehecho el juego prácticamente (con una base) y añadiendo algunas pocas cosas.
La arquitectura se puede ver en el código fuente enlazado anteriormente, y consta de una estructura organizada de la siguiente forma:
Una clase Game, que tiene un Menú y una Escena, la cual, tiene un Mundo, un TriggerSystem y una serie de Entidades (Triggers, Player y Enemigos). El Mundo es estático y está constituido por los Enemigos y un Mapa. Por último, tenemos diferentes tipos de Triggers (Puertas, Municion, Vida, etc...) y diferentes tipos de Enemigos (Médico, Guardia, Dron).
Ítem V2.03 - Control del player por motor de físicas 2D, dynamic o kinematic
El control del player se hace con el motor de físicas a través de impulsos, de esta manera el jugador se chocará con los muros o las puertas cerradas, y con los enemigos.
Ítem V2.04 - Utilización de propiedades físicas en las mecánicas jugables
Las físicas se utilizan sobretodo para comprobar si hay muros entre el jugador y el enemigo, de esta manera saber si nos está viendo o no. Más información en el vídeo del sistema de percepción sensorial de los NPCs
Ítem V2.05 - Uso de trazado de rayos y otros tests de las físicas
Se utiliza un trazado de rayos para detecar los muros entre un enemigo y el jugador, de esta manera podemos saber si hay obstáculos en su campo de visión.
Ítem V2.06 - Sistema de depuración visual de las físicas
No realizado
Ítem V2.09 - Mecánicas básicas entidades sin IA
Como se ha explicado en la informacion general, los items 9,10,12 y 13 se ven resumidos en un único vídeo.
Vídeo explicativo en YouTube
La clase Map.cpp carga los niveles creados leyendo los .tmx. Le cada capa y posiciona cada objeto según los datos, crea los enemigos, etc. Al cambiar de nivel, borra todos los elementos del nivel actual y carga el siguiente. Más específico en el documento de especificación del formato propio,
Ítem V2.16 - Creación de un editor de niveles
No realizado
Ítem V2.17 - Diseño y creación de niveles
Se han realizado dos niveles en ficheros .tmx de Tiled, los cuales se leen ingame al cargar el nivel correspondiente.
Los niveles se pueden encontrar en el directorio Juego/resources/Mapas
Ítem V2.19 - Implementación de cámara de seguimiento
Sin cambios
La única cámara del juego sigue constantemente al jugador desde una vista aérea.
La cámara se crea en la clase Scene.cpp al cargar el nivel, y se updatea en el bucle del juego dentro de la misma clase.
Nuestro GUI se inicializa desde la clase GraphicsFacade, por tanto, en el código fuente específico del entregable lo incluiré también, tan solo para que se vea esta inicialización. Además, se incluirá también la clase Image de la Fachada de gráficos también, que es donde tenemos las llamadas para cargar y pintar las imágenes, de momento llamando a Irrlicht.
El GUI está dividido principalmente en 2 partes:
GUI_Components: son todos los componentes que nos encontramos en los Menús, ya sea botones, desplegables, títulos o el control del volumen.
HUD: esta parte la explicaré más detallada en su entregable correspondiente.
Ítem V2.25 - Implementación de menús
Sin cambios: Destacar que ahora contamos con una pantalla de carga.
El Menú, como he dicho en el anterior entregable, está compuesto por GUI_Components, con lo que está estrechamente ligado al GUI.
Nuestro Menú está disponible tanto antes de comenzar el Juego como In-Game (pulsando la tecla ESC), con la única diferencia entre ambos de que el botón de Nueva Partida se convierte en uno de Continuar.
Nuestro Menú, por tanto, nos permite empezar una nueva partida o continuar en la que estamos, salir del juego y ver una serie de opciones:
Subir y bajar el volumen global del juego.
Cambiar la resolución de la pantalla. Esta utilidad aun no está disponible, ya que como aun no tenemos integrado nuestro motor gráfico e Irrlicht no nos facilitaba realizarlo, decidimos habilitarlo una vez que tengamos nuestro motor gráfico integrado.
Ver los controles. Esta imagen no está actualizada, ya que ha habido cambios de última hora con los controles, para la presentación esto estará arreglado.
Cabe destacar, que el sonido del menú ya está 100% funcional y disponible, teniendo música de fondo y sonido en los botones. Esto ayudará a ver si el volumen general se está subiendo o bajando utilizando la funcionalidad que hemos realizado.
Ítem V2.26 - Implementación del HUD
Sin cambios
El HUD de nuestro juego solo está disponible mientras jugamos y, de momento, dispone de un cuadro informativo del rayo láser con su cuadro de diálogo que aparece o no dependiendo de si está el cursor encima y una barra de vida.
No hemos priorizado en completar el HUD, porque pensamos que como es algo más visual, hemos priorizado otros entregables, dejando este ser completado para la presentación.
En un principio, lo que se añadirá de cara a la presentación serán más cuadros informativos, con la información del ataque y de andar en sigilo, un overlay para estos cuadros informativos, una pantalla de Game Over cuando nos maten y unos mensajitos de qué hemos recogido cuando recojamos o munición o vida o una tarjeta para abrir una puerta.
Ítem V2.27 - Implementación de clipping (comparativa de FPS con/sin oclusiones)
No realizado
Ítem V2.33 - Implementación de cesped y vegetación
No realizado
Ítem V2.35 - Implementación de sistemas de partículas
Información general:
Entrega del hito final para la asignatura de videojuegos 2.
Antes de nada decir que en este issue se incluyen los entregables de todos los hitos, estuviesen retrasados para este hito final, o ya terminados en otros hitos. Estos últimos se adjuntan para poder tener acceso a ellos de manera inmediata pero su desarrollo e implementación están igual que en las anteriores entregas, dado que se daban por terminados. En cada entregable se indicará si su versión es la misma que en anteriores entregas.
Los ítems 9,10,12 y 13, se tratan en un mismo vídeo explicativo para hacer mas cómoda la entrega y la evaluación. Ademas de eso en el apartado de cada uno se incluye una breve explicación. Los items 24, 25 y 26 se entregan como uno solo en un archivo de drive. Más información en el item 24.
Todos los entregables se prueban en el mismo archivo ejecutable, por lo tanto el mismo archivo de proyecto. En caso de que algún entregable tenga una variación para la ejecución, se indicará en la descripción del mismo y se adjuntará el ejecutable y el proyecto con dicha variación.
Aunque todo el código fuente se encuentra en la carpeta "Proyecto", en cada entregable se adjuntará el código fuente que le corresponde, si es posible.
Entrega general Aquí un enlace al archivo comprimido que contiene, por un lado, el proyecto para compilar; y, por otro, el ejecutable ya compilado para probar.
Controles del Juego
Entregables:
Ítem V2.01 - Diseño e implementación de la arquitectura basada en objetos
Sin cambios: Se han añadido más clases, aunque la arquitectura sigue siendo la misma Esta es la parte que más tiempo nos ha llevado en el proyecto, ya que hemos pasado de tener un juego sin estructura ni arquitectura aparente, a algo semi-decente en cuanto a arquitectura y estructura. Hemos perdido demasiado tiempo con esto, porque hemos rehecho el juego prácticamente (con una base) y añadiendo algunas pocas cosas. La arquitectura se puede ver en el código fuente enlazado anteriormente, y consta de una estructura organizada de la siguiente forma:
Ítem V2.03 - Control del player por motor de físicas 2D, dynamic o kinematic
El control del player se hace con el motor de físicas a través de impulsos, de esta manera el jugador se chocará con los muros o las puertas cerradas, y con los enemigos.
Ítem V2.04 - Utilización de propiedades físicas en las mecánicas jugables
Las físicas se utilizan sobretodo para comprobar si hay muros entre el jugador y el enemigo, de esta manera saber si nos está viendo o no. Más información en el vídeo del sistema de percepción sensorial de los NPCs
Vídeo explicativo en YouTube
Ítem V2.05 - Uso de trazado de rayos y otros tests de las físicas
Se utiliza un trazado de rayos para detecar los muros entre un enemigo y el jugador, de esta manera podemos saber si hay obstáculos en su campo de visión.
Ítem V2.06 - Sistema de depuración visual de las físicas
No realizado
Ítem V2.09 - Mecánicas básicas entidades sin IA
Como se ha explicado en la informacion general, los items 9,10,12 y 13 se ven resumidos en un único vídeo. Vídeo explicativo en YouTube
Tenemos distintos tipos de triggers: -Puertas -Torreta -Apisonadora -Recogibles (vida++, velocidad++, munición++, llave++)
Ítem V2.10 - Mecánicas de acción
Como se ha explicado en la informacion general, los items 9,10,12 y 13 se ven resumidos en un único vídeo. Vídeo explicativo en YouTube
Como mecánicas de acción tenemos para el jugador: -Movimiento lento -Movimiento normal -Disparo -Golpear
Las mecánicas de los enemigos están mejor explicadas en el documento del entregable de V1: Enlace al .pdf ubicado en google drive
Ítem V2.12 - Mecánicas de puzzle
Como se ha explicado en la informacion general, los items 9,10,12 y 13 se ven resumidos en un único vídeo. Vídeo explicativo en YouTube
Ítem V2.13 - Power-ups y elementos adicionales
Como se ha explicado en la informacion general, los items 9,10,12 y 13 se ven resumidos en un único vídeo. Vídeo explicativo en YouTube
Ítem V2.14 - Formato propio para la definición de los niveles (documento con la especificación del formato
Enlace al pdf en Google Drive
Ítem V2.15 - Creación de un cargador de niveles
La clase Map.cpp carga los niveles creados leyendo los .tmx. Le cada capa y posiciona cada objeto según los datos, crea los enemigos, etc. Al cambiar de nivel, borra todos los elementos del nivel actual y carga el siguiente. Más específico en el documento de especificación del formato propio,
Ítem V2.16 - Creación de un editor de niveles
No realizado
Ítem V2.17 - Diseño y creación de niveles
Se han realizado dos niveles en ficheros .tmx de Tiled, los cuales se leen ingame al cargar el nivel correspondiente. Los niveles se pueden encontrar en el directorio Juego/resources/Mapas
Ítem V2.19 - Implementación de cámara de seguimiento
Sin cambios La única cámara del juego sigue constantemente al jugador desde una vista aérea. La cámara se crea en la clase Scene.cpp al cargar el nivel, y se updatea en el bucle del juego dentro de la misma clase.
Ítem V2.24 - Creación de un sistema propio de GUI
Sin cambios El código fuente adjunto pertenece a los items 24,25 y 26, y se engloban todos en una sola entrega dado que se encuentram estrictamente relacionadas https://drive.google.com/open?id=0B39aFPRKKoO_MmZrTkJDQzlRTWs
Nuestro GUI se inicializa desde la clase GraphicsFacade, por tanto, en el código fuente específico del entregable lo incluiré también, tan solo para que se vea esta inicialización. Además, se incluirá también la clase Image de la Fachada de gráficos también, que es donde tenemos las llamadas para cargar y pintar las imágenes, de momento llamando a Irrlicht. El GUI está dividido principalmente en 2 partes:
Ítem V2.25 - Implementación de menús
Sin cambios: Destacar que ahora contamos con una pantalla de carga. El Menú, como he dicho en el anterior entregable, está compuesto por GUI_Components, con lo que está estrechamente ligado al GUI.
Nuestro Menú está disponible tanto antes de comenzar el Juego como In-Game (pulsando la tecla ESC), con la única diferencia entre ambos de que el botón de Nueva Partida se convierte en uno de Continuar.
Nuestro Menú, por tanto, nos permite empezar una nueva partida o continuar en la que estamos, salir del juego y ver una serie de opciones:
Cabe destacar, que el sonido del menú ya está 100% funcional y disponible, teniendo música de fondo y sonido en los botones. Esto ayudará a ver si el volumen general se está subiendo o bajando utilizando la funcionalidad que hemos realizado.
Ítem V2.26 - Implementación del HUD
Sin cambios El HUD de nuestro juego solo está disponible mientras jugamos y, de momento, dispone de un cuadro informativo del rayo láser con su cuadro de diálogo que aparece o no dependiendo de si está el cursor encima y una barra de vida. No hemos priorizado en completar el HUD, porque pensamos que como es algo más visual, hemos priorizado otros entregables, dejando este ser completado para la presentación. En un principio, lo que se añadirá de cara a la presentación serán más cuadros informativos, con la información del ataque y de andar en sigilo, un overlay para estos cuadros informativos, una pantalla de Game Over cuando nos maten y unos mensajitos de qué hemos recogido cuando recojamos o munición o vida o una tarjeta para abrir una puerta.
Ítem V2.27 - Implementación de clipping (comparativa de FPS con/sin oclusiones)
No realizado
Ítem V2.33 - Implementación de cesped y vegetación
No realizado
Ítem V2.35 - Implementación de sistemas de partículas
No realizado