Not "game dev, incidentally in Lisp." Every lesson builds a real, playable game, and every game teaches a Lisp idiom and a game-programming concept at the same time. Six phases, from never having written a line of Lisp to shipping a capstone.
Most course material is written for the course. This one is curated from eight sibling repos spanning five Lisp dialects and three runtimes, so the code you read is code that already runs. You build on one primary dialect, JVM Clojure, while every lesson shows you the same idea running in the others.
The spine is raylib, a small C game library, reached through the JVM's Panama FFI. That choice is what lets Phase 3 exist: the same game, ported across three different answers to the question of how a Lisp talks to C.
Nothing to build yet. Watch the same tiny game running in a browser tab and natively, and get your environment working.
Clojure basics (skippable if you know them), the course's own game-loop engine, and your first real programs.
Pong, Breakout, Snake, Space Invaders, Tetris and Flappy Bird. Six games, each with a guided exercise.
Port one of your games across three FFI philosophies and see where each runtime puts the native boundary.
Fixed timestep, ECS, particles and pooling, procedural generation, and simple AI.
Ship a mobile game, ship a web game, or go deep into multiplayer and 3D.
A standing remix playground of nine browser games. Jump in any time after Phase 1.
Phase 3 is the part you won't find elsewhere. The same raylib API, reached three different ways, so you can read one example three times and watch the boundary move.
78 examples over coffi and JDK 22+ Panama. The runtime marshals for you, and arena lifetime is the one thing it won't hide.
75 examples in native Clojure on Chez Scheme. Chez can't pass structs by value, so every struct earns its own strategy.
209 of raylib's 217 official examples, compiled native through C++/LLVM. No FFI at all: the header is just interop.
git clone git@github.com:burinc/b12n-gamedev-course.git
cd b12n-gamedev-course
bb tasks # everything you can run
You'll need JDK 22 or newer (the course uses raylib's real C API over Panama, which older JDKs can't do), the Clojure CLI, and babashka for the course tooling. Phase 0 verifies all three before you write any code.
Complete beginners are covered from lesson 1, and nothing is assumed. If you already know a language, or already know some Lisp, every fundamentals lesson opens with a skip-this-if-you-know-it callout.
All six phases and Track B are written. The three raylib suites the course builds on are public and linked above, and Phases 0 through 3 run on those alone. Five other sibling repos that the later phases read from are still private, and they're being opened up as the course progresses. Until they land, Phase 4's ECS lesson, the three Phase 5 capstones and Track B point at repos you can't clone yet, and each of those pages says so at the top.
The course material is under CC BY-SA 4.0 and the code under EPL-2.0, so teaching from it at a meetup, a classroom or a company onboarding session needs no permission beyond attribution.