Skip to content
Andrew Kravchuk edited this page Aug 2, 2024 · 26 revisions

Common Lisp (also known as CL) has a sizable community and great library support for things like SDL, OpenGL, TrueType fonts, asset handling, etc, so it makes a good option for Lisp game development. Some resources for learning can be found on Learning Common Lisp page.

Being a standardized language, it has several implementations. Popular choices for open source CL implementation are SBCL and Clozure Common Lisp, but there are many more implementations with their own perks and quirks.

Table of Contents

Window management and Input Handling

  • CLX provides an implementation of the X Window System protocol to Lisp graphics library[ies] and applications.
  • cl-glfw is an open source, multi-platform library for opening a window, creating an OpenGL context and managing input. [DEPRECATED]
  • cl-glfw3 provides bindings for the GLFW 3.x library for Common Lisp.
  • cl-sdl2 is a Common Lisp wrapper for the SDL 2.0 C Library.
  • glop provides simple OpenGL window and context manipulation code as well as system input handling.
  • Lispbuilder-SDL provides a set of bindings and Lispy abstractions for graphics, sound, input and other features. Uses SDL1 which is deprecated. See cl-sdl2 for an alternative. [Stable] [STALLED]
  • sdl2kit is a utility kit for cl-sdl2 that provides something similar to GLUT, however, it's also geared at being useful for "real" applications or games.
  • Qtools Qtools provides an accessible and lispy interface to the Qt 4 GUI toolkit.
  • cl-liballegro provides Common Lisp bindings for the Allegro5 game programming library.

Graphics

APIs

  • cl-opengl If you're writing games in Common Lisp, you are almost certainly going to be using OpenGL. This wrapper enables Common Lisp to access almost every feature of OpenGL.
  • glkit is a utility kit for functionality related to OpenGL.
  • LDX is an attempt to bring DirectX into Common Lisp. [STALLED]
  • PAL (Pixel Art Library) is a portable Common Lisp graphics and sound library for 2D games. [UNMAINTAINED]

Rendering Engines

  • CEPL is a lispy and REPL-friendly Common Lisp library for working with OpenGL.
  • CLinch is a shader-based graphics engine using cl-opengl. It has strong vector graphics support. It also has tutorials. [ABANDONED]
  • cl-horde3d is a wrapper around the open source graphics engne Horde3d. [STALLED]
  • okra is a wrapper around the open source graphics engine OGRE. [STALLED]

2D Graphics

  • cl-cairo2 is a graphics library that provides Common Lisp bindings for the Cairo API. [ABANDONED]
  • Sketch is a Common Lisp environment for the creation of electronic art, visual design, game prototyping, game making, computer graphics, exploration of human-computer interaction and more.

Assets Handling

Image processing

  • cl-devil provides bindings to the DevIL image loading and manipulation library. [ABANDONED]
  • cl-sdl2-image is a (currently) brief but usable wrapper for SDL2_image.
  • cl-soil is a work-in-progress wrapper around the SOIL library.
  • imago is an image manipulation library for Common Lisp. [STALLED]
  • opticl is designed to be a high-performance but relatively lightweight library for representing, processing, loading, and saving 2-dimensional pixel-based images.
  • pngload is a PNG (Portable Network Graphics) image format decoder. It was designed for performance and usage with OpenGL.

Audio

  • cl-openal provides CL bindings for OpenAL API. [ABANDONED]
  • cl-sdl2-mixer is a brief but usuable wrapper for SDL2_Mixer. [STALLED]
  • harmony is a simple-to-use but extensible sound system.

Physics

Math

  • 3d-vectors This is a library for vector math in 3D space.
  • 3d-matrices This is a library implementing common matrix operations, mainly intended as the counterpiece to 3d-vectors and thus being aimed at operations in 3D space.
  • gamebox-math is a high performance math library useful for making games.
  • mathkit is a purely math-related utility kit, providing functions which can be useful for games, 3D, and GL in general.
  • rtg-math provides a selection of the math routines most commonly needed for making realtime graphics in lisp.
  • sb-cga is a highly optimized (incl. SSE) computer graphics algebra library for Common Lisp.

Game Engines

  • cl-bodge is a 3D-oriented game engine with support for window management, 3D/2D rendering, physics, 3D audio, text rendering, GUI, assets management and many more features under unified interface.
  • CL-TCOD library provides an interface (wrapper) between Common Lisp and the Doryen Library (libtcod).
  • First Light A modern game engine in the early stages of development.
  • The goal of glaw is to provide a collection of basic functionalities to help developing games.
  • Sketch is a Common Lisp environment for the creation of electronic art, visual design, game prototyping, game making, computer graphics, exploration of human-computer interaction and more. It is inspired by Processing Language and shares some of the API.
  • Trial An in-development game engine with a strong focus on modularity and extensibility.
  • trivial-gamekit is an easy-to-use framework for making simple 2D games.
  • Xelf is a simple 2D game engine written in Common Lisp.
  • Raylib is a simple and easy-to-use library to enjoy videogames programming with Common Lisp bindings
  * [claw-raylib](https://github.com/bohonghuang/claw-raylib) are bindings used in the [EON](https://github.com/bohonghuang/eon) game engine. Example game: [nano-towers](https://bohonghuang.itch.io/nano-towers) from the Lisp Game Jam 2024.

Utilities

  • cl-astar is a heavily optimized yet flexible A* pathfinding algorithm implementation.
  • cl-fast-ecs is a library providing an implementation of the Entity-Component-System pattern, primarily focused on speed and interactive development.
  • cl-fond This is a bindings library to libfond, a simple OpenGL text rendering engine.
  • cl-gamepad This is a small wrapper library around libstem_gamepad, providing independent gamepad input support.
  • cl-monitors This is a small wrapper library around libmonitors, providing independent monitor resolution detection and change support.
  • gamebox-dgen is an experimental map generation library. The goal is to be able to procedurally generate a map for use in a rogue-like, or other games.
  • gamebox-ecs is an implementation of the Entity-Component System (ECS) pattern, popular with game development.
  • gamebox-frame-manager is a manager for frames within a game loop.
  • gamebox-sprite-packer is a spritesheet packer for games.
  • sdf - SDF glyph atlas generator.
  • shadow is a lightweight system to help with defining and managing OpenGL shader programs.
Clone this wiki locally