Arel.js: A JavaScript Roguelike Library

What is Arel.js?

Arel.js is a lightweight JavaScript Roguelike development library designed to be both extremely performant and incredibly flexible.

Why am I writing it?

After completing a few roguelikes in JavaScript–and starting many more–I’ve come to the conclusion that I really should be relying on a library or toolkit to handle all the basic interaction between the game and the player. The input and the output. For JavaScript, this layer is the browser.

I believe that there are already a few such resources available, such as ROT.js, for example. I briefly considered using ROT; it seems to be pretty popular and the documentation is excellent. However, I really wanted to work with something that I myself had created and was intimately familiar with. To that end I thought about writing a wrapper for ROT.js, so that it would be my code on top.

However, I knew I’d run into problems and while writing a wrapper for ROT would be workable, it wouldn’t be as satisfying as writing my own library. Then I realized that I in fact already have a sizable codebase built up, functions I find myself reusing between projects quite frequently. Why couldn’t I write a wrapper for those instead?

To that end, I have begun work on a lightweight library of my own. It’s not really anything to look at right now, as it consists mainly of input and output handling. But it’s not going to stop there–I plan on implementing all sorts of goodies, like field of view, pathfinding, dungeon generation, and more. It also has extremely thorough documentation provided by YUIDoc.

When will it be usable?

Arel is available now: just download it from Github and include the source files in your project, if you’d like. Of course, it doesn’t do much at present, and its development is only a hobby at the moment. However, I do plan on continuing to work on it into the foreseeable future.

If you have any questions or suggestions that you’d like to make, please leave a comment below. I’ll get back to you as soon as I can.