Skip to content

About

A free course that teaches Lisp and game programming as one thing — six phases from your first line of Clojure to a shipped game, built on raylib across three Lisps

Topics

Resources

Stars

8 stars

Watchers

0 watching

Forks

Repository files navigation

Lisp Gamedev Course

Learn Lisp and game programming as one thing, not "game dev, incidentally in Lisp." Every lesson builds a real, playable game; every game teaches a Lisp idiom and a game-programming concept at the same time.

📖 Read it at lisp-gamedev.b12n.app — the same lessons as docs/guide/, laid out for reading.

This course is built almost entirely from real, already-shipped game code across eight sibling repos, spanning five Lisp dialects and three runtimes (JVM, native-Chez-Scheme, native-C++/LLVM) plus the browser and mobile. You'll build your own games on one primary dialect (JVM Clojure), while every lesson shows you the same idea already running in the others.

What you build

Phase 2 is the part most people come for. These are recorded from this repo's own exercises/ code, on the course's own vendored raylib engine — not from the sibling suites:

Pong
Lesson 1 — Pong
Breakout
Lesson 2 — Breakout
Snake
Lesson 3 — Snake
Space Invaders
Lesson 4 — Space Invaders
Tetris
Lesson 5 — Tetris
Flappy Bird
Lesson 6 — Flappy Bird

Before any of those, Phase 1 has you build the loop itself — a ball that bounces, and eyes that follow the mouse:

Bouncing ball
Bouncing ball
Following eyes
Following eyes

Full gallery, with what each one teaches: docs/demos/README.md. Maintainers regenerate them with bb record.

Who this is for

Complete beginners are covered from lesson 1, nothing is assumed. Already know a language, or already know some Lisp? Every "fundamentals" lesson has a skip-this-if-you-already-know-it callout at the top, so you can move at your own pace.

Quick start

Prerequisites (verified in docs/guide/phase-0-first-contact/index.md):

  • JDK 22+ (this course uses raylib's real C API over JDK's Panama FFI - older JDKs can't do this)
  • Clojure CLI
  • Babashka (bb) for all course tooling
git clone git@github.com:burinc/b12n-gamedev-course.git
cd b12n-gamedev-course
bb tasks          # see everything you can run

Course map

Phase What you build Status
0: First Contact Nothing yet, just watch the same tiny game already running, in a browser tab and natively ✅ done
1: Foundations Clojure basics (skippable), the course's own game-loop engine, your first real programs ✅ done
2: Arcade Classics Pong → Breakout → Snake → Space Invaders → Tetris → Flappy Bird ✅ done
3: Same Game, Three Lisps Port one of your games across three FFI philosophies ✅ done
4: Systems & Architecture Fixed timestep, ECS, particles, procedural generation, simple AI ✅ done
5: Realistic Capstones Ship a mobile game, a web game, or go deep into multiplayer/3D ✅ done
Track B: Web Games A standing remix playground of nine browser games, jump in anytime ✅ done

Full course entry point: docs/guide/index.md.

Where this material comes from

Every lesson past Phase 2 curates real code from these repos rather than re-inventing it:

Note on the sibling repos. The three raylib suites above are public today. The five below them (b12n-cljsapp, b12n-herfi, b12n-ohuntley, b12n-rogue-shooter, b12n-crystal-ball) are still private, along with the b12n-wikis pages some lessons link to, so those links will 404 for now. They're being opened up as the course progresses, and the lessons that depend on them carry a note at the top saying so. Phases 0 to 3 are complete and fully runnable on the public raylib suites alone.

License

This repository is dual licensed, because it's part course and part codebase.

  • Course material in docs/, all the lesson pages and guides, is under CC BY-SA 4.0. Share it, adapt it, teach from it. Just credit it and keep derivatives under the same license. See LICENSE-docs.md.
  • Code in src/, exercises/ and test/ is under the Eclipse Public License 2.0, the same license Clojure itself uses. See LICENSE.
  • The raylib binaries in libs/ are third party, from raysan5/raylib, redistributed under the zlib license. See libs/LICENSE-raylib.txt.

Teaching from this course at a meetup, a classroom or a company onboarding session needs no permission beyond attribution.

About

A free course that teaches Lisp and game programming as one thing — six phases from your first line of Clojure to a shipped game, built on raylib across three Lisps

Topics

Resources

Stars

8 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages