Projects
Here are few things I have made or have contributed to. They are roughly in reverse chronological order of involvement.
Harvesters From Outer Space, a UFO-catcher game for the Ludum Dare 52 jam by
merwaaan and I. Featuring our signature move of using a physics engine for
arcade games (after You are the Münster). A short one, albeit with a great
cheesy-50’s-sci-fi-movies look, satisfying ship movement, and cows.
NEONWISE’89, a laconic wire buzz game made for the Ludum Dare 47 jam with
the ever-talented merwaaan. It’s a bit hard, as I enjoyed designing tight
passages and devious traps maybe a little too much. The late 80’s aesthetic and
moody track play well with the frustration though.
flycheck, a GNU Emacs plugin for syntax-checking code and reporting
diagnostics in the buffer. I’ve been helping around as a co-maintainer since
the original author’s departure. It has support for over 40 different
programming languages, and is one of most-downloaded Emacs plugin on MELPA.
QUELTRIS, our (with
merwaaan) Ludum Dare 43 jam entry. A mashup between match-3 and Tetris
where you arrange believers in patterns to quench the thirst of your impatient
South-American god. I wrote about the design decisions behind it.
megado, a MegaDrive emulator in C made by merwaaan. It has nice
debugging features, snapshots, and is starting to play quite a few games, though
it’s far from accurate. I’m helping around with infrastructure: making it
build on Linux, continuous integration, sanitizers and the like. I’m also
working on emulating both sound chips.
Bright Plateau, a short puzzle game made in 72 hours for the Ludum Dare 39
jam, in duo with merwaaan. You have to power up houses by placing
generators on the plateau. This time we went 3D with THREE.js, and,
although exhausted, we were quite satisfied with how the game turned out. I
wrote a post-mortem about it.
boyo.js, a GameBoy emulator in JavaScript made by merwaaan. I
implemented the audio emulation, improved the performance so that it would run
decently in Firefox and Chrome, and helped with miscellanea. I love hearing the
intro to Link’s Awakening on it.
gbs, a GameBoy Sound player written in Rust. My first attempt at GameBoy
audio emulation for boyo.js was a mess, and I started from scratch in Rust.
Once I got it working there, I ported it to JS. It’s not an actual player: it
just writes GBS input files to WAV. It doesn’t play all GBS files and the sound
quality could be better, but it’s mine.
chipers, another CHIP-8 emulator written in Rust. I figured Rust would be a
better fit for writing emulators than JavaScript; the FPS counter confirms it.
I added a debugging interface with dear imgui and a fancy CRT shader that’s
actually credible this time (but still slow).
chip8, a CHIP-8 emulator written in JavaScript. I wanted to get a better
grasp of writing an emulator for a complete system. Although the CHIP-8 is not
a real console, getting it working got me hooked on writing emulators. I added
a CRT emulation effect to make it interesting, but it’s not really convincing,
and actually quite slow.
You Are The Münster, another Ludum Dare game, made in duo with merwaaan.
The theme was “You are the monster”, and… well, the pun was too tempting.
It’s a platform game with unlockables (à la Metroid), though we only had the
time to put two areas in the game. The art is much better than my previous solo
attempt (because I made only half of it!), and there’s even a homemade
background music this time. Jumping can be a bit frustrating at times, so we
added checkpoints.
LD48, a game made solo, in parallel to the Ludum Dare 29 week-end, but not
part of the competition. It started as a minimalist action-RPG, but I had too
much fun and added homemade pixel art and sound effects. Now it’s neither
minimalist, nor particularly fun. Still had a good time making it.
webppm, a NetPBM viewer for the web. Drag and drop a PPM file, use the
slider to zoom. Made for my students after I couldn’t find a decent
multi-platform PPM viewer.
s3c, a JavaScript editor with code evaluation built for the students of the
introductory JavaScript courses I taught at Mines Nantes. You can edit and
evaluate the whole buffer for immediate feedback. The point is to save setup
time (you only need a browser) and to focus on JavaScript snippets (not
full-blown apps). Still my go-to solution when I want to test a bit of JS code.
bump, a satirical productivity hack. Click every time you finish a task,
and bask in the glory of your achievements. The original version was made
during my research internship at my University and had a scoreboard with the
names of all the interns. It only works if you believe in it.
Sparkets, a multiplayer space shooter made for HTML5 browsers. Inspired by
the games Spacewar! and Slingshot, it started as a toy to learn HTML5 Canvas
API, node.js and WebSockets. Together with merwaaan, we kept adding
features and playing the hell out of it. Never got to a shippable state, but
it’s still pretty fun.
Laby-o-matic, a maze generator made as an assignment for a graph theory
course. It generates paths that are usually quite long, but with few deep
branches, so they are not hard to solve. Though it can generate different
shapes for the mazes, so at least they are pretty to look at.
Monte-Carlo Connect Four. I read that Monte-Carlo methods were effective
for Go AIs. I wondered how that worked and if that would make a decent
adversary for Connect Four. Although it’s not very strong, it still caught me
off-guard. Plus, the algorithm was rather simple to write.
shinkoban, a Sokoban with sprites blissfully lifted from a famous SNES game.
This was initially a class assignment that I elaborated upon and polished in a
few days before applying for an internship at a local game company. Got the
interview, not the job. Still felt pretty good about this game. The levels
were not mine, and they get pretty hard towards the end!
Lectures notes, taken during my Computer Science degree at the University of
Le Havre, in French. I transcribed most of my math classes in LaTeX (live, save
for diagrams and hairy equations), and put them online for other students and
teachers to use.
See my Github page for source code for all of the above, and other one-shots.