- Python 3.13+
- uv (recommended) — or pip
git clone https://github.com/dakshp26/terminal-arcade.git
cd terminal-arcade
uv sync
uv tool install . --with-requirements requirements.txtYou're all set — terminal-arcade is now available from any CLI and directory on your system. Happy arcading!
New games dropped? Pull and reinstall:
git pull
uv tool install . --with-requirements requirements.txtThe arcade is still being built. More games are queued up and dropping soon — stay tuned by watching and starring the repo (or better yet, contribute one).
| Action | Keys |
|---|---|
| Move | Arrow keys / WASD / hjkl |
| Secondary Action | Space / ↑ / W |
| Restart | R |
| Menu | Esc |
| Quit | Ctrl+C |
terminal_games/
├── app.py # App root (Textual)
├── screens/
│ └── menu.py # Game selection menu
└── games/
├── protocol.py # TerminalGame interface
├── registry.py # Game registry
├── serpentine/ # each: model.py (logic), screen.py (TUI)
├── starfall/
├── tictactoe/
├── minefield/
├── asteravoid/
├── echo_chamber/
├── floodgate/
└── paddleball/
Game logic (model.py) is kept free of Textual/Rich imports so it stays independently testable.
- Create
terminal_games/games/<name>/withmodel.pyandscreen.py. - Implement the
TerminalGameprotocol —game_id,title,description,build_screen(). - Register it in
terminal_games/games/registry.py→get_games().
That's it. The menu picks it up automatically.
See LICENSE for details.
This project is intended for personal and educational use only. It is not permitted to use this project for commercial purposes. The sole intention of this project is to showcase the development of terminal based games using python and open source libraries.








