This is the second game I made in Unity as part of my game design course, although my version looks quite different than what the course put together. This game evolved from a course about designing a fast-paced space shooter. I made the choice early on to make it about large ships instead, and that informed a lot of the game design in how the ships would move and the style of projectiles they would fire.
Slower motion to match the theme including Canon Cool down Timer
The first big design change I had to make when transitioning from a space shooter to a navel shooter was to create a much slower pace. The original design had a spaceship zipping back and forth across the screen, and a mechanic which allowed you to hold down the fire button to let out a continuous barrage of missiles. I put that in the game, but then found that it did not work for my theme.
I decided that I needed the ship to lumber across the screen rather than zip. At first I made it really slow, but I soon realized that having it move a little faster than it should felt better, so I found a happy medium.
I then had to address the projectile speed. I had chosen to use cannonballs, and cannonballs on ships need to be loaded manually by the crew, which takes time. At first, I just slowed the fire rate way down. But as a player, it felt frustrating to press the fire button and have it sometimes go off and sometimes not. So instead of slowing down the fire rate, I decided to create a “reloading cool down” that would be telegraphed at the bottom. This small change turned a design restriction into a new challenging rhythm for the player to find.
Varying ship sizes, projectile sizes, & damage values
In order to make more varied gameplay, I needed to vary the enemy types. I decided on three differently sized ships.
The first is small. It only takes one hit to destroy. These are the pawns. I also have them shooting arrows instead of cannonballs. These ships do less damage than the other enemies by a large margin, but they also move a bit faster. I wanted to have them swarm all over. You can dodge these, but if you take a hit from one it won’t hurt that much. That said, if you focus too much on larger ships and don’t notice these little ones chipping away at you, it can spell trouble
The second ship is the exact same size as the player and does the exact same amount of damage. It also shoots the same cannonball at the same rate. However, it takes a little less damage to destroy than the player, although more than the smaller ship. My intention was to make this reduced resilience add to the player empowerment.
The third ship is much larger than the other two. Only one of them come at a time and their large cannonballs do a lot more damage. They are easier targets to hit, but there are a lot of other smaller ships in the way. Taking one of these down isn’t too difficult, but my hope is that the threatening presence will make if feel like a big achievement.
Fire animations to telegraph damage
I wanted damaging the ships to feel really good, and the damage to yourself to feel really dire. The original design template used for the class simply had a damage value at the top, but I dug a little deeper. I wanted the damage to the ships to be bright and loud and to increase over time. I achieved this but focusing a particle effect as a pixelated fire animation centered on the ship with a value that would make the spawn rates of the fire increase as the damage increases. This also adds good visual feedback that makes the hits feel harder.
Crunchy explosion animation for defeat
In the same vein, I wanted the ship deaths to feel good too. I used a big crunchy explosion sound effect and created a fiery pixel animation that would play as soon as the ship disappeared. It was important for the pixel animation to have a sinking animation left over for a few seconds once the fire was gone. This helps sell the water.
A few other related stray observations:
The flow of the game actually makes the firing rhythm feel natural. The player doesn’t need to pay attention to the cool down text to play, but without having it there for context, the game feels weird.
The ship can move forward and back as well as side to side. Initially I had it move back at the same speed as forward, but it felt weird to move back while the water was still scrolling. Instead, I tuned the speed of the backwards movement to match the speed of the scroll. Now when you press back, you move back, but it just looks like you are coast and letting the game scroll forward.
naval hero art
Custom pixel art with sprite sheet animations
This was my first real stab at doing pixel art. I did it using a grid on an iPad in procreate. I don’t know what the rules are to make pixel art authentically match an era but I am happy with the ship, explosions, fire effects, water trail effects, and water background.
Particle effect for water sparkle
As a finishing touch, I put a persistent water effect on the scrolling water background that would scroll at the same speed. The goal was to make the water look sparkling and shiny. I don’t know if it worked or not, but it looks better with it than without it.
Building a Vertical Slice
I never intended to make this into a full game, it was just to be used as a learning tool for code and for pixel art. But I did want to squeeze as much game design principle out of it as a good for a genre that’s already been done. I decided I just wanted to build a looping vertical slice in which you would last as long as you could and get the highest score possible. But I wanted to make the slice represent how I would design the rest of the game.
The flow could easily be scaled. It starts with a swarm of small easy to avoid ships. You can eliminate most of them quickly, but as soon as you doo three larger ships come out. Once the big boy emerges and you get ready to take a shot at it, the little guys pour out from the same side of the screen to block you again. The rhythm of trying to work through the mobs so you can take down the higher scoring ships is what I would use to scale this game.
Conclusion / Takeaways
It's interesting how many little things can change like a butterfly effect when you make one small choice early in a project. I decided from the start that my "space shooter" would be a "ship shooter" and from that one choice grew an entirely different way to think about the design of the gameplay at every step, and it ended up turning into a game that shared a framework with a fast-paced space shooter, but played in an entirely different way.