Skip to content

Repository files navigation

DeepShell

A polished CLI roguelike dungeon crawler built in TypeScript. Explore procedurally generated dungeons, battle enemies, collect loot, and see how deep you can go — all from the comfort of your terminal.

Title Screen

Features

  • Procedural Dungeon Generation: Every floor is uniquely generated with rooms, corridors, and secrets
  • Turn-Based Combat: Strategic melee and ranged combat with skill progression
  • Skill System: Level up 5 different skills — Melee, Ranged, Defense, Stealth, and Perception
  • Perk System: Choose powerful perks after clearing each floor
  • Boss Battles: Face challenging bosses every 5 floors
  • Seeded Runs: Share seeds with friends for the same dungeon layout
  • High Scores: Track your best runs

UI Features

  • Responsive Panel Layout: Wide terminals show the map, status, and messages side-by-side; narrow terminals fall back to a clean stacked view
  • Visual Status Bars: HP and XP bars with dynamic color shifts (green → yellow → red)
  • Box-Drawn Panels: Unicode border frames surround every screen element for a crisp, organized look
  • Contextual Message Icons: Combat, loot, level-ups, movement, and warnings each get their own icon and color
  • Help Overlay: help opens a clean command reference overlay without cluttering your message log
  • Built-in Tutorial: New players can jump straight into a guided tutorial from the title screen
  • Cinematic Boot Sequence: A typewriter-style intro welcomes you into the DeepShell

Screenshots

Title Screen & Tutorial

Title ScreenHow to Play
TitleTutorial

Dungeon Exploration & Combat

Floor 1 — ExplorationCombat Messages
Floor 1Combat

Items & Progression

Inventory & PickupsPerk Selection
InventoryPerks

Installation

# Clone the repository
git clone https://github.com/SBrophy-dev/deepshell.git
cd deepshell
# Install dependencies
npm install
# Build the project
npm run build

Playing

npm start

Commands

CommandAliasDescription
northnMove north
southsMove south
easteMove east
westwMove west
attackaAttack adjacent enemy
shoot [direction]Fire ranged weapon
inventoryiList your items
equip [item]Equip a weapon or armor
unequip [weapon/armor]Unequip from a slot
use [item]Use a consumable item
drop [item]Drop an item on the floor
pickupPick up item at your position
looklDescribe surroundings
inspect [target]Inspect enemy or item
skillsShow skill levels
help?Show help overlay
quitqEnd the game

ASCII Legend

SymbolMeaning
@Player
#Wall
.Floor/Corridor
+Door
<Stairs up (entry)
>Stairs down (exit)
mMelee enemy
rRanged enemy
pPatrol enemy
BBoss
)Weapon
[Armor
!Item

Development

# Run tests
npm test# Run tests in watch mode
npm run test:watch

Tech Stack

  • TypeScript — Type-safe JavaScript
  • Node.js — Runtime environment
  • Chalk — Terminal styling and colors
  • Vitest — Testing framework with property-based testing support

License

MIT

About

Terminal roguelike engine in TypeScript - Custom ASCII renderer, ECS architecture, procedural dungeon generation, and a Node.js game loop.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages