The Physics of Ninjas

Home Game How it Works Sources
Ryan Stonebraker

Sources:

Everything that is part of this project is 100% original. All images, sprites, sprite sheets and scripts included were created using Github's Atom Programming Text Editor, Adobe Photoshop, and Adobe Illustrator. However, this project was not done without research.

A couple of the SVG buildings featured in the background of the first level of the Physics of Ninjas Game are loosely based off of those found in the open source image uploaded to wikimedia.org which can be found here.

I learned the JavaScript language throughout the duration of this project by researching problems as I ran into them and stackoverflow.com proved to be a major asset due to its large database of experienced active members who have a large repositoire of answered questions behind them. Also, I followed a guide posted on williammalone.com by William Malone in 2014 on creating spritesheets for animation. The realtime physics engine I created, which was arguably one of the more difficult parts of this project for me, was created after reading a heuristic guide on building various types of physics engines found here and written by Adam Ranfelt from IBM on November 20th, 2012 (Note: only general ideas from this guide were utilized and no code or methods for accomplishing a task were copied).

The physics behind the game has varying ranges of complexities but is partially based off of lectures given in class over kinematics, kinetic friction, gravity, and conversation of momentum. In order to slow the ninja down when in contact with surfaces, I created a kinetic friction property as part of my physics engine and based these amounts off of findings from the article Coefficient of Friction from school-for-champions.com written by Ron Kurtus on November 2nd 2005. The inspiration for the application of physics by a ninja however comes from a variety of sources including this one.

The repository for all source code concerned in this project can be found on my GitHub page and is provided under an open source MIT license (can be used without restriction as long as author is credited). From this link the repository can be cloned/downloaded and unzipped to run offline. Note: This code was tested using Google Chrome V. 54 on macOS Sierra and due to time constraints, proper cross browser/platform testing was not extensively done so all behaviour can only be guaranteed for this browser and operating system.