Monstery is a game I wrote as a kid between 2011 and 2014. The game is written in JavaScript utilizing HTML5, a fairly new technology at the time. I made all of the game on my own, including the graphics and the game engine, with the exception of the soundtrack which is made by Aaron Krogh who admirably releases music in public domain.
Here is a bit of backstory about the (rather incremental) development process. I first learned programming (PHP, C++, BASIC) from hopelessly outdated library books. PHP was for a time my prefered language (alas), but its debugging experience was/is difficult (you uploaded the code to a web server, waited several minutes until it updates, only to receive some indecipherable error), which hamstrung some previous big projects I had set out to do.
Around 2011, I became aware of HTML5. HTML5 was released a few years prior and there was a big campaign to promote HTML5 adoption. Google released the "Chrome Experiments", a collection of interactive HTML5 graphics, games, and websites. Shortly thereafter, I found a blog post that explained how one could draw graphics with JavaScript using the HTML5 canvas element.
The first game I wrote, Cube Defender, was essentially a Space Invaders-type game with cubes moving downwards that the player, a stick figure, had to avoid or shoot. This was around 2011. I then used the source code as the basis for a new game I called Survival Arena, in which the cubes were replaced by pixelated monsters (I had a fascination with pixel art from playing Pokemon Sapphire from age 7 to 9) moving towards the player, and the player was no longer constrainted to horizontal movement. Eventually, I would come to add a background landscape, and over a year of on and off development (especially on boring family vacations to Sweden), it would increasingly take the form of an RPG. Finally, when I thought Survival Arena was no longer a suitable name, I renamed it to Monstery, and the development would halt as I became increasingly interested in systems programming (especially Rust).
This was also my first exposure to trigonometry. I was trying to figure out how to shoot a projectile from the player in constant speed towards the point where a mouse click occured. It seemed to me like a kind of math problem, so I tried without luck explaining the problem to my math teacher at the time. (I remember painstakingly explaining it by using an Excel sheet as an analogy for a 2D grid.) Eventually, I would come across a StackOverflow post that explained arctan, and I was able to use that to calculate the angle and from that the velocity. This was extremely gratifying and abruptly opened up a whole new world for me. (It must be noted, however, that this is a somewhat suboptimal solution to the problem, which could also be solved by dividing the difference vector by its Euclidean norm.) Until this point, I took almost no interest in mathematics, the subject I would eventually come to study at university and dedicate thousands of hours to in my teenage years.
For many years, the game was lost, but with help from my friend Denis Smajlović, I eventually recovered it from a hard disk of an old tea damaged laptop of mine.
Click here to play the game in your browser. It is possible that loading the game takes a while. If it doesn't work, try it in a modern, desktop-based web browser.