The goal of this exercise is to create a zombie game with a wave system similar to the Call of Duty zombie mode. Do you know what does it take to become a zombie? Dead-ication.
### Objectives
You will use the content in the Resources folder to create a zombie wave game. The player will be a character with one of the guns and zombies will be coming for him from various points in the map.
Also you will use the solution from one of the previous exercises.
### Instructions
These are some the features that the game should have:
- a Menu map where you will display 3 options:
- Start Game (Load the map and launch the game)
- Settings (Migrate your WidgetFactory project to integrate it to this one)
- Quit Game (Exits the game)
After entering the game by clicking the "Start Game" button, the game should contain:
- a widget on the screen should be visible for the player life and should also contain the wave number that the player is in.
- an enemy spawning system from a blueprint that can be placed around the world.
- zombies should never all spawn at the same time. Zombies should spawn one by one every `N` second(s)(you decide what N is).
- create the animation for the Zombie. There should be at least two animations (running and attacking). These actions have to be performed by the Behavior Tree.
- on spawn, the Zombie should detect the player location and run towards it, following the Behavior Tree that you created earlier.
- when shooting, a fire projectile has to be casted and shot from the muzzle of the rifle.
- when the Zombie is near the player, the zombie should hit the player.
- when the player is hit, his life bar should decrease.
- after 5 hits the player should die.
- the life of the player should slowly get back up, 2 seconds after the hit. If the player gets hit again, wait 2 seconds again to give him back his health.
- on zombie component hit with the projectile, the zombie should lose health when it gets hit and should not die in one shot.
- after being hit multiple times and dying, the death of the zombie has to be noticeable.
- the zombie spawning and the recovery of health should be handled by the node "Set Timer by Function Name"
- the wave system should be as simple as it sounds. When you kill a certain amount of zombies in the first round, you calculate the number of zombie you want for the second round and spawn them (You can maybe get more creative than zombiesNumber \* 2 or \* wave).
- more zombies should spawn as the waves increases.
- you have the freedom to create the map and design the level. Just be sure that the Navigation Mesh Bound covers the whole map or else you’ll have trouble with the zombie not coming for the player.
- every projectile and zombie should be destroyed when they're no more visible/alive.
- the sound from the shot and from the zombie have to be handled.
- zombie sound should be following the zombie and the distance should raise or lower the sound when the player gets closer or far.
- when you shoot, there must be heard two sounds: the shot sound and the shells of the round hitting the ground.
- when the player is dead at least two information have to be displayed on the screen:
- Number of zombies killed
- Wave the player died
- this two stats also have to be displayed when the player presses the TAB button and be hidden when the TAB button is released.