A terminal-based roguelike game built in modern C++, featuring procedural dungeon generation, fog-of-war, turn-based combat, and teleportation mechanics. Uses ncurses for a retro terminal UI and supports saving/loading dungeons via command-line options.
- Procedural dungeon generation: Randomly generated rooms, corridors, and staircases
- Fog-of-war system: Visibility limited to nearby tiles for immersive exploration
- Turn-based combat: Strategic gameplay with an event queue system
- Persistent save system: Save and load dungeon state from disk
~/.rlg327
- Custom monster definitions: Create your own monsters! Saved and loaded from
~/.rlg327/monster_desc.txt - Custom object definitions: Design your own items! Saved and loaded from
~/.rlg327/object_desc.txt - Equipment system: Wear, remove, and manage various items and gear
- Teleportation mechanics: Strategic movement across the dungeon
- Ranged attacks: Combat from a distance
- Magic spells: Poison Ball and Fireball casting
- Inventory management: Complete item handling system
- Built with ncurses for cross-platform terminal graphics
- CHANGELOG tracking for version releases
- Command-line argument support for various game modes
- C++ Compiler (GCC/Clang with C++11 support or higher)
- ncurses library
# Ubuntu/Debian sudo apt-get install libncurses5-dev libncursesw5-dev # macOS brew install ncurses # CentOS/RHEL sudo yum install ncurses-devel
- Make build system
git clone https://github.com/HrishikeshUchake/RogueLike-Dungeon-Game.git
cd RogueLike-Dungeon-Gamemake clean # Clean previous builds
make # Compile the gameThe game automatically creates ~/.rlg327/ directory for save files and custom definitions.
./dungeon # Start new game./dungeon --save # Save current dungeon state
./dungeon --load # Load previously saved dungeon./dungeon --parse # Parse custom monster and object descriptionsNote: Ensure the following files exist with valid content:
~/.rlg327/monster_desc.txt- Custom monster definitions~/.rlg327/object_desc.txt- Custom object definitions
| Key | Action |
|---|---|
7/8/9/4/6/1/2/3 |
Move (numeric pad or y/k/u/h/l/b/j/n) |
5, ., Space |
Rest / Skip turn |
<, > |
Ascend/Descend stairs (on stair tiles) |
| Key | Action |
|---|---|
a |
Enter ranged attack mode (f to fire) |
p |
Cast Poison Ball |
F |
Cast Fireball |
| Key | Action |
|---|---|
i |
Show inventory |
e |
Show equipment |
I |
Inspect inventory item |
w |
Wear item |
t |
Take off equipment |
d |
Drop item |
| Key | Action |
|---|---|
f |
Toggle fog of war |
g |
Enter teleportation mode |
r |
Random teleport target |
m |
View visible monsters |
L |
Look mode (inspect tiles) |
Q |
Quit the game |
- Algorithmic room placement with connecting corridors
- Randomized stair placement for level progression
- Balanced monster and item distribution
- Turn-based with priority queue for entity actions
- Line-of-sight calculations for ranged attacks
- Equipment affects combat statistics
- Dynamic visibility system
- Explored areas remain visible but dimmed
- Toggle option for development/debugging
~/.rlg327/
├── dungeon # Saved game state
├── monster_desc.txt # Custom monster definitions
└── object_desc.txt # Custom object definitions
Screen.Recording.2025-07-18.at.3.49.08.PM.mov
Screen.Recording.2025-07-18.at.3.59.52.PM.mov
- Fork the repository
- Create a feature branch (
git checkout -b feature/new-feature) - Commit your changes (
git commit -am 'Add new feature') - Push to the branch (
git push origin feature/new-feature) - Create a Pull Request
make debug # Build with debug symbolsmake clean # Remove compiled objects and executableThis project is available under the MIT License. See the LICENSE file for more details.
- Built using the ncurses library for terminal-based graphics
- Inspired by classic roguelike games like Rogue, NetHack, and Angband
- Developed as part of coursework/personal project at Iowa State University
Created by Hrishikesh Uchake
For questions, issues, or contributions, please open an issue on GitHub!
MIT License — feel free to use, modify, or expand this project for personal or academic use.
Built by Hrishikesh Uchake




