GitHub - modern-terminal-games/mtg

4 min read Original article ↗

mtg gameplay

Your terminal has been all work and no play. Let's fix that.

Arcade-feel games that live where you do — one command, zero browser tabs.

Rust + Ratatui · 60 Hz fixed-timestep physics · optional arcade SFX

crates.io mtg-core License: MIT

brew install mtg → play


⚡ Play in 30 seconds

brew tap modern-terminal-games/mtg
brew trust modern-terminal-games/mtg   # Homebrew 6+ third-party taps
brew install mtg
mtg

Rustacean? Even faster:

cargo install modern-terminal-games && mtg

That's it. A menu appears. Pick a game. Your build can wait.


🎮 The lineup

Small on purpose. Every game here is built for the terminal first — not a sad port of something that belongs elsewhere.

🧱 Breaker — neon brick-clearing, pure focus

Angle-aware paddle physics. Multi-hit blocks. Levels that get meaner the longer you survive.

or A D move · Space launch · p pause · m mute · r restart · q quit

🏓 Paddle Battle — arena duel vs an AI that fights fair

Two paddles. One ball. First to seven. Proper bounce angles, no cheap shots.

Paddle Battle gameplay

W S or move · Space serve · p pause · m mute · r restart · q quit

🐍 Snek — classic snake, pure muscle memory

Eat apples. Grow longer. Don't hit the walls — or yourself. Speed ramps up as you feast.

Snek gameplay

WASD / arrows turn · p pause · m mute · r restart · q quit

👾 Alien Raid — sky defense, pure focus

A classic invader swarm. Strafe, shoot, hide behind bunkers. They get faster as the ranks thin — and they shoot back.

Alien Raid gameplay

A D or move · Space fire · p pause · m mute · r restart · q quit

More coming. The catalog stays curated — quality over quantity. Got a game that deserves to exist? Make the case.


🤔 Why does this exist?

Because your compile takes four minutes and doomscrolling is a trap.

  • One command, everything. Install once, launch any game with mtg.
  • Actually polished. Braille canvas rendering, fixed-timestep physics, intentional color, synthesized SFX. This isn't ASCII snake from 1997.
  • Goes where you go. SSH session? tmux pane? Remote box in another timezone? Works.
  • Respects your machine. No Electron. No browser. No 400MB of Chromium to play Pong. Pure Rust TUIs.
  • Built to grow. Shared mtg-core engine means new games ship fast and feel consistent.

📦 Install options

Homebrew (recommended)
brew tap modern-terminal-games/mtg
brew trust modern-terminal-games/mtg
brew install mtg

Upgrade later:

brew update && brew upgrade mtg
Cargo
cargo install modern-terminal-games

Want just one game as a standalone binary?

cargo install mtg-breaker
cargo install mtg-paddle-battle
cargo install mtg-snek
cargo install mtg-alien-raid   # Alien Raid
From source
git clone https://github.com/modern-terminal-games/mtg.git
cd mtg
cargo install --path crates/mtg
mtg

Requirements: a modern terminal with color support. Audio is a bonus, not a dependency — no speakers, no problem.


🕹️ Usage

mtg                      # interactive menu
mtg list                 # list games
mtg breaker              # jump straight in
mtg paddle-battle        # or here
mtg snek                 # or here
mtg alien-raid           # or here
mtg help

🧩 Under the hood

Project layout & crates
mtg/
├── crates/
│   ├── mtg/              # Launcher binary (`mtg`)
│   ├── mtg-core/         # Shared loop, input, audio, theme, UI
│   ├── breaker/          # Breaker
│   ├── paddle-battle/    # Paddle Battle
│   ├── snek/             # Snek
│   └── alien-raid/       # Alien Raid
├── docs/assets/
├── LICENSE
└── README.md
Crate Role
modern-terminal-games Launcher (mtg)
mtg-core Game loop, input, audio, UI primitives
mtg-breaker Breaker
mtg-paddle-battle Paddle Battle
mtg-snek Snek
mtg-alien-raid Alien Raid

🗺️ Roadmap

  • Unified mtg launcher
  • Breaker & Paddle Battle
  • Shared mtg-core engine
  • Snek (classic snake + arcade SFX)
  • Alien Raid (Space Invaders-style defense)
  • More curated games — puzzles, roguelite sketches
  • Local 2-player where it fits
  • High-score persistence (bragging rights, saved)
  • Prebuilt Homebrew bottles for instant installs

🛠️ Add your game

The bar is one sentence: it should feel intentional in a terminal.

  1. Fork, then add a crate under crates/ exposing pub fn run() -> anyhow::Result<()>
  2. Lean on mtg-core for the loop, input, audio, and UI chrome
  3. Register it in crates/mtg/src/main.rs
  4. Open a PR — tell us the controls and the feel you're going for
cargo run -p modern-terminal-games -- <your-game>

Enjoying the arcade? A ⭐ keeps the neon lights on.

Made for people who live in the terminal — and still want to play something beautiful.

MIT © modern-terminal-games