Skip to content

Commit

Permalink
Documentaion update
Browse files Browse the repository at this point in the history
  • Loading branch information
borodust committed Jan 8, 2017
1 parent 87b263e commit 6459ea1
Show file tree
Hide file tree
Showing 2 changed files with 136 additions and 35 deletions.
135 changes: 118 additions & 17 deletions README.md
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`.
36 changes: 18 additions & 18 deletions cl-bodge.asd
Original file line number Diff line number Diff line change
Expand Up @@ -52,24 +52,6 @@
(:file "thread-bound-system")))


(defsystem cl-bodge/assets
:description "Bodacious Game Engine assets system"
:version "0.3.0"
:author "Pavel Korolev"
:mailto "dev@borodust.org"
:license "MIT"
:depends-on (cl-bodge/engine cl-bodge/utils log4cl asdf)
:pathname "assets"
:serial t
:components ((:file "packages")
(:file "assets")
(:file "graphics")
(:file "audio")
(:file "registry")
(:file "distribution")
(:file "system")))


(defsystem cl-bodge/events
:description "Bodacious Game Engine event system"
:version "0.3.0"
Expand Down Expand Up @@ -99,6 +81,24 @@
(:file "system")))


(defsystem cl-bodge/assets
:description "Bodacious Game Engine assets system"
:version "0.3.0"
:author "Pavel Korolev"
:mailto "dev@borodust.org"
:license "MIT"
:depends-on (cl-bodge/engine cl-bodge/utils log4cl asdf)
:pathname "assets"
:serial t
:components ((:file "packages")
(:file "assets")
(:file "graphics")
(:file "audio")
(:file "registry")
(:file "distribution")
(:file "system")))


(defsystem cl-bodge/graphics
:description "Bodacious Game Engine graphics system"
:version "0.3.0"
Expand Down

0 comments on commit 6459ea1

Please sign in to comment.