Posted November 10, 2024 by enegames
#tech stack #rot.js
When I first started thinking about this game, the tools and concept developed hand in hand. I knew I wanted something simple: 2D, small map, limited graphics. My original inspiration came from a game made with PICO8, but that looked a little too involved to learn. I've been aware of rot.js for a number of years and always wanted to do something fun with it. It looked super simple and I liked how the simple graphics and interface left plenty of room for the game story and mechanics to shine. I decided to give it a shot for this game.
Rot.js might seem like an odd choice for a metroidvania game since it is designed for classic roguelike games (like the screenshot above). All the features like map generation, randomness, and turn-based scheduling don't apply to my use-case. At first, this threw me off for a bit, but after some playing around I learned how to define my own maps with the help of online some ASCII map editors (below). I still found value in rot.js for it's simple way of defining, rendering, and moving around in a tile-based game world. Also some of the features like the text buffer and FOV simplify what I want to do.
I've spent some time getting used to rot.js and setting up a skeleton project using the rot.js tutorial refactored to use their recommended design patterns, and rewritten in typescript. Everything is working well, so I'm ready to move on to implementing my game specifics!
The full tool stack am I using: