Tech stack exploration (with 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.

Example of a classic roguelike style game made with rot.js

Example of a classic roguelike style game made with rot.js

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.

Here is a sample map that I made when first exploring the ASCII map editors (minor spoiler)


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:

  • rot.js for the game engine
  • ASCII mapper and/or ASCII map editor to design the map data
  • Typescript to get helpful in-editor documentation and type checking when writing my code and using the rot.js library
  • Vite which makes it fast and simple to build and serve the typescript app
  • Haven't thought about sound yet...

Leave a comment

Log in with itch.io to leave a comment.