2D Shoot 'Em Up


When arrived back to earth, you discover that an alien race has invaded your planet. They are deploying an enormous drill to reach the center of earth’s core, extract energy and destroy the planet. Choose between 2 ships, 4 weapons and 4 abilities, reach the drill and destroy it before it reaches the core of your home planet. 

Project Details

  • 8 weeks, half time
  • 9 people (4 programmers, 3 artists, 2 level designers)
  • Created with our school's in house engine
  • C++

My Contributions

Player Movement

  • Handling keyboard & mouse/gamepad input and kinematically moving the player in the chosen direction.
  • Since the game has a lot of bullet on the screen to dodge at the same time we wanted really precise movement instead of smooth acceleration and deacceleration.

2nd Boss

  • Different states depending on both random and the stats of the boss.
  • Shooting behaviors
  • Bullet movement patterns
    • Seek player
    • Move in pattern
  • Boss movement pattern

CO-OP Mode

  • Handling input from either two different gamepads or one from the keyboard and one from a gamepad.
  • Moving and shooting independently of each other.


  • Button class that handled input and was created with a Lambda function that was called when the button was clicked.
  • Placed all the UI in the menus by hand in code because we didn’t have an editor.
  • Created the custom level select menu where the buttons for the levels were different levels of a planet. The other buttons in the game were using a box intersection test for clicking, so I made these custom buttons using the distance from the center of the planet to the mouse position.

Tiled Level Loading

  • Loaded the levels from JSON files exported from Tiled level editor.


  • Unlocking levels and abilities.


  • Telling the currently equipped weapon to shoot from the players current position.


  • A position that moved to the side and when close enough to objects they were spawned.
  • Removed objects when the camera has moved past them.

Animation (Shared Responsibility)

  • Wrote a sprite sheet animation class that handled start and stop indices and moving forward in the animation depending on the chosen speed.

Scene Management (Shared Responsibility)

  • Worked on state/scene management for updating/rendering the current level, changing levels and unloading previous ones.