Destroy your enemies by smashing them together.
Gravity Shot X With Developer Commentary
In Gravity Shot X is a side scrolling shooter where the player controls a ship that must survive waves of oncoming enemies to eventually reach and destroy the boss at the end of the level. The player does not have any traditional “weapons,” but has a bungee or tether that can be used to bring down enemies in two different ways: one, by attaching a flying enemy to the ground to make them crash, or two, by attaching two enemies together to make them collide. Scoring is based on destroying enemies.
The goal of the Gravity Shot X project was to design and implement a complete 2D game. The intention with this game was to gain more experience with game development and to practice the skills necessary to create computer games such as programming, art asset creation, sound design, and level design. Another goal with this project was to implement basic enemy AI such as vector tracking and AI patterns. The last major goal was to explore the use of random numbers to dictate when enemies spawned or fired bullets.
I was responsible for designing the gravity tether mechanic that is used to destroy enemies. I also designed the enemy types. I created all of the art assets for the game and programmed all the animation. I programmed the player controlled ship and the enemy homing missile along with its AI. I created all of the sound effects for the game and programmed all of the audio. Last I worked on play testing the game, debugging, and tuning each level’s difficulty.
Early on while designing Gravity Shot X we decided to build an algorithm that would randomly choose when to spawn enemies. This was nice because each time the player would start a level the enemies would spawn in different places so the player was continually challenged. However, this resulted in uninteresting pacing for each level, because enemies would spawn constantly throughout the level. This lead to the player experiencing tension thought the level without any release which can feel exhausting. To allow the player to experience tension and release throughout the level we added a wave system that would trigger the spawning algorithm at certain points to allow for periods of rest in each level.
Another lesson I learned from this project is that you must be careful in how you use random numbers in a game. In our game we decided to create an algorithm that would randomly dictate when enemies would fire bullets. The problem was that this did not let the player learn how often an enemy would fire and made it more difficult for the player to learn how to dodge each enemy’s attacks. Instead, the player had to hope the enemy would not fire at the wrong moment. A better solution would have been to have enemies fire at regular intervals. This would allow the player to learn how each enemy behaved and thus learn to dodge more effectively.
This game also taught me that there is no substitute for playtesting. Skill based games must have their difficulty tuned just right to create a fun and challenging experience. Otherwise an interesting game could end up being too hard and people will not want to play it. The only way to hit that difficulty sweet spot is though comprehensive play testing and player feedback. Our first prototype of Gravity Shot X was way too hard because we did not play test the game enough. After learning this lesson we began to play test often which and by watching players and listening to their feedback we were able to tune the game’s difficulty to a point where it was challenging and also fun.