Chapters00/08 · 0:00:00
Arcade is a small C++ platform where any game can run on any display library, without either side knowing about the other. In this post I explain the idea, the one rule that makes it work, and what a game or a display has to implement to plug in.
What is Arcade?#
It started as an Epitech project with a simple goal: pick a game and a display, and make them work together, whatever the choice. Two games ship by default, and three display libraries.
Everything is a plugin. Games and displays are compiled as shared libraries (.so) and loaded at runtime by a small core. Swapping the display while playing is just loading another file.
- C++
- CMake
- SDL2
- SFML
- NCurses
- Doxygen
The two games#
Snake is the classic. The game only knows about a grid and a snake, never about pixels or windows. Here is the exact same game, with the exact same code, rendered by two different displays.


The first screen is a graphical window drawn by SDL2, the second is made of characters in a terminal drawn by NCurses. Only the display library changed: the game never noticed, which is the whole point of the project.
MineSweeper needs mouse clicks on top of the keyboard, which is a good test of the event system described below.
