Technical Design & Scripting
The main objective of the game is to destroy all remaining enemies on your opponents team. Each player controls a team of several characters, during the game, players take turns by controlling one of their characters and using any weapons available to attack and kill the opponents characters. Once all enemy characters have been killed the game is won.
When a players turn begins, the camera zooms out and an overview of the map is shown. Next the camera will zoom into the the players next controlling character. The turn is then split into diffrent turn phases.
In the first phase there is a 5 second count down that displays UI on the screen informing the players who's turn it is, addinonally it displays a count down to the start of that players turn. It can be cancelled by the player pressing any button. Once the countdown has finished or the player has pushed any input the turn moves to the next phase.
This is phase has a duration of 30 seconds, within this phase the player can move the character selected and use weapons to target enemy characters. After a weapon is used the turn timer will stop and move into the next phase.
During this phase the player will have 3 seconds to move the character around the map, then the turn will end moving to the next team.
At the start of each turn the player can look within the inventory and check which weapons are available to use, by default the “Grenade” is unlimited so the player can always use a “Grenade” if they have no other weapons. Other weapons can be obtained by collecting the weapon's crates that spawn at the end of each turn.
When a weapon is selected and the aim input button is pressed, an aiming reticule is shown. The reticule orbits the charcter in a way so the player can aim 360 degrees around the character.
The charge will determine how far the projectile is thrown or fired, this can be seen by the bar above the charcters head. To charge the weapons the fire input must be held to charge and once ready the same input is released. This will launch the projectile in the aimed direction with the amount of power depented by the charge.
The map is made from cubes that are spawned in during the initalisation of the map. The placement of these cubes is down to the pseudo random values that can be generated from a noise map.
To produce a procedually genrated map the map manager on initalisation will firstly create a noise map using Perlin Noise to get pseudo random values which can then be used to place a block in a space or not.
As the terrain is made from individual cubes whenever a weapon or explosion hits the trrain a distructive radius can be formed and any block within that radius can be destroyed. Ideally the map would be genrated using a voxel system that would be much more efficent and produce less blocky terrain. However, given the time and experance I had at the time this was the best solution I had.