Home - Forums - Documentation - Gallery - Bugs

We are very proud to announce the 1.4 release of Crystal Space and CEL. This is the final 1.x version of Crystal Space. The next release will be 2.0 which will remove a lot of deprecated features and no longer be 100% backwards compatible. This version should be mostly compatible with 1.2.

Major Changes

Animesh Terrain2
Animesh Animesh
Animesh is a new mesh object for animated meshes, integrating vertex based animation with skeletal animation. Skeletal animations are blended together using an extensible and flexible blending tree allowing different parts of the skeleton to be influenced by different animation sequences in a controlled manner. Animesh utilizes volume preserving dual quaternion skinning to give high quality meshes when using either CPU or GPU skinning. Building on the work done in the old bruteblock terrain engine "terrain2" improves rendering and handling of large outdoor areas by providing an unified framework for efficient data loading, rendering and collision detection.
Speex Collections
Speex Animesh
The Crystal Space Speex plugin brings support for the playback of Speex compressed audio streams. The FOSS Speex codec is optimised for voice compression and brings disk space and memory savings over other codecs (e.g. ogg vorbis) while maintaining acceptable sound quality. Collections are a reimplementation of the old Regions concept. They provide a simple way to group related game resources and easily handle memory management for the developer.

Crystal Space makes use of reference counting via smart pointers for all game resources. After loading, Textures, Meshes and other objects are referenced in internal engine lists for use by many other engine components. However there is no information about the relationship between these resources, so searching for related items can be slow and knowing when you can safely remove an object from the engine can be difficult.

Collections provide a solution for these problems. When you load a group of related resources (such as a map) you can provide a Collection to keep this grouping information. When you are finished with a map and wish to unload it, you simply destroy the Collection. If a resource in the Collection is used elsewhere then it will be left alone. If it is not used in any other Collection then it will remove itself from any engine lists and be freed from memory. Collections also provide search functionality for improved lookup time vs searching in the engine lists.

| Article | Discussion | View source | History |