Search For a Star

A 2D Space Shooter created in C++ for the Search For a Star competition.

Project Information

History

This game was originally written for a competition in which all competitors were given a broken, base, game with very little functionality and were expected to fix, then improve, the game in a single week. I opted to keep the original spirit of the game, which was a 2D shooter, and themed it as a space shooter.

Gameplay

In the game the player must destroy all enemies before his lives reach zero, at which point you get a game over. There are a variety of enemies, some that fly directly into the player, some that have laser weapons, and some that have homing rockets. Some enemies have armour and can survive several shots from the default player weapon.

Features

  • Multiple levels, enemies and weapons
  • JSON level format for easy level editing, including the skybox, level music and enemies present.
  • Adding extra levels, enemies and weapons is also data driven
  • JSON enemy and player description allowing for any combination of traits
  • Easy to expand data format, using a custom built JSON parser (due to competition restrictions we could not use an existing library)
  • XBox 360 Controller support through XInput
  • Maintains high score of players

Implementation Details

This project uses the following technologies:
  • C++ (2003)
  • DirectX 9
  • DirectSound
  • JSON
Git was used as the source control.

Technical Challenges

Generally this project was a challenge because previously I had only developed games on Linux using OpenGL and several cross platform APIs. Having to switch to Windows without being able to use any of the cross platform middleware, as per the competition specification, meant that I had to learn many of the technologies involved during the writing of this project.

JSON Library

One of the optional criteria for the competition was to make the game data driven, but because third party libraries were not allowed I had to implement a data parser. JSON, being very simple structured data format was the perfect choice for a game of this small scale. For this I needed to implement a parser, and this proved to be one of the largest technical challenges I faced during the project, taking approximately half a day to complete.

Screenshots

Screen displaying the possible game modes and menus.

Controls of the game, including 360 controls in a table format.

First level title text and story mode. Player is the blue ship, the red ship is an enemy.

The game has multiple enemies, the scout and fighter class can both be seen here. The scouts are smaller.

Downloads

All assets, binaries, Visual Studio project files and source are included for compilation and playing.

Game files and assets for people just wishing to play the game.

Videos

In game footage from the originally submitted version for the SFAS competition.