Roguelike Toolkit in Love. A Love2D/lua port of rot.js
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
doc Update docs Jul 19, 2017
src Update textDisplay.lua Apr 5, 2018
.gitignore Last of the ldoc prep, add docs folder May 7, 2013
LICENSE.txt Added 30log License May 3, 2013 Space wranglin' Jul 19, 2017
main.lua Space wranglin' Jul 19, 2017

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.