A terminal block stacking game with a genuine arcade soul. Two complete rule sets: faithful NES-style Classic and guideline-style Modern. Pure Python standard library, zero dependencies.
pip install falliant
falliantThat's it. No config, no dependencies, no setup.
The NES experience, faithfully recreated:
- Biased re-roll randomizer (droughts and floods included, as nature intended)
- No wall kicks, two-state S/Z/I rotation
- Pieces lock on the gravity tick, no hold, no hard drop
- One next-piece preview
- NES scoring: 40 / 100 / 300 / 1200 x (level + 1)
- Authentic NES speed curve, including the level 29 kill screen
- Start anywhere from level 0 to 19
Guideline-style play:
- 7-bag randomizer: every piece once per bag, no droughts
- Super Rotation System with full wall kicks
- Lock delay with move resets, hold piece, ghost piece, hard drop
- Three-piece preview
- T-spins (full and mini), combos, back-to-back bonuses, perfect clears
- Guideline scoring: 100 / 300 / 500 / 800 x level, and more for the fancy stuff
- Start anywhere from level 1 to 15
Clear four lines in either mode and the game says its own name: FALLIANT!
| Key | Action |
|---|---|
| ← → or A D | Move left / right |
| ↓ or S | Soft drop |
| ↑ or W or X | Rotate clockwise |
| Z | Rotate counter-clockwise |
| Space | Hard drop (Modern only) |
| C | Hold piece (Modern only) |
| P | Pause |
| Q | Quit to menu |
Initials entry after a high score: just type your letters, or use the arrows arcade-style.
Each mode keeps its own top-10 leaderboard with three-letter initials, saved per user:
- Linux:
~/.local/share/falliant/high_scores.json(respectsXDG_DATA_HOME) - macOS:
~/Library/Application Support/falliant/high_scores.json - Windows:
%APPDATA%\falliant\high_scores.json
- Python 3.9+
- A color terminal at least 60x24 (on Windows,
windows-cursesinstalls automatically) - A monospaced font (you have one; it's a terminal)
git clone https://github.com/veteranbv/falliant.git
cd falliant
pip install .For development setup, tests, and the release process, see CONTRIBUTING.md.
- "Terminal too small": enlarge to at least 60x24
- Garbled borders or ghost pieces: use a terminal with UTF-8 and a font with box-drawing characters (any modern terminal qualifies)
- Arrow keys act strangely over unusual SSH/tmux setups: WASD always works
MIT. See LICENSE.
Created by Henry Sowell
