An Arkanoid clone started in 2014, rescued in 2026 and ported from SFML to SDL3. Break the wall, catch the capsules, chase the high score.
make run # build (Debug) and launch
make release # optimized build
make dev # build and launch with developer cheats (DEV_MODE)
make help # every targetDependencies (Fedora): SDL3-devel SDL3_image-devel gtest-devel cmake gcc-c++.
| Action | Keyboard | Mouse | Gamepad |
|---|---|---|---|
| Move the paddle | Left / Right | move | left stick / d-pad |
| Release the ball / fire lasers | Space | left click | south button |
| Pause (Resume / Main menu / Quit) | Escape | - | Start |
| Fullscreen | F11 | - | - |
| Menus: navigate / adjust / pick | arrows / Enter | hover / click | d-pad / south |
The paddle follows the mouse at the same top speed as the keyboard - no input is faster than another.
10% of destroyed bricks drop a capsule. Mode capsules (marked "timed") last 10 seconds and any new capsule cancels the one in effect.
A brick is worth 10 points per life it takes to kill - silver (2 lives) scores 20, gold (3) scores 30 - awarded only when it dies. Chipping a life scores nothing, and indestructible bricks never score. The high score persists across runs.
Stages are plain-text ASCII art in media/stages/:
15 lines of 15 characters, one per brick, played in filename order.
See media/stages/README.md for the legend -
add a .txt file and it is in the game.
EDITOR on the main menu opens the stage editor:
MOVE: ARROWS | PAINT: ENTER | ERASE: DEL | TYPE: Q/E
SAVE: S | LOAD: L | MENU: ESC
It saves to ~/.local/share/paranoid/custom.map in the stage-file
format, so a finished map ships by copying it into media/stages/.
Scale mode (letterbox keeps the aspect, stretch fills the window),
fullscreen, and separate music / effects volumes, adjusted with Left / Right.
Settings and the high score persist under ~/.local/share/paranoid/.
The code is split in two layers: src/engine/ is a small reusable,
SFML-shaped facade over SDL3 (window, sprites, text, audio, gamepad),
and src/C*.{hpp,cpp} is the game itself (states, entities, menus).
make test # ~100 GoogleTest cases, headless (dummy SDL drivers)
make sanitize # test suite under ASan/UBSan
make leak-check # tests + a game smoke run under valgrind
make format # clang-format over every sourceCI builds and tests every push on Linux x86_64, Linux arm64 and Windows (MSYS2), and uploads playable artifacts for each platform.











