The port is complete, so the C sources and their build system (autoconf/automake inputs, Makefiles, Visual Studio project, doc templates, RPM spec, C build/modernization notes) leave this branch; they live on in master/modern-rogue for reference. Also ports the last missing wizard command (things.c pr_list/pr_spec, the '*' item-probability listing), rewrites README.md for the Go port, and updates ARCHITECTURE.md's layout notes (game/ has no third-party imports; tcell lives in term/). Kept: LICENSE.TXT, rogue.png, rogue.desktop, ARCHITECTURE.md.
86 lines
2.5 KiB
Markdown
86 lines
2.5 KiB
Markdown
# Rogue: Exploring the Dungeons of Doom (Go port)
|
||
|
||
[](LICENSE.TXT)
|
||
|
||
**Rogue** is the original dungeon-crawling adventure game that spawned an
|
||
entire genre. This branch is a faithful Go port of Rogue 5.4.4: explore
|
||
procedurally generated dungeons, fight monsters, collect treasure, and
|
||
attempt to retrieve the Amulet of Yendor.
|
||
|
||
**Original authors:** Michael Toy, Ken Arnold, and Glenn Wichman
|
||
(1980–1983, 1985, 1999).
|
||
|
||
The port is function-by-function faithful to the classic C sources — same
|
||
dungeon generation (seed-compatible RNG), same combat math, same item
|
||
tables, same messages. The C reference implementation lives on the
|
||
`master` and `modern-rogue` branches; [ARCHITECTURE.md](ARCHITECTURE.md)
|
||
documents both the original program structure and the design of this port.
|
||
|
||
## Building and running
|
||
|
||
Requires Go 1.25 or later and a terminal at least 80x24.
|
||
|
||
```bash
|
||
go build ./cmd/rogue
|
||
./rogue
|
||
```
|
||
|
||
```bash
|
||
# Restore a saved game
|
||
./rogue ~/rogue.save
|
||
|
||
# View high scores
|
||
./rogue -s
|
||
|
||
# Test the death screen (demo mode)
|
||
./rogue -d
|
||
```
|
||
|
||
## In-game commands
|
||
|
||
Press `?` in game for the full list.
|
||
|
||
- **arrows** or **h/j/k/l/y/u/b/n** — move (shift to run, ctrl to run
|
||
until adjacent)
|
||
- **`.`** rest, **`s`** search for hidden doors and traps
|
||
- **`i`** inventory, **`,`** pick up, **`d`** drop
|
||
- **`q`** quaff potion, **`r`** read scroll, **`e`** eat food
|
||
- **`w`** wield weapon, **`W`** wear armor, **`P`**/**`R`** put on /
|
||
remove ring
|
||
- **`t`** throw, **`z`** zap a wand, **`f`**/**`F`** fight
|
||
- **`>`**/**`<`** take the stairs
|
||
- **`S`** save, **`Q`** quit
|
||
|
||
## Environment
|
||
|
||
```bash
|
||
# Game options, as in the original
|
||
export ROGUEOPTS="name=YourName,terse,jump,fruit=mango"
|
||
|
||
# Wizard (debug) mode, with a reproducible dungeon
|
||
ROGUE_WIZARD=1 SEED=12345 ./rogue
|
||
```
|
||
|
||
The scoreboard is kept in `~/.rogue.scores`. Save files are Go gob
|
||
snapshots and, as in the original, are deleted when restored.
|
||
|
||
## Code layout
|
||
|
||
```
|
||
game/ the game engine: one Go file per original C file,
|
||
function-by-function (see ARCHITECTURE.md for the mapping)
|
||
term/ tcell-backed terminal, replacing curses
|
||
cmd/rogue/ the executable
|
||
```
|
||
|
||
The engine package is fully headless-testable: `go test ./game/` runs
|
||
scripted game sessions, dungeon-generation golden checks, and an RNG
|
||
compatibility test against the original C generator.
|
||
|
||
## License
|
||
|
||
BSD-style; see [LICENSE.TXT](LICENSE.TXT).
|
||
|
||
Copyright (C) 1980-1983, 1985, 1999 Michael Toy, Ken Arnold and Glenn
|
||
Wichman. All rights reserved.
|