# Rogue (video game)

Rogue (also known as Rogue: Exploring the Dungeons of Doom) is a dungeon crawling video game by Michael Toy and Glenn Wichman with later contributions by Ken Arnold. Rogue was originally developed around 1980 for Unix-based minicomputer systems as a freely distributed executable. It was later included in the Berkeley Software Distribution 4.2 operating system (4.2BSD). Commercial ports of the game for a range of personal computers were made by Toy, Wichman, and Jon Lane under the company A.I. Design and financially supported by the Epyx software publishers. Additional ports to modern systems have been made since by other parties using the game's now-open source code.
In Rogue, players control a character as they explore several levels of a dungeon seeking the Amulet of Yendor located in the dungeon's lowest level. The player character must fend off an array of monsters that roam the dungeons. Along the way, players can collect treasures that can help them offensively or defensively, such as weapons, armor, potions, scrolls, and other magical items. Rogue is turn-based, taking place on a square grid represented in ASCII or other fixed character set, allowing players to have time to determine the best move to survive. Rogue implements permadeath as a design choice to make each action by the player meaningful—should the player-character lose all their health via combat or other means, that player character is dead. The player must restart with a fresh character as the dead character cannot respawn, or be brought back by reloading from a saved state. Moreover, no game is the same as any previous one, as the dungeon levels, monster encounters, and treasures are procedurally generated for each playthrough.
Rogue was inspired by text-based computer games such as the 1971 Star Trek game and Colossal Cave Adventure released in 1976, along with the high fantasy setting from Dungeons & Dragons. Toy and Wichman, both students at University of California, Santa Cruz, worked together to create their own text-based game but looked to incorporate elements of procedural generation to create a new experience each time the user played the game. Toy later worked at University of California, Berkeley where he met Arnold, the lead developer of the curses programming library that Rogue was dependent on to mimic a graphical display. Arnold helped Toy to optimize the code and incorporate additional features to the game. The commercial ports were inspired when Toy met Lane while working for the Olivetti company, and Toy engaged with Wichman again to help with designing graphics and various ports.
Rogue became popular in the 1980s among college students and other computer-savvy users in part due to its inclusion in 4.2BSD. It inspired programmers to develop a number of similar titles such as Hack (1982/1984) and Moria (1983), though as Toy, Wichman, and Arnold had not released the source code at this time, these new games introduced different variations atop Rogue. A long lineage of games grew out from these titles. While Rogue was not the first dungeon-crawling game with procedural generation and permadeath features, it led to the naming of the roguelike genre.

## Gameplay

The player character is an adventurer. The game starts at the uppermost level of an unmapped dungeon with myriad monsters and treasures. The goal is to fight a way to the bottom level, retrieve the Amulet of Yendor ("Rodney" spelled backwards), then ascend to the surface. Monsters in the levels become progressively more difficult to defeat. Until the Amulet is retrieved, the player cannot return to earlier levels.

### User interface

In the original text-based versions, all aspects of the game, including the dungeon, the player character, and monsters, are represented by letters and symbols within the ASCII character set. Monsters are represented by capital letters (such as Z, for zombie), and accordingly there are twenty-six varieties. This type of display makes it appropriate for a non-graphical terminal. Later ports of Rogue apply extended character sets to the text user interface or replace it with graphical tiles.
The basic movement keys (h, left; j, down; k, up; and l, right) are the same as the cursor control keys in the vi editor. Other game actions also use single keystrokes—q to quaff a potion, w to wield a weapon, e to eat some food, etc. In the DOS version, the cursor keys specify movement, and the fast-move keys (H, J, K, and L) are supplanted by use of the scroll lock key.
Each dungeon level consists of a grid of three rooms by three rooms (potentially); dead-end hallways, T-forks, or bending passageways sometimes appear where rooms would be expected. Lower levels can include a maze in place of a room. Unlike most adventure games of the time of the original design, the dungeon layout and the placement of objects within are randomly generated.

## Development
### At UC Santa Cruz

The concept of Rogue originated with Michael Toy and Glenn Wichman. Toy grew up in Livermore, California, where his father was a nuclear scientist. Once a year, his father's workplace allowed employees' families to visit, which included allowing them to use the facility's mainframe system to play games. Toy took interest in the text-based Star Trek game (1971), which represented space combat through characters on screen, and required players to make strategic decisions each turn. Toy took to learn programming and recreate this game on other computer systems that he could access, including the Processor Technology Sol-20 and the Atari 400.
Toy subsequently enrolled in computer science at the University of California, Santa Cruz (UCSC) in the late 1970s. Working first on UCSC's PDP-11 and then its VAX-11, Toy began exploring what games were available over ARPANET, the predecessor of the current Internet. One game that intrigued him was Colossal Cave Adventure (also known as Adventure) (1976) by William Crowther and Don Woods. Adventure, considered the first text-based adventure game, challenged the player to explore a cave system through descriptions given by the computer and commands issued by the player. Toy was impressed by the game and started writing his own.
Toy met Wichman, another student at UCSC who was also writing his own adventure game. Wichman had created his own variations on traditional role-playing games such as Dungeons & Dragons while growing up. Wichman had chosen UCSC specifically to study game design to become a board-game developer, and this led him into the computer sciences to get the opportunity to play and develop games. The two became friends, shared an apartment, and challenged each other with their own adventure game creations. Of the two, Toy was more proficient at coding, while Wichman had a better sense of the design of these games. Toy and Wichman soon found that most adventure games suffered from a lack of replayability, in that the game did not change on separate playthroughs.
Around this time, ca. 1980, BSD Unix had started to gain a foothold as the operating system for many of the University of California's campuses. One element of the BSD distribution at this point included the curses programming library by Ken Arnold. curses enabled a programmer to place characters at any point on a terminal, effectively allowing for "graphical" interfaces. When Toy saw this library, he and Wichman quickly realized the potential for it. After crafting a few games using curses to learn the library, they came up with the idea of an adventure game in the flavor of Dungeons & Dragons, but, to address their concerns with the static nature of adventure games, wanted to include elements that would change every time the game was played. The two came up with a narrative, that of an adventurer setting out to explore and find treasures in the Dungeons of Doom, specifically the Amulet of Yendor (a renowned wizard in the game whose name is derived from "Rodney" spelled backwards). Wichman came up with the name Rogue, based on the idea that unlike the party-based systems of Dungeons & Dragons, the player's character was going at this alone. They also wanted to make sure the name was short to make it simple to type on command lines.
As Toy was more proficient at programming, he led the development of the game in the C language, which generally produced fast, effective code. Wichman learned the language from Toy as they went along while providing significant input on the design of the game. The first two major aspects of the game that they developed were the method of displaying the dungeon on-screen to the player, and how to generate the dungeon in a random manner. Limited by choices of what a terminal could display, they stuck to ASCII characters, such as . for empty floor space, + for doors, and | and - for walls of the dungeon. They also used the "at" symbol (@) to represent the player, considering this showed the player "where they're at". For the dungeon, they found initial attempts at purely random generation to be weak, in some cases having a stairway ending up in a room inaccessible to players. They found a solution through procedural generation, where each level would start on the idea of a 3x3 tic-tac-toe grid, with each room of various size occupying one space in this grid, and then creating the hallways to connect the rooms. Once they could have their character move about these randomly created dungeons, they added equipment, magic items, and monsters. With magic items, they wanted the effects of these items to be a mystery on each run-through, and thus would initially present the items to the player only by a descriptor such as color, and only later in the game give the true name of the item once the player experimented or used another means to identify the item. For monsters, they wanted to have more advanced intelligence routines as the player got deeper in the dungeons, but had started running into memory limits on the VAX-11, and simply made the monsters stronger with more health to pose more of a challenge.
The two started testing the game with other students at UCSC, finding that despite the limited graphics, players were filling the gaps with their own imagination. Playtester feedback helped them to improve the procedural generation routines to balance the game's challenge. One element that fell out from playtesting was the use of permadeath. Toy wanted to move away from the notion of simply learning the right sequence of steps to complete the game, which was usual in adventure games, and instead make the player focus on finding the right moves to avoid the character's death at that moment; Wichman later called this idea "consequence persistence". Initially, a Rogue game had to be completed in one sitting, but by demand of playtesters, Toy and Wichman added the ability to save the state of the game, so that players could continue a game across sessions. They soon found players were "save scumming", reloading the game from the save file, an approach counter to their design goals. They changed this so that the save file was erased upon reloading the game, thus making a character's death effectively permanent. They subsequently added a scoreboard feature that let players rank their progress with others, rewarding players with more points for surviving as deep as possible into the dungeons and making the Amulet of Yendor a lucrative goal.
Around 1982, Toy's attention to Rogue and computer games caused him to suffer poor academic performance, and he was kicked out of the school, shortly finding employment at University of California, Berkeley (UCB) in their computer lab. Toy took the Rogue code with him to continue its development. Wichman, still enrolled at UCSC, continued to help develop Rogue for a time, such as adding armor elements, but the logistics of working over the distance made it difficult for him to keep up, and he let Toy fully take over development.

### At UC Berkeley

Prior to Toy's arrival at UCB, Ken Arnold had gotten to play Rogue, which had been distributed as an executable across many of the UC campuses. Though impressed with the game, he expressed frustration at the inefficient means the game updated the screen via his curses library over a modem line. He had ideas for how to fix it, but at this point Toy and Wichman had opted not to release the code.
When Toy arrived at UCB in 1982, he sought out Arnold to get insight into the nature of how the curses library worked. After the two had gotten to know each other, Toy allowed him access to Rogue's source code. In addition to helping to improve the interface and rendering of the game, Arnold helped to improve the procedural generation aspects of the game.
With its popularity on the UCB servers, Rogue was selected as one of the game titles included in the 1983 distribution of 4.2 BSD, which spread across ARPANET and quickly gained popularity among colleges and facilities with access to this hardware. Among its fans included UNIX's co-developer Ken Thompson working at Bell Labs; Dennis Ritchie had joked at the time that Rogue was "the biggest waste of CPU cycles in history". Rogue's distribution in 4.2 BSD did not include its source code, so after Toy and Arnold separately left UCB, they took the code with them, making it difficult for anyone to build off it. Rogue's source was eventually added under a BSD software license within 4.3 BSD in 1986, putting it into the open source.

### At A.I. Design

Toy left UCB sometime before 1984 and took a consulting position with Olivetti, an Italian typewriter company that at the time were starting development of their own computer based on the IBM Personal Computer (IBM PC) operating system. There, he met one of Olivetti's computer system administrators, Jon Lane. Lane had previously seen the popularity of Rogue among the United States location he managed, had played the game himself, and was familiar with Ritchie's observations on Rogue. Upon meeting Toy, Lane proposed the idea of porting Rogue to the IBM PC as a commercial product, and Toy agreed. They founded the company A.I. Design to port and market the game. Though Toy's source code was necessary for the porting, Lane had to redevelop many of the routines for the game's interface. Lane took advantage of the more graphical Code page 437 character set on PC to expand the number of symbols to represent the dungeon, such as using a happy-face ☺ for the player-character. They also took steps to avoid potential copyright issues with TSR, the company that owned Dungeons & Dragons at that time, by changing the names of monsters like kobolds that were unique to that game.
Toy and Lane initially funded the publishing, distribution, and promotion of the IBM PC version themselves, and though they continued to gain sales, they were only able to break even as they lacked the power of a larger distributor. Around 1984, Robert Borch, the vice president of publishing at Epyx discovered that Rogue had become popular with several of Epyx's employees, who suggested that Epyx should help fund ports to other systems. Though Borch felt there was niche appeal to the game, he followed this advice and contracted A.I. Design to port the game to the Macintosh and Amiga upon which Epyx would take over distribution and marketing.
Toy obtained a Macintosh and took the lead in porting the game to that system. Toy and Lane recognized that they could implement improved graphics with the Macintosh version, but neither had art skills to make the icons. Toy reached out to Wichman to help with these graphics. Wichman was initially cautious due to the fact that his credit for Rogue in the PC version had been cast as a "contribution" equal to the UCSC playtesters rather than as equal to Toy, Arnold, or Lane, but ultimately agreed to help and joined A.I. Design. Much of the Macintosh version was developed in concert by Toy, Wichman, and Lane in a cabin at the Squaw Valley Ski Resort. Following this, Epyx requested that Wichman lead the development of the Atari ST version, with the company providing Wichman a system to work on. This work occurred alongside Toy's work on the Amiga version. Wichman enlisted help from an Epyx in-house artist, Michael Kosaka, to create the art on the Atari ST version. Epyx would also fund A.I. Design to port the game to other systems including the TRS-80 Color Computer.
Borch recognized the difficulty in marketing Rogue through traditional methods compared to other games on the market at that time, and opted to push the title through software catalogs rather than retail channels. Though it sold well initially, Rogue's sales quickly declined, and it was considered a commercial flop. Besides the competition from more graphically interesting games, Wichman attributed the failure to the fact that the commercial version of Rogue was essentially the same game previously offered for free via BSD and did not pose a new challenge. Epyx eventually went bankrupt in 1989, and A.I. Design disbanded. None of Toy, Wichman, Arnold, or Lane profited greatly from Rogue, though they became renowned in the industry for their participation on the game.

### Other ports

In 1988, the budget software publisher Mastertronic released a commercial port of Rogue for the Amstrad CPC, Commodore 64, Atari 8-bit computers, and ZX Spectrum.
Numerous clones exist for modern operating systems such as Microsoft Windows, Mac OS X, Palm OS, Linux, BSD OSs, and iOS. It is even included in the base distribution of NetBSD and DragonFly BSD.
* 4.3 BSD from the University of Wisconsin, c. 1987. Rogue is shown in "/usr/games".
* 4.3 BSD displaying the man page for Rogue
In July 2024, the Amiga version of the game was re-released for the Nintendo Switch. This version includes modern features, such as display filters, leaderboards, a choice of soundtracks, new achievements, and a save function.

## Automated play

Because the input and output of the original game is over a terminal interface, it is relatively easy in Unix to redirect input and output to another program. One such program, Rog-O-Matic, was developed in 1981 to play and win the game, by four graduate students in the Computer Science Department at Carnegie-Mellon University in Pittsburgh: Andrew Appel, Leonard Harney, Guy Jacobson and Michael Loren Mauldin.
   In a test during a three-week period in 1983, Rog-O-Matic had a higher median score than any of the 15 top Rogue players at the Carnegie-Mellon University and, at the University of Texas at Austin, found the Amulet of Yendor in a passageway on the 26th level, continued on to the surface and emerged into the light of day.
Ken Arnold said that he liked to make "sure that every subsequent version of Rogue had a new feature in it that broke Rogue-O-Matic". Nevertheless, it remains a noted study in expert system design and led to the development of other game-playing programs, typically called "bots". Some of these bots target other roguelikes, in particular Angband.

## Reception

In March 1984, Jerry Pournelle named the version of Rogue for the IBM PC his "game of the month", describing it as "a real time trap. I found myself thinking 'just one more try' far too often". The game was reviewed in 1986 in Dragon #112 by Hartley and Pattie Lesser in the "Role of Computers" column. In a subsequent column, the reviewers gave the IBM and Mac versions of the game 3½ out of 5 stars. Compute! favorably reviewed Epyx's Amiga version as improving on the text-based original, stating that "the game will give you many hours of gaming fun". In 2009, Rogue was named #6 on the "Ten Greatest PC Games Ever" list by PC World.

## Legacy

Because of Rogue's popularity at colleges in the early 1980s, other users sought to expand or create similar games. However, as neither Toy, Wichman, nor Arnold released the source code of the game, these efforts generally required the programmers to craft the core game elements from scratch to mimic Rogue. Though there were multiple titles that tried this, the two most significant ones were Moria (1983) and Hack (1982). Both games spawned a family of improved versions and clones over the next several years, leading to a wide number of games in a similar flavor. These games, which generally feature turn-based exploration and combat in a high fantasy setting in a procedurally generated dungeon and employing permadeath, are named roguelike games in honor of Rogue's impact. Most of the graphical interface conventions used in Rogue were reused within these other roguelikes, such as the use of @ to represent the player-character.
Toy, Wichman, and Arnold reunited onstage for the first time in 30 years in an event called "Roguelike Celebration" at San Francisco in 2016.