Lucien Rivière
  • HomeGo to
  • ProfileExperience, skills and CVGo to
  • MethodHow I work, layer by layerGo to
  • ContactSay helloGo to
  • ProjectsEverything I built, filterableGo to
  • CollaboratorsEveryone I built withGo to
  • SignalMapA mobile coverage map of Réunion and Mayotte: click anywhere and see the signal you would get from about 3,100 antennas.Projects
  • ZappyA network survival game in three programs: a C++ server, a 3D viewer and AI players, with LLM role-playing agents as a bonus.Projects
  • MaskGeneratorA small neural network that finds the road lines in a camera image, and a 2D raycast that turns them into lidar-like distances to drive a car.Projects
  • CockerA prototype platform to design an app as a graph of services and deploy it on Kubernetes: sandbox to try it, production to expose it.Projects
  • RaytracerA C++ raytracer where everything (shapes, materials, lights, output) is a plugin, sped up with a BVH, with a live preview window.Projects
  • RoboCarA small real car that drives itself around a track: a camera, a lidar-like view of the road lines, and a model that learned from human driving.Projects
  • CVRIETwo machine-learning studies using only scikit-learn: classifying chest X-rays, and grouping patient testimonies into symptom clusters with no labels.Projects
  • MyTeamsA Teams-like chat in Rust: a multi-client server, a command-line client, a text protocol written as an RFC, and data that survives restarts.Projects
  • ArcadeA retro game console in C++ where games and screens are plug-in libraries: swap the game or the graphics (terminal, SDL, SFML) while it runs.Projects
  • Masked DeliveryA game made in a weekend for Global Game Jam 2026: pick the right mask for each caller, then survive the drive, with penalties that stack up.Projects
  • 42shA Unix shell written in C, tcsh-style: pipes, logic operators, globbing, aliases, variables, line editing and history, checked against Bash.Projects
  • CorewarA virtual machine in C where small programs fight inside a shared memory, with my own warrior and a 3D viewer in the bonus.Projects
  • A-DasHboarDA dashboard of widgets from third-party services, built on JustBetterAuth, an authentication library written from scratch.Projects
  • StoneAnalysisA Python tool that finds the notes in a sound file with a hand-written Fourier transform, and hides secret messages inside the audio.Projects
  • PipetoA security audit of a nuclear-reactor console full of planted vulnerabilities: find them, rank them, patch them and prove the fixes with tests.Projects
  • TardisCleaning SNCF train-delay data, training a model to predict delays, and a Streamlit dashboard. The model barely beat guessing, and the page says so.Projects
  • InterStonarThrow a rock into a simulated universe: planets that attract each other and merge, or shapes it hits, found by stepping with signed distances.Projects
  • SensAIA small chat program for a local AI model that talks to it with plain HTTP, and can force its answers into a JSON shape you define.Projects
  • This portfolioThe site you are on: one set of data, six themes. Each theme is a different way to explore the same work, from a familiar page to a game.Projects
  • Portfolio toysSmall interactive toys from this portfolio: Fourier epicycles, a themed crossword and a bot that walks where you click.Projects
  • snake_pyA contribution to Infamous97440's repository: 2 commits from me.Projects
  • MyTopA clone of the Linux top command in C and ncurses: live CPU, memory, swap and per-process usage read from /proc.Projects
  • Switch to CorporateThemes
  • Switch to SpaceThemes
  • Switch to ReelThemes
  • Switch to GroveThemes
  • Switch to Voxel RedstoneThemes
  • Search the whole siteActions
  • Download CV (PDF)Actions
  • Copy my email addressActions
  • Turn the home page bot on or offActions
All themes

← All projects

Arcade

A retro game console in C++ where games and screens are plug-in libraries: swap the game or the graphics (terminal, SDL, SFML) while it runs.

One session through all five displays: the menu in an SFML window, the colored terminal display picked from it, Flappy Bird switched mid-game to an upside-down SFML window then to the classic terminal, Nibbler switched to SDL2, Snake, then the scores. Filmed on a virtual screen; a small script plays the games.
Period
Mar 2026 – Apr 2026
Role
Core, menu and two graphics libraries
Team
3 people
Status
archived

Stack and tags

Demo

Arcade with its terminal display (ncurses): the menu with each module's embedded icon, a round of Snake, back to the menu, then Nibbler. Recorded in a clean container; the window displays need a screen.
Transcript (final screen)
demo:arcade$ ./arcade lib/arcade_ncurses.so
demo:arcade$ 

Arcade is a console for classic games with a twist: the program itself contains no game and no graphics. The games (Snake, Nibbler, Flappy Bird) and the ways to display them (in the terminal, or in a window with two different libraries) are plug-ins found at startup, and any game works with any display.

How it works

In the middle of a game, one key swaps the display (from a window to the terminal, say) and another swaps the game, without losing a beat. A plug-in compiled while Arcade is open shows up in the menu straight away. Each plug-in carries its own icon and pictures inside it, so nothing goes missing on someone else’s machine. We even shared our plug-in format with another group, so the two projects could run each other’s games.

What I took from it

  • A stable shared contract lets people work without talking to each other, as long as they respect it.
  • Making a plug-in carry its own files removes a whole category of “works on my machine”.

Built with

  • LOYER AurélienSecond-year student at Epitech Réunion – Class of @EpitechPGEPromo2029.GitHubWebsiteLinkedIn
  • Samuel Jaglalesleepwalkers dev — where dreams become production code. Coding my dreams into reality.GitHubWebsiteLinkedIn