Mi primer videojuego de diseño propio. Correspondiente a la práctica PEC4 de la asignatura de programación 2D del master «Diseño y programación de videojuegos».
Está programado en Unity 2020.3.18f1, con repositorio en GitLab y control de versiones por Sourcetree.
Es un juego de disparos (shooter) con temática zombi y vista top-down. Consiste en completar los niveles consiguiendo la mayor cantidad de puntos mientras se lucha por sobrevivir.
Video
Controles
El sistema de control está programado con el New Input System. Este módulo de Unity permite crear mapas de controles para poder configurarlos sin afectar a la programación. Facilitando, entre otras cosas, añadir un mapa de controles para un mando sin tener que revisar todo el código.
Teclado:
- movimiento con las teclas WASD y flechas.
- H para curar, si tenemos botiquines disponibles y si no estamos con la vida llena.
- R para recargar.
Ratón:
- Desplazamiento de la cámara si lo acercamos al borde de la pantalla.
- Zoom con la rueda del ratón.

Mecánicas
- Recolección de recursos: cargadores y botiquines.
- Disparo para eliminar enemigos
- Sistema de puntuación.
- Puntos de extracción del mapa.
Jugador

Maquina de estados con los estados:
–Idle: El jugador estará quieto.
–Move: El jugador se moverá
–Reload: Recargando el arma.
–ReloadMove: Moviendose mientras recarga el arma.
–Dead: Cuando muera.

El jugador tendrá que administrar los consumibles que podrá ir recogiendo. Tendrá un máximo de cargadores y botiquines.
Consumibles
–Cargadores: Cada cargador le proporcionará 30 balas, si recarga con el cargador actual a medias, perderá las balas restantes.
–Botiquines: Un uso proporcionará hasta 40 puntos de salud.
Mientras se está recargando no se puede curar ni disparar y mientras se está curando no podrá recargar ni disparar.

Enemigos
Al igual que el jugador, los enemigos tendrán su maquina de estados. Aunque esta puede ser sustituida por un behaviour tree. Para este proyecto he elegido la maquina de estados, pero con la asignatura de IA podré mejorar, y simplificar, mucho el comportamiento de los enemigos.
–Zombie1:
Controlado por una maquina de estados con los estados:
–Idle: El zombie permanecerá en reposo.
–Move El zombie estará en movimiento hacia el objetivo, ya sea una posición aleatoria o el jugador.
–Turn: En este estado buscará una posicion aleatoria para vagabundear.
–PlayerDetected: Si ha detectado el jugador.
–Attack: Si está en rango de ataque, atacará al jugador.
–Dead: Cuando muera.
Mejoras
Este juego es muy básico, pero muestra la jugabilidad que quería conseguir. Con más tiempo y conocimiento añadiría los siguientes elementos:
- Niebla de guerra: Añadiendo niebla de guerra y sistema de visión conseguiremos aun más inmersión, pudiendo incluso darle toques de terror.
- Sistema de inventario: El juego ya esta programado para tener diferentes armas, simplemente creando los archivos de configuración y cambiando el funcionamiento de los estados de la maquina de estados para controlar todas las animaciones, dependiendo del arma.
- Con el sistema de inventario se añadiría equipamiento, no solo armas, si no mochilas, chalecos, cascos y botas más silenciosas o rápidas. Aunque el diseño lleva tiempo y habría que ampliar el equipo.
- Boses: enemigos finales especiales al final de las regiones. Igual que antes, el problema no es programarlos si no dotarlos de animaciones, cosa que está fuera de esta asignatura e incluso del master.
- Regiones: Diferentes regiones con distintos niveles para cada región, separando las regiones por temáticas y Boss al final de cada una.
Créditos
Sprites
Zombie: rileygombart
Jugador: rileygombar
Sangre: PWL
Puntero: fluxord
HUD: chabull
AK-47 HUD: PixelMannen
Botiquín: knik1985
Efecto curación: knik1985
AmmoBox: NiceGraphic
Sonidos
Pasos: congusbongus
Victoria: Listener
Curación: Zoltan Mihalyi
Recogida de botiquín: Zoltan Mihalyi
Muerte jugador: congusbongus
Música
Level: 1-1 Human Antagonist
Level: 1-2 Human Antagonist
MainMenu: The Real Monoton Artist
GameOver: zuvizu
Victoria: Fupi