BioEvil is a top-view shooting game. From the name you can probably tell it is referring famous series ResidentEvil(aka Bioharzard). The basic gameplay idea is similar to the ResidentEvil series: players have to beat zombies with a small number of resources and escape this place. This game is made with my personal engine with C++.
The shooting system of BioEvil is generally the same as other top-view shooters. Players aim with the mouse, shoot with the left key, and reload with R.
Something special is the aiming system. The further the player is aiming at, the more random their aiming location will be.
The red square is the actual aiming location, and the white square is the area in which the red square might randomly move. The further the player is aiming, the larger the white square is.
I made this because in 3D games, the further you aim, the harder you hit your target. But in 2D top-view, the aim can always be precise no matter the distance. So I added this to force players to fire at close range, that way it will create a feeling of intensity.
This is a function for aiming location updating.
A ResidentEvil game usually comes with melee attacks options. Melee attack is an option with high risk but low cost at the same time.
It also creates a feeling of intense. Especially when players are running out of ammo.
The melee attack feature is done by moving a point forward and back. If the point ever touches an enemy during the movement, that enemy gets hit.
To create the feeling of zombies, the enemy AI is updated based on "steps". There are five types of steps for zombies: move towards the player, rotate towards the player, dash towards the player, attack forward, and side dash. After each step is executed, the AI pauses for a small amount of time to create the feeling of slow zombies, then it selects what is the best step to take next.
To create challenges, the zombies perform dash when players are close(See gif in the above section). The dash is a movement with high speed and rotation speed.
This is the function for AI updating.
I made a boss fight as well. The boss uses a similar step system, but the update logic is slightly different. In short, the boss normally cannot be hit. Every time the player attacks it, it will dodge it and increase a hidden "anger" value. Once the anger value is filled, it performs a super-quick dash towards the player and rest. This is the only time that the player is able to attack it.