-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
136 additions
and
35 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,35 +1,136 @@ | ||
# cl-bodge | ||
Bodacious 3D game engine that is no good. Yet. | ||
Experimental **bod**acious **g**ame **e**ngine written in **C**ommon **L**isp. | ||
|
||
Use [anything else](https://github.com/lispgames/lispgames.github.io/wiki/CommonLisp) instead. | ||
1. [Engine modules](#engine-modules) | ||
1. [Installation](#installation) | ||
1. [Demonstrations](#demonstrations) | ||
1. [Help and Support](#help-and-support) | ||
|
||
## Installation | ||
|
||
### Quicklisp | ||
No official quicklisp release is planned due to the nature of the engine being overloaded with bunch of foreign libraries, albeit possibility of dedicated quicklisp repository with necessary dependencies in it is still kept in view. | ||
## Engine modules | ||
|
||
* ***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 resources | ||
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*** | ||
|
||
### From sources | ||
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` (**P**lain **O**ld **I**nterface for | ||
**U**sers). | ||
|
||
* ***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`. | ||
|
||
|
||
## Installation | ||
|
||
Required foreign libraries: | ||
* `libffi` >= 3.0 | ||
* `glfw3` >= 3.1 | ||
* `OpenAL` >= 1.1 | ||
* `ODE` >= 0.14 | ||
* `libsndfile` >= 1.0 | ||
* `OpenGL` >= 4.1 | ||
|
||
You need few dependencies manually installed (no quicklisp packages either): | ||
|
||
| Library | Version | Dependent system | ||
|---------|:-------:|------------------------- | ||
| `libffi` | 3.0 | `cl-bodge/engine` | ||
| `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 manually installed (no quicklisp packages available): | ||
* [`cl-muth`](https://github.com/borodust/cl-muth) | ||
* [`cl-flow`](https://github.com/borodust/cl-flow) | ||
* [`bodge-ode`](https://github.com/borodust/bodge-ode) | ||
* [`bodge-sndfile`](https://github.com/borodust/bodge-sndfile) | ||
* [`bodge-nuklear`](https://github.com/borodust/bodge-nuklear) | ||
* [`bodge-nanovg`](https://github.com/borodust/bodge-nanovg) | ||
|
||
Finally, you need to clone this repository to your local machine and setup | ||
[Quicklisp](https://www.quicklisp.org/), so it could find engine's source code. | ||
|
||
For instruction on how to setup local projects, please, refer to [Quicklisp | ||
FAQ](https://www.quicklisp.org/beta/faq.html#local-project) | ||
|
||
Finally, you need to clone this repository to your local machine and setup quicklisp, so it could find engine's source code. | ||
|
||
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 | ||
|
||
After all foreign libraries are installed to respective system default paths, engine and its lisp dependencies are made available to quicklisp you should be able to load it with | ||
```lisp | ||
(ql:quickload :cl-bodge) | ||
``` | ||
|
||
## Demonstrations | ||
|
||
* Chicken mesh loading, rendering and animation: | ||
[Chicken](https://www.youtube.com/watch?v=ypZP4SNQOv8) | ||
|
||
* Ball-Z game written for | ||
[Autumn 2016 Lisp Game Jam](https://itch.io/jam/autumn-2016-lisp-game-jam/rate/99353): | ||
[Ball-Z](https://www.youtube.com/watch?v=noVtO2H9hSY) | ||
|
||
* SDF-based text rendering: [Hello text](https://www.youtube.com/watch?v=8q_ssF4eEQQ) | ||
* GUI: [Multi-window GUI](https://www.youtube.com/watch?v=eLFMUCvjEXg), | ||
[Text editing](https://www.youtube.com/watch?v=T5nCKKGj1J0) | ||
|
||
## Help and Support | ||
You can receive those in `#cl-bodge` IRC channel at `freenode.net`. | ||
You can receive those in `#cl-bodge` or `#lispgames` IRC channels at `freenode.net`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters