Experimental bodacious game engine written in Common Lisp.
-
Foundations
Basic engine blocks for memory management, concurrency, math and systems. Everything else is built on top. See
cl-bodge/engine
. -
Events
Base for event-driven systems. See
cl-bodge/events
. -
Host
Abstraction layer over host OS-dependent functionality: windows, OS resource management, system and input events, etc. See
cl-bodge/host
. -
Assets
Asset management routines for asynchronous resource loading, preparation, retrieving and releasing. See
cl-bodge/assets
. -
Graphics
OpenGL-driven rendering engine. Provides convenience layer over bare GL functionality: shared shader libraries and programs, extended shader preprocessor, vertex array objects, GPU buffers, framebuffers/renderbuffers, textures, etc. See
cl-bodge/graphics
. -
Canvas
Hardware-accelerated 2d drawing routines. See
cl-bodge/canvas
. -
Animation
Support module for skeletal animation: keyframe sequences, keyframe interpolation, skinning shader. See
cl-bodge/animation
. -
Audio
OpenAL-driven postional 3D audio system: listener, audio sources, audio buffers, streaming, special effects, etc. See
cl-bodge/audio
. -
Physics
ODE-backed rigid body physics engine with collision detection: rigid bodies, joints, geoms, spaces (geom islands), etc. See
cl-bodge/physics
. -
Text
Text rendering system. Signed Distance Field based rendering, fonts handling, glyph aligning, font-related math, etc. See
cl-bodge/text
-
2D GUI
System for creating in-game hardware-accelerated multi-window user interfaces: windows, widgets, layouts, UI events. See
cl-bodge/poiu
(Plain Old Interface for Users). -
Scenegraph
Node-based scene processing. High-level convenience layer on top of low-level systems: scene passes (rendering, simulation, etc); graphics-oriented, physics-oriented, transformation, animation, generic model and other types of nodes. See
cl-bodge/scenegraph
. -
Resources
Engine's universal Bodge Resource File and various external formats parsing and loading: images, audio, fonts, meshes, skeletons, animations, etc. See
cl-bodge/resources
-
Distribution
Utilites for packaging application for shipping across different OSes: lisp image dumping, execution file creation, OS bundles, assets and foreign dependencies packing. See
cl-bodge/distribution
.
;; add cl-bodge distribution into quicklisp
(ql-dist:install-dist "http://bodge.borodust.org/dist/bodge-systems.txt")
;; load precompiled native libraries and the engine
(ql:quickload '(:bodge-blobs :cl-bodge))
Required foreign libraries:
Library | Version | Dependent system |
---|---|---|
libffi |
3.0 | cl-bodge/host |
glfw3 |
3.1 | cl-bodge/host |
OpenAL |
1.1 | cl-bodge/audio |
ODE |
0.14 | cl-bodge/physics |
libsndfile |
1.0 | cl-bodge/resources |
OpenGL |
4.1 | cl-bodge/graphics |
NanoVG |
?.? | bodge-nanovg |
Nuklear |
1.20 | bodge-nuklear |
You need few CL dependencies installed manually:
Finally, you need to clone this repository to your local machine and setup Quicklisp, so it could find engine's source code.
For instructions on how to setup local projects, please, refer to Quicklisp FAQ
After all foreign libraries are installed to respective system default paths, engine and lisp dependencies are made available to Quicklisp you should be able to load engine with
(ql:quickload :cl-bodge)
Examples and demos repository.
-
Chicken mesh loading, rendering and animation: Chicken
-
Ball-Z game written for Autumn 2016 Lisp Game Jam: Ball-Z
-
SDF-based text rendering: Hello text
-
GUI: Multi-window GUI, Text editing
You can receive those in #cl-bodge
or #lispgames
IRC channels at freenode.net
.