Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Screenshot 2026-02-15 at 3 39 21 PM #TerminallyRogue

A CLI sci-fi dungeon crawler set on Europa, Jupiter's moon. Every playthrough features unique narration powered by a local LLM (Qwen3-0.6B), while the game engine maintains full control of state, combat, and progression. The AI model auto-downloads on first launch — no manual setup required.

Quick Start

# Clone and enter the project
cd TerminallyRogue

# Option A: One-command launcher (recommended)
./play.sh

# Option B: Manual setup
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
python -m terminally_rogue

The AI narration model (~400MB) downloads automatically on first run. No separate setup step needed.

Requirements

  • Python 3.9+
  • A terminal that supports Unicode and ANSI colors
  • ~400MB disk space for the Qwen3-0.6B model (downloaded once)

Dependencies are installed automatically: rich, llama-cpp-python, huggingface-hub.

How It Works

Choose Your Operative

Character HP ATK DEF Special Playstyle
Kael - The Sentinel 120 12 10 Void Barrier (absorb hit) Tank, wins by attrition
Nyx - The Wraith 80 18 5 Phase Strike (2x dmg, ignore armor) Glass cannon
Sable - The Engineer 100 10 8 Repair Drone (heal 30 HP) Balanced, most forgiving

3-Act Structure (~60 steps)

  • Act I: The Descent - Ice Caves of Tara Regio
  • Act II: The Deep - Subglacial Ocean & Ancient Ruins
  • Act III: The Nexus - Alien Command Center

Each act features combat encounters, boss fights, weapon discoveries, and story choices that shape your ending.

Player Choices at Every Step

Every step in the game presents you with choices:

  • Exploration - Choose how to approach each area (scout, investigate, proceed cautiously). Your choices nudge mercy, knowledge, and corruption scores.
  • Weapon Finds - Examine closely, equip immediately, or salvage for parts.
  • Pre-Combat - Charge in aggressively, prepare defenses, or analyze the enemy.
  • Story Moments - 4 critical story choices with major score impact that determine your ending.

The LLM narrates each scene in response to your pick, so every playthrough feels different.

3 Endings

Your choices throughout the game accumulate mercy, knowledge, and corruption scores. The highest score determines your ending:

  • The Peacekeeper - Broker peace with the alien intelligence
  • The Scholar - Merge with the data archive, bridge two species
  • The Consumed - Become part of the alien network

Combat

Turn-based combat with attack, special ability, and item options. Each character plays differently - Kael absorbs hits, Nyx deals devastating damage, and Sable heals through fights.

Every attack, special, and enemy action is narrated by the LLM with unique flavor text, alongside the mechanical damage numbers so you always know what happened.

Fixed-Window UI

The game renders as a single-screen layout that fits your terminal without scrolling. The display dynamically sizes itself: location bar, narration panel, stats + inventory, and choice/action panels all compose into one view.

LLM Narration

The Qwen3-0.6B model runs locally on CPU (1-3 second generation time) and powers all narration: exploration, combat actions, special abilities, enemy deaths, story moments, and endings. The model auto-downloads on first launch. Pre-written fallback text exists as a safety net but should rarely trigger.

Project Structure

TerminallyRogue/
├── play.sh                     # One-command launcher
├── setup_model.py              # Standalone model downloader
├── models/                     # GGUF model files (gitignored)
├── assets/
│   ├── ascii_art.py            # Title screen, boss art
│   └── fallback_text.py        # Emergency fallback narration
├── src/terminally_rogue/
│   ├── __main__.py             # Entry: python -m terminally_rogue
│   ├── app.py                  # Main game loop
│   ├── config.py               # Constants and tuning knobs
│   ├── engine/                 # Game state, combat, inventory, choices
│   ├── characters/             # 3 playable characters
│   ├── narrative/              # LLM client, prompts, parser
│   └── ui/                     # Rich terminal layout and input
└── tests/                      # 35 tests (combat, parser, state machine)

Running Tests

pip install -e ".[dev]"
pytest tests/ -v

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages