Simple space shooter game created using SDL (Simple DirectMedia Layer) and C. Sprites created with Aseprite.
Energy meter added. Using any weapon will deplete energy, but it will gradually refill over time. Each weapon has three strength levels and energy consumption increases with the strength of the shot used.
Below are the weapons in the game.
| Weapon Name | Weak Attack | Mid Attack | Strong Attack |
| Speed Shot | Slightly increases fire rate | Moderately increases fire rate | Greatly increases fire rate |
| Multi Shot | Shoots in two directions | Shoots in three directions | Shoots in four directions |
| Wave Shot | Shoots one wave projectile | Shoots two wave projectiles | Shoots four wave projectiles |
| Blast Shot | Damages all enemies on impact within a small radius | Damages all enemies on impact within a medium radius | Damages all enemies on impact within a large radius |
| Spin Shot | Four projectiles rotate around the ship | Eight projectiles rotate around the ship | Sixteen projectiles rotate around the ship |
| Freeze Shot | Freezes an enemy in place for 1 second | Freezes an enemy in place for 4 seconds | Freezes an enemy in place for 20 seconds |
| Seek Shot | Locks on enemies within a small range | Locks on enemies within a medium range | Locks on enemies within a large range |
Enemies will drop various bonuses, such as refill energy, increased attack power, increased defense power, and health refill.
Create your own levels by editing level_00.txt. Separate waves with a single equal sign ‘=’ on a line. Place enemies using the numbers 1, 2, 3, and 4.
Create Linux build by running ‘make linux’. Tested and works on Ubuntu Linux.
Get the source code at https://github.com/gatechgrad/SDLShooter
Enemies
- Alpha – Moves left and right in a horizontal motion
- Bravo – Moves to the right at constant speed
- Charlie – Moves downward in a wave motion
- Delta – Moves in a circle motion
- Echo – Moves to random locations; Vulnerable only when eye is opened
Weapons
- Normal shot – 5 energy
- Fast shot – 8 energy
- Triple spread shot – 15 energy
February 2020 update
This month I continued to work on SDL Shooter, which is a space shooter written in SDL and C. This game started as a presentation demo for the December 2019 Knoxville Game Design meeting. The project source code is available on my GitHub account. I’m hoping to release it on more platforms when it gets to a point where I feel that it is complete. Right now I’m just having fun adding new types of enemies.
- Foxtrot – Moves a few units either vertically or horizontally, pauses, and then moves in a new direction.
- Golf – Snake type enemy that has a random number of tail links. Each link of the tail must be damaged before the head can be damaged. Moves in a sine wave at variable rates.
- Hotel – Stationary enemy that constantly fires projectiles in a radial fashion.
- India – Large enemy that explodes into four smaller enemies when damaged. When the four smaller enemies are damaged they explode into eight even smaller enemies. I need to make the explosion angles random, instead of the standard 90/180/270 and 45/90,135, etc angles.
- Juliett – Hopper enemy that jumps in a parabola one to three units horizontally. One issue is two of these enemies can jump to the same spot and overlap. This could be solved by adding a target location variable for each enemy, and determine if another enemy has claimed that spot before jumping there. I would also like to have the enemy attack the player’s ship in some way. Either charge the player’s ship when it is aligned vertically, or shoot webs at the player’s ship to slow it down like in Zekkou no Tomodachi.
- Kilo – A random number is displayed on top, and the player must shoot the correct binary sequence to defeat this enemy. Added the current “attack value” below the target value, which makes completing the binary sequence a little easier. The enemy has between 3 and 5 bits, so the maximum value for a 3 bit enemy is 7 and the maximum for a 5 bit enemy is 31.
- Lima – A bat type enemy that starts sleeping, and then awakes and chases the player when the ship is near. The enemy is only vulnerable when it is not sleeping. The amount of time that it takes for the enemy to wake up is random. The second level enemy moves faster and takes more damage to defeat.
- Mike – Color orb enemy. Three small orbs revolve around the center, which are either red, green, or blue. The player must shoot the correct revolving orb to match the center. If the center is yellow, cyan, or magenta, then it takes the correct two orb combination to defeat the enemy (such as cyan = green and blue). Shooting an incorrect orb will make the orbs revolve faster for a short period of time and the enemy will shoot at the player’s ship.





















