miércoles, 20 de marzo de 2013

Segundo Proyecto: Introducción

Vamos a definir un segundo proyecto que nos servirá para ir perfilando nuestro motor de juegos. El objetivo que tengo es ir añadiendo clases a SFML 2.0 para ir completando la librería, de forma que al final tengamos un conjunto de herramientas que nos permitan hacer juegos con facilidad.
El segundo juegos que haremos será un shooter vertical, me inspirare en el juego RAPTOR de Apogee. En resumen será un juego en el controlas una nave y tienes que dispara a todo lo que se mueva, esquivar las balas enemigas y recolectar puntos. Al final de cada nivel habrá un jefe final.

Diseño del Juego

Empezaremos con el diseño del juego. Ya hemos dicho que seria un shooter con scroll vertical. Así pues definiremos los elementos del juego. Necesitamos lo siguientes elementos:
  • Nave principal: Se moverá con los cursores o con WSAD y dispara con Espacio.
  • Varios Proyectiles de la nave principal: Ametralladora, misil Aire-Tierra, misil Aire-Aire, Laser.
  • Naves Enemigas: Enemigo Nivel 1, 2, 3, Boss 1, 2, 3, Minas Aéreas
  • Proyectiles Enemigos: Bala, Misil, Laser.
  • Enemigos Tierra: Torreta fija, Torreta Giratoria, Lanza Misiles, Torreta Laser
  • Objetivos Aire. Son naves que no disparan y dejan items y puntos
  • Objetivos Tierra: Casetas, Vehículos, Edificios. Nos permiten añadir puntos.
  • Items: Misil AT, Misil AA, Laser, Kit Escudo, Kit Reparación, Puntos Extra, Nuke(Destruía todos los enemigos y objetivos en pantalla)

Como en esta ocasión vamos a hacer un juego completo, también diseñaremos el flujo de los menús de opciones etc., así como definiremos que elementos vamos a querer mostrar en el HUD:
MenuFlow
He usado un diagrama de cajas para mostrar todas las posibles pantallas del menú, con los botones u opciones disponibles en cada menú, las flechas negras indican hacia donde va cada opción y las rojas son la vuelta atrás.

El juego como una maquina de estado

Para explicar que es una maquina de estados recurriremos al manido ejemplo de la bombilla:
  • Una bombilla puede tener dos estados diferentes, encendido y apagado
  • Cuando la bombilla esta apagada simplemente espera.
  • Cuando la bombilla esta encendida emite luz, y además espera.
  • El interruptor indica que cambie de estado.
El uso de maquinas de estado es muy común en videojuegos pues simplifica el diseño y la programación de comportamientos complejos. Además es muy intuitivo, pues tenemos mas o menos la intuición de lo que es un estado. Por poner otro ejemplo, una persona se comporta de distinta forma y hace distintas cosas según este en un estado dormido, andando, sentado, comiendo, etc..
Asi pues un juego o programa se puede considerar una maquina de estado. Cuando estas en el menú principal de un juego las teclas de direccion se comportan de distinta forma que si estas en una partida. De igual forma en un menú se muestran y se optienen distintos cambios de estado que en otro menú.
Cada una de estas cajas del flujo del menú nos indica un estado del juego. En la siguiente entrada crearemos un sistema que nos facilite la gestion de los distintos estados del juego.

HUD: Informando al jugador

El HUD (Head User Interface) es la forma que el jugador se iforma del estado en el que se encuentra la partida. Dependiendo del juego esta informacion puede mostrarse de distintas formas, sin embargo, la mejor forma es de forma grafica.
En nuestro caso mostraremos la siguientes informaciones:
  • Nivel de la vida
  • Nivel del escudo
  • Puntuacion
  • Nivel de vida del Boss
Con esto tiene suficiente informacion para hacerse una idea si lo esta haciendo bien.
Hasta aqui la entrada de esta semana. Vereis que las entradas van a ser un poco mas cortas. He empezado a trabajar de nuevo y no tengo tanto tiempo para hacer entradas largas, asi que prefiero hacer entradas un poco mas cortas y seguir con el blog, en vez simplemente dejarlo.

Para saber más sobre como diseñar menús e interfaces recomiendo Game Interface Design

No hay comentarios: