Skip to content

borodust/cl-bodge

Repository files navigation

cl-bodge

Experimental bodacious game engine written in Common Lisp.

  1. Engine modules
  2. Installation
  3. Demonstrations
  4. Help and Support

Engine modules

  • Foundations

    Basic engine blocks for memory management, concurrency, math, events and systems. Everything else is built on top. See cl-bodge/engine.

  • Host

    Abstraction layer over host OS-dependent functionality: windows, OS resource management, system and input events, etc. See cl-bodge/host.

  • Resources

    Asset management routines for asynchronous resource loading, preparation, retrieving and releasing. See cl-bodge/resources.

  • 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.

  • Assets

    Engine's universal Bodge Resource File and various external formats parsing and loading: images, audio, fonts, meshes, skeletons, animations, etc. See cl-bodge/assets

  • 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.

Installation

;; add cl-bodge distribution into quicklisp
(ql-dist:install-dist "http://bodge.borodust.org/dist/org.borodust.bodge.txt")

;; load precompiled native libraries and the engine
(ql:quickload '(:bodge-blobs :cl-bodge))

Manually

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)

Demonstrations

Examples and demos repository.

Help and Support

You can receive those in #cl-bodge or #lispgames IRC channels at freenode.net.