Blood Bastion
Description
Blood Bastion is a Tower Defense style video game where you have to defend your castle against waves of angry villagers. Defeating enemies grants you 'blood' which allows you purchase and upgrade towers to defend the increasingly difficult waves.

Project Overview
Blood Bastion was the final product for my final production group assignment at AIE. For this project, my role was the lead and solo programmer and as such it was my job to create all gameplay features into the game. Features that included, the towers mechanics, the pathfinding and enemy mechanics, general gameplay such as player health and waves. I also created several shaders and particle effects that were used throughout the game.
Tower Placement
The placement script works by first selecting a tower by receiving information from the buttons. Then the cursor finds the floor and makes sure that the ground is placeable ground and not the track, a tower or scenery. Once the tower is placed it then spawns an instance of the tower prefab on where the cursor is and activates it, allowing it to target and attack enemy AI. This is supported by the placement shader I created which is reads red when unplaceable and green when it can be placed, to make it easy for players to understand when they can and can't place towers.
​


Tower Targeting
The targeting works by accessing a list created by the wave spawner script that keeps track of all enemies active, this is a fast and optimised way of scanning all enemies on map. The targeting script then uses the list to find the location of all enemies in the scene and measuring the distance between them and the tower. If the distance is smaller or equal to the towers range stat, the tower will set the current target to the enemy and attack the enemy using the attacking script until the enemy either dies or leaves the towers range. Targeting is also effected by camouflaged enemies and taunting enemies. Camo enemies can only be detected by certain towers and taunting enemies will make itself the target of all towers in range, regardless of any other factor.
Wave Spawning
Waves are spawned using a wave manager in conjunction with scriptable objects. The wave manager is designed to allow full customization of what spawns in a wave, the quantity and density of the enemies in a wave. Each wave scriptable object includes multiple groups each dedicated to its own enemy type, each group has its own information that is accessed by the wave manager which is then used to spawn the waves. This information includes;
-
Type - What enemy is spawning.
-
count - How many of the enemy type.
-
rate - How frequent each enemy in the group is spawned
-
delay - The time until the next group spawns.
The wave manager also handles smaller functions such as wave intermissions and end of wave currency.

Enemies
The enemies in each wave determine what towers and upgrades the player should buy. Each enemy is different and some have special effects and traits that the player needs to specifically adapt to.
Towers
Each tower has its own strengths and weaknesses that need to be weighed before buying and placing. Each tower has their own upgrades that increase the towers potential and some counter specific enemies.