Resilient was my first group game project at PlaygroundSquad, that has been worked on during 5 weeks. Resilient is a 3D action shooter.
You play as a woman that has been kidnapped and experimented on in a laboratory. Those experiments caused her to gain special abilities, when she gets another dose of those chemicals. Pick up potions, throw lightnings and fireballs, fight your way through the laboratory to escape.
Areas I've been working on
Enemy behavior
The enemy behavior was not too complicated in this project and only contained a few concepts: having 3 different types of enemies with different stats, enemy spawning, pathfinding, and attacking.
It has been decided early on that the game would have different types of enemies. Each new level would introduce a new type. Due to the lack of time, it has also been decided to make them quite similar in their design, using different colors so the player would be able to identify which enemy it is. From the programming side, the only key differences were in changing their model and changing speed, health and damage values.
Pathfinding
Pathfinding was the most challenging part for me. I decided to go with the implementation of A* which is pretty standard for most of the games. Since it was my first time implementing it, after making some research, it was still quite difficult to understand the concept... until it just clicked! The only problem was to adapt the grid to every level in the game. I did not know what the next levels would look like, so I decided to make a new grid at the start of each level. Each box in the grid would have been collision-checked and assigned a walkable/not walkable status. I did not know where the obstacles would be on the next levels, so I had to go with a rather small grid, that would not be too small to negatively affect the performance. Even though, in some places nodes didn't align perfectly with the level layout, it was a good enough result considering the given time limit and other areas yet to be worked on.
Spawning
Spawning is something that didn't feel like a problem until we realized that sometimes enemies would spawn outside of the map, making it impossible to kill them. Luckily, I still could abuse my grid for A* implementation and spawn enemies in the random nodes that would be at a decent distance from the player's starting point.
Attacking
As simple as it is, since all of the enemies were melee, once they are close enough to the player, they just switch to attack state.
UI elements
Main menu
Not final version of main menu