Project 3 Documentation

Dodger Car

Initial Idea

For this project I used JavaScript and PixiJS. I chose PixiJS because I wanted to try something new and get some experience with a canvas style program. It offered interesting methods and techniques to implementing code which I liked. For the game I knew that I wanted to make a racing game for this project but I didn't really know where to start, so I looked at past projects for inspiration and I stumbled accross Aiden Browns project. This was a two-player racing game. Thats is when I had the idea to make a simple single player racing game with some obsiticals. The initial concept the game did not change, it is still a strategy game where the player has to cross the finish line while avoiding projectiles and obsiticals. I wanted to add an upgrade system to the game to make it more interesting. As the process of making the game continued, I realized it would be much easier to have the enemies randomly spawn rather than the player picking the location after each round because that would take away from the momentum of the game. I didn't want the player to stop after each lap, so I have the player stopping after every 5 laps with the option to upgrade their car. The idea of the cash upgrading system I got from Eric Delmonico's project. I also saw how the bullets were able to be shot at the enemies coming by every segment of time. I decided to use these features and put my own spin on things.

Art & Sounds

I knew I wanted the art to be a realistsic style in the beginning, so I whipped up the background image for the car to drive on while I coded the physics of it moving. I continued to code the bullets and enemies and make some art so I could figure out when to delete the bullets and collision detection. Once I got the enemies and player movements and spawning working correclty, I added checkpoints to the game along with the collision detections. I was able to make the game scenes finally with the checkpoints being the variable factor to get from one state to another. After the game was playable, the next thing I created was the player hud and the rest of the formating of the scene text. While adjusting the text features, I made the upgrade scene possible and linked all the buttons to the car's characteristics. The very last thing I worked on was all of the sounds. I have a library of sound effects I chose from and connected them to any actions in the game. I realized there was no ambient sound in the game, so I added the car engine and background music.

ES6 Classes

These classes were very helpful in the making of this game. I used them for all of my game objects and images. This would include the updated objects being the player, enemy, bullets, etc, and the static objects like the background. I used a background class to display my images for all of the game states. Most of the classes have methods to allow the objects to be updated correctly. They also help with organizing code so all the physics are not in the gameloop.

Interesting Features

  • Car engine fades in and out when propelled.
  • Music increases in bpm every 5 laps.
  • Some actions have multiple sounds which are randomly chosen.
  • Enemy spawns in a random location from the available 22 spots.
  • The upgrade and money system. Who doesn't like upgrades and money?
  • The makeshift speedometer.
  • The health bar.
  • Pause and play of songs when game is paused or resumed.
  • Orange middle section slows down the car.
  • Enemies are randomly spawned.
  • Bullets are shot at random speeds.

Failures and Adjustments

  • Game Boarder: couldn't figure out how to code a inner border to the track with PixiJS.
  • Enemy Position: chose to make it random instead of stopping the player each lap to pick.
  • Controls: added arrow keys for people who think it is more comfortable.
  • Scrolling: arrow keys would scroll the page.
  • Game Name: used to be dogger. This confused people with pronounciation.

References