There are a few people who are trying their darndest to build and support libraries for graphics and other game-necessary things. It’s a tall order, since computers and operating systems have become so wildly complex and incompatible. (It’s no wonder people go straight for the browser to do little graphics things now.) Often it means finding a way to robustly interop with C++, graphics cards, etc.
Borodust, Baggers, dto, mfiano, and Shinmera are but a few Internet pseudonyms of people working hard along these lines. Shinmera in particular just released a demo of his team’s game Kandria [1]. It’s a cool and modern game with neat mechanics and effects. It’s powered in part by a ton of open source Common Lisp tools he’s developed.
That being said, it's probably the best second book on CL ever. It showcases a variety of lisp techniques on some very real and fun example projects working itself all the way up to a web base game rendered via SVG which is quite fun.
I'm not familiar with Common Lisp, but in Racket, “GC pauses [...] typically run from 50ms to 100ms” [0]. On a 16ms maximum frame budget, that doesn't really work. Am I missing something?
[0]: https://docs.racket-lang.org/portaudio/index.html#%28part._....
EDIT: I'm aware of GOAL at Naughty Dog — Andy Gavin who wrote it described the GC as being a problem in a HN comment. [1]
I don’t do game development, but in scientific computing, I rely on the GC a lot for workload preparation and other administrivia, then adopt a GC-famished Lisp style for the hardcore numerical computing part.
To be sure though, GC-less Lisp programming takes a great deal of effort and knowledge. It’s not exactly an a la carte option. But the fact it’s possible means latency-sensitive applications are possible. Fortunately, Lisp’s primary benefit isn’t the GC.
I want to say in general e.g. SBCL (a popular common lisp implementation) will perform a lot better than Racket. Racket is a great language but performance is not it's strong suit.
[0]: https://en.m.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp
Otherwise SBCL is a wonderful implementation.
The new incremental mode means the 16ms deadline is within reach. In fact if the screen is not involved, then 1-2ms is reachable.
On macOS a screen-refresh can cause a 16ms pause.
:cl-bodge itself is still an experimental tech that has barely any documentation - I won't recommend using it directly, unless you are happy tinkerer that ain't afraid of guts from hell.
:trivial-gamekit though is a stable framework that have much better documentation and strives to be as simple as possible. Nothing experimental about it. It's dangerous to go alone into jams with CL-based games, take gamekit with you. The fact that it is based on :cl-bodge at the moment is an implementation detail.
:alien-works is an attempt to reuse everything C/C++ gamedev world has and drive it from CL without too much blood bolting from eyes. It's not very experimental - just some conventional stuff piled together, but still is in early stages of development (although it has passed proof-of-concept phase).
We are, as in #lispgames community, indeed very welcome you to join us on irc.libera.chat:6697 in #lispgames channel. Some of us can also be found on Lisp Discord server[0] in #lisp-gamedev channel.
We also have community twitter account[1] which is not super active, but still alive. Just smells funny.
https://borodust.org/projects/trivial-gamekit/
alien-works also looks cool and under active development