Available at: https://synkgames.itch.io/northbank
North Bank is a First Person Shooter game, where the player has to avoid the army and escape with the reward. In the city, they have to empty the vaults of the banks, and in the desert they can find the ancient jewels.
Role: Developer
Team: Solo
Timeframe: 6 months
Engine: Unreal Engine 5 (Blueprints)
All art sourced externally, find out more in game credits
I worked on this project for my Introduction to Game Development module. The aim of the project was to create a mini game as part of an game experience. I chose to create a FPS as it offered the option to implement a broad number of technologies including AI and animation. For this assignment, I created the city environment with the AI.
I later went on to adapt this to work independently of the template this was created in. I created enemies of different strengths, a difficulty system, a "base" where the player can plan their mission and purchase new weapons, as well as multiple maps.
The player uses the built in Character Movement component in Unreal. I used this to allow the player to crouch, sprint and jump. This required a custom animation setup. I setup a blendspace for the animations for movement, and each of the different movement states. I used an animation blueprint to control which of the blendspaces was used and the values it had. The player was assigned a weapon, which could be changed from the workbench at the home base. The player can interact with valuables, either a vault in the bank, or lost jewels in the desert and steal them for money. The players money progressively drops over time, and they fail once it reaches zero. To extract, they must reach the extraction point, which is a subway station in the city and a helicopter in the desert. In the city, the player can also call off the mission from the phone box.
The enemy uses the same animation setup as the player, as the models use the same skeleton and rig. To allow the NPC characters to move, I setup a navmesh in the environment. The AI Move To node allowed me to move the player towards the target which is the player. The enemies could be in three states: idle, follow, attack. The idle state means that the enemy isn't aware of the player. Follow moves the enemy to the players location, or the last known location if they can't be seen. This can be triggered by seeing the player, hearing their shot, or seeing another enemy who is following the player. If the enemy has a line of sight on the player, they will attack. They will shoot their weapon at the player. Their weapon is randomly generated.
There is two different enemy types. There are the smaller normal enemies. These are blue and have small health and damage values. There are also boss enemies that are larger and coloured green. They have significantly more health and deal slightly more damage to the player.
Weapons can be of two types: either projectile or raytrace. Raytrace weapons use draw a line from the muzzle of the weapon to the centre of the screen and damages any enemy (or player for the possibility of future multiplayer implementation) it overlaps with. Projectile weapons spawn a physical bullet that is affected by gravity that moves at a slow speed. Projectiles also use raytraces that for collisions, curving them at the same rate as a projectile gravity, with the projectile being entirely cosmetic.
From the home base, the player can choose a map to play and which difficulty to play it on. With two maps implemented, the player can select their preferred map and start on the easiest difficulty. Once a difficulty has been completed for a map, they unlock the next difficulty level. There are three difficulty levels for each map: easy, medium and difficult. The difficulty changes the number of enemies that are spawned in and how powerful they are. The health and damage values have a multiplier on that increases with the difficulty level selected. The enemies spawn through a spawner that has a minimum difficulty level to spawn the enemy. This means that more enemies are spawned as the difficulty level progresses.