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.
This package provides a client for SMTP.
Datafly is a lightweight database library for Common Lisp.
Common lisp wrapper around the SOIL library.
This package provides a Common Lisp test runner system SIMPLET.
Clavier is a general purpose validation library for Common Lisp.
Skitter is a repl friendly event system for games.
This library features a rectangle packer for sprite and texture atlases.
This is a Gettext-style internationalisation framework for Common Lisp.
cl-incless implements print-object methods for many standard classes.
cl-pass is a password hashing and verification library.
This package provides a general-purpose connection pooling library for Common Lisp.
This package provides a Common Lisp parser for glTF file format.
XSubseq provides functions to be able to handle "subseq"s more effieiently.
This an implementation of CDR 2: generic hash tables for Common Lisp
ptester is a portable testing framework based on Franz's tester module.
This is a library for representing and mapping colours between their various spaces.
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.
qbase64 provides a fast and flexible base64 encoder and decoder for Common Lisp.
Dissect is a small Common Lisp library for introspecting the call stack and active restarts.