Update on 13 Nov 2023: I abandoned this project, in a working but incomplete state, in 2017. It requires various old versions of its dependencies, particularly Hy, to run. I went on to reuse a few of its ideas in Infinitesimal Quest 2 + ε.
Rogue TV is a nonviolent roguelike where you play a lucky contestant on a roguelike-themed game show. It draws inspiration from Smash TV, Weekend Warrior, MXC, Legends of the Hidden Temple, Mazeworld Catacombs, Scarab of RA, NetHack, and, of course, Rogue. It's written in Hy with Python 3. It runs on both CPython and PyPy; you can get better performance, especially for map generation, on PyPy.
Currently, the game is playable, but a lot of features remain to be implemented.
Dependencies include Hy (3db13ec71f2c79a1b91f3e0a7169d85658a410a1
), Kodhy, Heidegger, and curses. (All dependencies not already included with Python are in pure Python or Hy.) You can download the game and its dependencies as a self-contained bundle for Unix-likes (POSIX-compliant systems) or Windows (64-bit only). The POSIX bundle has been tested with Linux and Mac OS X, as well as Windows with Cygwin and Cygwin's Python installed. The Windows bundle includes a subset of Cygwin and Python so you don't have to install these first. I keep both bundles up to date with the master branch on GitHub.
To start the game:
- From the POSIX bundle, type
sh run.sh
. - From the Windows bundle, double-click
run.bat
(its name may appear asrun
if you have file extensions hidden) to get a command window, then typesh run.sh
and hit Enter. - From the source code, type
hy run.hy
.
Use the --help
argument to see command-line options. The game requires a terminal emulator that supports 256 colors and Unicode, such as GNOME Terminal, Konsole, LXTerminal, Terminal.app, or Mintty. It works fine over SSH or in screen or tmux.
Please send me bug reports and patches. Feature suggestions are also welcome, but I've got a lot planned already.
Press the ?
key to see controls.
Detailed descriptions of every item, creature, and kind of terrain are available in-game. To see them, enter look mode (;
) or the inventory list (i
) and press the appropriate key.
In the status bar, the number in parenthesis next to the time remaining is the amount of time your last action took, in seconds. If there is no number, your last action took no time.
The object of the game is to maximize your winnings. Your winnings are the sum of the monetary values of the items you're carrying. More broadly, the goal is to maximize your average winnings across many games of Rogue TV. If you take an up elevator, or you win the game (by taking the final down elevator with the Amulet of Yendor), you get to keep all your winnings. But if you run out of time or resign, prizes are taken away from you until you have half your original winnings or less. So, it's sometimes wiser to take an up elevator than to press your luck in pursuit of the Amulet.