My First Game
It was a drowsy Friday afternoon in astrophysics class when Gabe joked that I should program a geometry-themed knockoff of Cookie Clicker (a trending web game at the time). We passed the idea around for a few days, and I eventually took the idea seriously.  Deciding to use only code I wrote myself, I was able learn how games worked under the hood.  Shape Clicker utilizes a fully custom game engine written natively in JavaScript.  The task was daunting.  My knowledge of game design at the time was powerfully dwarfed by knowledge I lacked.  But despite adverse odds, I chose to move forward.  I googled problems I couldn’t solve.  I tried, failed, tried again, and six months later, my first game was born!
Custom Game Engine
Shape Clicker runs on a game engine I coded myself. The game utilizes the HTML canvas element for visuals and a looping setTimeout() function as a game loop.
Advanced Trigonometry
Calculating the way an n-sided polygon rotates in an inverse plane was my biggest hurdle. While it is certainly old-hat now, it was extremely daunting at the time.
Supports Any Resolution
While it doesn't work on mobile, Shape Clicker was created with different sized screens in mind. The canvas will scale up to your native resolution and the game still runs flawlessly.
Variable FPS
The game engine supports variable framerate. The earned score will be the same regardless of the browser refresh rate. Most indie games don't even do this!
Session-based Savegames
Shape Clicker uses PHP user sessions to save your data, allowing you to return later and pick up your clicking addiction right where you left off.
Polymorphism and OOP
This was the first project I ever used object inheritance. Every placeable object inherits properties from a shape superclass that gets used by drawing and update loops.