Colony provides a system and workflow that helps describe the elements needed to write 2D or 3D games. It was designed with several domain specific languages that make it easier to describe, manipulate, and use assets commonly found in game making. Such assets include (but are not limited to) textures, materials, shader programs, and scene trees of actors that are available for instantiation. Colony Engine also knows how to accept input from keyboards and most joysticks and gamepads.
The component system is a hybrid model between an ECS and an object model. The components are defined similar to CLOS defclass, and regular generic methods can be used with them. Components are added to Actors which represent game concepts like players, scenery, effects, etc. We define a component protocol invoked by Colony Engine to move your components to the next state and render them each frame.
This package holds an enhanced implementation of hooks (extension points). It works similarly to Emacs hooks with crucial improvements:
If the compiler allows it (such as SBCL), type-checking is performed at compile-time and at run-time when adding handlers to a hook.
On failure, multiple restarts are offered, such as disabling the offending handler or simply continuing to the next function.
The hook handler execution order and combination can be customized.
Anonymous functions (lambdas) can be added to hooks as handler objects. When inspecting hooks, readable names are thus exposed instead of lambda blackboxes. Handlers are compared through their names (through the mandatory name slot). A hook can not contain multiple handlers with the same name.
A special provision is taken for “setters”, handlers that are meant to set a given place to a given values. Such handler objects can be compared and identified uniquely.
Common lisp wrapper around the SOIL library.
This package provides a client for SMTP.
Skitter is a repl friendly event system for games.
Datafly is a lightweight database library for Common Lisp.
This package provides a Common Lisp test runner system SIMPLET.
Clavier is a general purpose validation library for Common Lisp.
cl-pass
is a password hashing and verification library.
This is a Gettext-style internationalisation framework for Common Lisp.
This library features a rectangle packer for sprite and texture atlases.
cl-incless
implements print-object methods for many standard classes.
This an implementation of CDR 2: generic hash tables for Common Lisp
This package provides a Common Lisp parser for glTF file format.
This package provides a general-purpose connection pooling library for Common Lisp.
XSubseq provides functions to be able to handle "subseq"s more effieiently.
ptester
is a portable testing framework based on Franz's tester module.
MT19937 is a portable Mersenne Twister pseudo-random number generator for Common Lisp.
This package provides a JSON-RPC 2.0 server/client for Common Lisp.
This is a library for representing and mapping colours between their various spaces.
qbase64
provides a fast and flexible base64 encoder and decoder for Common Lisp.
This library provides Glib, GIO and Gobject bindings for Common Lisp via Gobject Introspection.