Roguelike Toolkit in Love. A Love2D/lua port of rot.js
Clone or download
paulofmandown Update textDisplay.lua
Correct reference from nonexistent 'chars' member to '_chars'

fixes #57
Latest commit 9b89af6 Apr 6, 2018

RogueLike Toolkit in Love

Bringing rot.js functionality to Love2D. The only modules that require Love2D are the display modules.

See this page for a quick and dirty run down of all the functionality provided.


  • Display - via rlLove, only supports cp437 emulation rather than full font support.
  • TextDisplay - Text based display, accepts supplied fonts
  • RNG - via RandomLua. Multiply With Carry, Linear congruential generator, and Mersenne Twister. Extended with set/getState methods.
  • StringGenerator - Direct Port from rot.js
  • Map - Arena, Divided/Icey/Eller Maze, Digger/Uniform/Rogue* Dungeons. Ported from rot.js.
  • Noise Generator - Simplex Noise
  • FOV - Bresenham Line based Ray Casting, Precise Shadow Casting
  • Color - 147 Predefined colors; generate valid colors from string; add, multiply, or interpolate colors; generate a random color from a reference and set of standard deviations. (straight port from rot.js)
  • Path Finding - Dijkstra and AStar pathfinding ported from rot.js.
  • Lighting - compute light emission and blending, ported from rot.js.
  • Dice - Roguelike based dice module ported from RL-Dice.

Getting started

git clone git://

Add the contents of the src directory to lib/rotLove in your project and require the rot file.

ROT=require 'lib/rotLove/rot'
function love.load()
    f:writeCenter('You did it!', math.floor(f:getHeight()/2))
function love.draw() f:draw() end


rotLove has a number of demo projects in examples/ that you can use to get a feel for each API. To see a demo in action, run

    love . my-demo

from your shell.