Royal Blocks is a multiplayer reinterpretation of the classic Tetris game, featuring both a graphical and a terminal-based client interface, along with a server that handles matches and communication between players.
Download the latest Windows installer here:
👉 RoyalBlocks_Installer.exe
This setup installs:
- royal-blocks-gui.exe– graphical interface
- royal-blocks-tui.exe– terminal interface
- royal-blocks-server.exe– game server
You can choose which components to launch after setup.
Requires Windows 10 or higher
Download the latest source code here:
👉 Source Code (.zip)
Then follow the instructions below to build and run the project manually.
For Arch Linux/Manjaro, you can install the program with yay or paru:
yay -S royal-blocksor
paru -S royal-blocksThe project requires the installation of the following programs and libraries (the commands are for Debian-based systems):
- Make
 sudo apt install make
- CMake
 sudo apt install cmake
- Git
 sudo apt install git
- Qt5 (for the GUI)
 sudo apt install qtbase5-dev
To easily install all required dependencies on Windows, we recommend using MinGW to have access to the g++ compiler. Don't forget to install make, cmake, Git and Qt5 with MinGW in order to build the project:
pacman -S mingw-w64-x86_64-make mingw-w64-x86_64-cmake mingw-w64-x86_64-git mingw-w64-x86_64-qt5Other libraries, such as ftxui and nlohmann, are also required for compilation, but they are automatically included via CMake using the FetchContent feature.
The project also requires:
- GCC 13 or higher
- and C++23 support
The project can be compiled in Release or Debug :
make releasemake debugTo launch Royal Blocks, you can choose between two interfaces:
- 
Graphical interface: ./royal-blocks-gui 
- 
Terminal interface: ./royal-blocks-tui 
To start the server, run:
./royal-blocks-serverTo establish communication between the client and the server:
You can specify a custom port as an argument when launching the server:
./royal-blocks-server <port>If no argument is provided, the server will read the SERVER_PORT environment variable. If the variable is not set, the default port 1234 will be used.
In both the graphical and terminal interfaces, you can modify the server's IP and port directly. These settings will be saved in the configuration file:
- 
~/.config/royal-blocks/config.jsonon Linux
- 
%APPDATA%\royal-blocks\config.jsonon Windows
If no configuration file exists, a default one will be automatically created using:
- the IP address defined by the SERVER_IP environment variable (or 127.0.0.1 by default),
- and the port defined by SERVER_PORT (or 1234 by default).
If you can't see all game information on the screen, you may need to zoom out in your terminal window.
Here is a list of the different keys used to move and rotate the pieces in the game:
- 
Move left 
 ←
- 
Move right 
 →
- 
Soft drop 
 ↓
- 
Hard drop (instantly place the tetromino at the bottom) 
 ESPACE
- 
Rotate clockwise 
 g
- 
Rotate counterclockwise 
 f
- 
Hold current tetromino 
 h
- 
Select previous effect 
 e
- 
Select next effect 
 r
- 
Clear stored maluses 
 t
- 
Buy and immediately send the selected effect - y
- left-click on the effect
 
- 
Buy and store the selected effect 
 u
- 
Select target for maluses 
 left-click on the opponent's name
- 
Quit the current game 
 q
| First Name | Last Name | Student ID | 
|---|---|---|
| Tao | Chau | 000567638 | 
| Juliette | Cornu-Besser | 000581723 | 
| Quentin | Bernard Bouissières | 000572078 | 
| Jonas | Schellekens | 000590985 | 
| Ethan | Van Ruyskenvelde | 000589640 | 
| Lucas | Verbeiren | 000591223 | 
| Ernest | Malysz | 000514682 | 
| Rafaou | Gajewicz | 000569354 | 
This project is licensed under the GNU GPL v3.
This project uses several open source components.
Please see LICENSES_THIRD_PARTY.md for details.