Version 0.9
Tetrivibes is a C++17 / Qt 5 client for multiplayer tetromino combat in the TetriNET style. It can join classic public servers and host its own matches on a native protocol.
The last player who can still place pieces wins.
This client was vibecoded with OpenCode and Grok 4.6 — the best TetriNET client I ever played.
Prebuilt binaries for 0.9 are on the v0.9.0 release:
- Linux x86_64 — needs Qt 5 Widgets and Network on the system
- Windows x86_64 — includes Qt and OpenSSL DLLs; unzip and run
tetrivibes.exe
- Connects to TetriNET Classic servers
- Supports protocol version 1.13 (
tetrisstart … 1.13) - Supports TetriFast
- Auto protocol selection when joining from the lobby
- Partyline chat, channel list (
/list,/join), topics, and winlists - Classic 12×22 fields and special-block letters
- Public listing from servers.tetrinet.fr
- LAN discovery of native hosts (UDP port
31458) - Add, remove, and persist custom servers in
~/.tetrivibes/servers.csv - Saved nickname
- Blocktrix servers are shown as unsupported
- Host a local server (default TCP port
31457) for up to six players - Server-authoritative play: the host simulates fields, specials, and wins
- Optional practice bots (0–5) seated on unused slots
- Leave the match without stopping the server; return later or shut it down from the Host Game menu
- Matches stay in lobby until someone clicks Start Game
- Win scoreboard stored in
~/.tetrivibes/scoreboard.csv
- Offline match against 0–5 CPU opponents
- Same specials, inventory, and last-player-standing rules
- Ghost piece for hard-drop landing
- Next-piece preview
- Special inventory (up to 18)
- Keys
1–6use the first special on that player slot
| Lobby option | Use |
|---|---|
| Auto | Prefer TetriNET 1.13 when joining a listed server |
| TetriNET 1.13 | Classic TetriNET login and framing (0xFF lines) |
| TetriFast | Faster drop timing on compatible servers |
| Native | Tetrivibes hosted games |
sudo apt install qtbase5-dev cmake g++
./build.sh
./build/tetrivibesOr by hand:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
./build/tetrivibesRun the test suite with ./test.sh.
Install MinGW and a Windows MinGW build of Qt 5 (for example with aqtinstall into ~/qt/5.15.2/mingw81_64):
sudo apt install g++-mingw-w64-x86-64 cmake
./build.sh --windowsThe packaged exe and Qt DLLs are written to build-win/dist/tetrivibes/. Copy that folder to a Windows machine and run tetrivibes.exe.
If Qt is not in the default path:
QT_MINGW=/path/to/qt5-mingw ./build.sh --windowsQT_MINGW must contain lib/cmake/Qt5. Linux qtbase5-dev cannot be used for this build.
- Join Server — pick a listed, LAN, or custom host
- Host Game — start a native server and wait for friends, then Start Game
- Practice vs Bots — local match, no network
| Key | Action |
|---|---|
| ← → | Move |
| ↑ / X | Rotate clockwise |
| Z / Ctrl | Rotate counter-clockwise |
| ↓ | Soft drop |
| Space | Hard drop |
| 1–6 | Use first special on that player slot |
| Enter | Focus chat |
Clearing lines collects specials in those rows and plants more on your field.
| Letter | Name | Effect |
|---|---|---|
| a | Add Line | Garbage line on the target |
| c | Clear Line | Remove the target's bottom line |
| b | Clear Specials | Turn target specials into normal blocks |
| r | Random Clear | Delete random blocks |
| o | Block Bomb | Explode bombs and scatter nearby blocks |
| q | Blockquake | Shift each row left/right |
| g | Gravity | Collapse columns and clear lines |
| s | Switch Field | Swap fields with the target |
| n | Nuke Field | Wipe the target's field |
| l | Left Gravity | Slide blocks to the left |
| p | Piece Change | Replace the current piece |
| z | Zebra Field | Clear every other column |
Helpful specials (c, g, n, b) are worth using on yourself. The rest are attacks.
MIT. See LICENSE.


