Development for Fighter Zero


The prompt for this project was to make a shoot em up that doesn't utilize overused elements such as spaceships and aliens in space. I personally am very into the futuristic and sci fi genre, so I did not stray too far from the idea of controlling a ship fighting other ships. In the beginning I had many ideas down on what I want the shooter to look like. The first thing that I really wanted to implement was a top down system. I only tried top down once in my one and a half year journey in game design, and it was a pretty simple game with uninteresting mechanics made during a time when I was completely incompetent in coding. With this said, I wanted to really challenge myself this time and compare it to the previous installment and see how far I had come in one year's time.

I begun the development by simply going into illustrator and making a black shape representing a plane. At this point I had no direction for the visuals, but I did know that I wanted to use 2D sprites in the 3D world. I did not put too much thought into the aesthetics and jumped straight in for the mechanics. I put the shape on a quad and a random 2D environment art onto a plane and began testing. 


After getting the basic movement and shoot mechanic down, I did want to continue on creating the mechanics, but I decided to get the art style down first as it would affect the gameplay as well. I would have to customize the colliders based off of the shape of the asset, and it was better to just get the simple things down in the beginning. I wanted the player to be very distinguishable compared to the enemies, so I decided on a bright red colour with a circular design. I also went into photoshop and made a normal map combined with a light that follows the player. The 2D sprite was designed in Illustrator. The look is simple but I wanted to utilize the engine and the 3D environment to enhance the simple design. The result looked better than expected, this was the first time I tried to make a 2D sprite look 3 dimensional and I think it went pretty great. I also added an emission map and 2 dotted rings that will rotate around the player asset to make it stand out more.



Before moving onto the player special abilities I needed to develop at least one enemy type first to test out the base gameplay. The enemy AI would be using the NavMesh system in Unity, which would be the most simple way of making AI movement. All I did was add the NavMesh agent to the enemy and made a stopping distance which means I do not have to code the stopping distance myself. The rotation of the enemy to face the player is also done by the NavMesh so that was one less thing I had to worry about. This was only my second time using NavMesh but I am very aware of the conflict between using NavMesh with Rigidbody. In this case, however, the Rigidbody only pushes back the enemies on impact with bullets but doesn't bring much errors. Thus, it was pretty much non consequential to put the two together and has a nice effect overall. 


Enemy 1

For the first enemy I only wanted it to have the ability to shoot. This was simply done by making a cooldown timer for the enemy's shoot, and then add a rate of fire and number of shots the enemy has each time it shoots. It was fairly easy as I have made a similar system before. 

The art style is pretty much congruent to the player's, just with a colder colour.




Enemy 2

The second enemy type is a circular enemy with four muzzles. The muzzles can be destroyed and it would stop them from shooting from that direction. The accuracy is not particularly good, but it does box the player in in certain situations. This effect is especially true when the player is closer to this enemy type as the rate of fire increases dramatically. 




Enemy 3

The third enemy is a close range enemy type with a slow rate of fire but high damage closeup. It's weapon is basically a shotgun. It utilizes the similar code with a for loop for each shot. I thought that wasn't enough so I added an extra mechanic to increase its difficulty to deal with. I added a gravity pull to the enemy which will pull in the player if it gets too close. Once in the pull range the player has to try to get out immediately by moving in the opposite direction to this enemy type.



Enemy 4

This enemy type is the only one that doesn't shoot. It is somewhat of a suicide bomber that will explode automatically when getting too close. Furthermore, there is a value attached to the top of the enemy that represents the explosion damage with the initial value of 50. When the player shoots at it, the number will rise, and takes more than 5 shots to destroy. This enemy will also absorb enemy fire without taking damage, so if left alive for too long it will have a devastating damage value. However, this can be used against the other enemies as the explosion damage also applies to them.




Abilities

For the abilities I wanted to explore the classic ones utilized in this genre of games, but add some twists to them. 

The first ability is the health dart. It doesn't just heal the player by activating it, but instead the player needs to shoot and hit this dart into one of the enemies. The enemy would then shoot health bullets at you instead of damaging you. This ability works best on those enemies that have greater damage. For example the third enemy type with the shotgun. If the player gets close enough, it will bring the health back in no time. Another one is the fourth enemy type. This will turn the damage value to a health boost value. The higher the number, the higher amount of health you will get. 



The second ability is the ray shield. From what I've seen most shields encircle the player and basically just absorbs damage. I wanted to make a one that requires the player to prioritize a direction more. It's a shield that only blocks the front of the player so they really have to use it efficiently. Furthermore, the shield itself is a weapon as it will reflect any enemy bullet from the shield and deal damage against the enemies. I also made sure to change the bullet's tags into the player bullets' tag.



For the third ability I wanted to make a gravity bullet that the player can shoot out and create a gravity  ball with. It will pull in all nearby enemies and restrain them in one place. However, at this point there is no time. I instead I just made the third ability a speed boost. This was the simplest and easiest ability. I do feel terrible for making this as there is nothing special about it. And with this I should've made it the first ability. 



Tower Design

I added a tower into the game. The tower has a bigger narrative role, but I was not able to include any story into the game due to time limitations. But gameplay wise the tower brings in a greater challenge. I had so many ideas for the tower, but due to the time limit was not able to implement. The tower has three attacks, a high rate of fire with high speed bullets. There a total of 8 muzzles for this attack, but each time during the attack phase a random number of muzzles are selected to fire from. The second attack has a slow rate of fire with slow speed big bullets. They deal higher damage but are easy to avoid. However, it would be one extra thing the player would have to pay attention to while dealing with the enemy fighters. The third attack is a more passive one in which the tower will shoot out tiny capsules that will come in contact with the ground and expand into full sized pillars. If they player comes in contact with them, they will deal damage. However, at the same time they would also block enemy bullets, so they can also be used as cover.



Get Fighter Zero

Leave a comment

Log in with itch.io to leave a comment.