Rogue is the 1980 dungeon crawler that gave the roguelike genre its name. This is a port of its final UNIX release, 5.4.5, to Python and pygame.

It isn’t a remake “inspired by” Rogue. The dungeon generator, the monster tables, the combat formulas, the item probabilities and the daemon and fuse scheduler are all carried across value-for-value from the original C source. Where the C does something odd, the port does the same odd thing, with a comment saying so.

The new part is how it looks. The curses terminal is replaced by a tile grid of 61 hand-drawn 8×12 sprites, including 26 animated monsters and a hero who visibly wears whatever armour and weapon he is carrying. The sprites are stored as text inside the code, so the whole game is a single file of about 10,400 lines with no images, fonts or data files.

Run it

pip install pygame
python rogue.py

Add --seed 42 for a reproducible dungeon, or --ascii for the original character display. Rogue’s BSD licence travels with the port, and the original copyright notice sits at the top of rogue.py.

You can also play it right now on itch.io.