Crystal Space 1.0 RC1 review

by on

Crystal Space is a free and portable 3D Game Development Kit written in C++

License: LGPL (GNU Lesser General Public License)
File size: 38542K
Developer: Jorrit Tyberghein
0 stars award from

Crystal Space is a free and portable 3D Game Development Kit written in C++. It supports: true six degrees of freedom, colored lighting, lightmapped and stencil based lighting, shader support (CG, vertex programs, fragment programs, ...), mipmapping, portals, mirrors, alpha transparency, reflective surfaces, 3D sprites (frame based or with skeletal animation using cal3d animation library), procedural textures, particle systems, halos, volumetric fog, scripting (using Python, Perl, Java, or potentially other languages), 16-bit and 32-bit display support, OpenGL, and software renderer, font support (also with freetype), hierarchical transformations, physics plugin based on ODE, ... See the extensive list of features for more details.

Crystal Space currently runs on GNU/Linux, general Unix, Windows, Windows NT, and MacOS/X. It can optionally use OpenGL (on all platforms), SDL (all SDL platforms), X11 (Unix or GNU/Linux) and SVGALIB (GNU/Linux). It can also optionally use assembler routines using NASM and MMX.

Crystal Space is a large open source project. There are about 700 people subscribed to the Crystal Space mailing list.

The second important feature of Crystal Space is that it is written to run under a wide variety of hardware and software platforms. As of this writing Crystal Space has been known to run on the following systems. Note that if a system is listed here it does not necessarily mean that it is 100% supported:

Windows (Windows 9x/NT/ME/2000/XP)
Unix (Linux, FreeBSD, etc.)

Here are some key features of "Crystal Space":
Geometric utility library with handy classes such as 2D and 3D vectors, matrices, transforms, quaternions, kdtree, axis aligned and oriented bounding box routines, rectangle subdivision, etc. See section 6.3 Geometry Library (csGeom).
General utility library with stuff like templated arrays, smart pointer, hashmap, object registry, plugin manager, radix sort, bit array, optimized allocators, strings, etc. See section 6.1 Utility Library (csUtil).
Higher level tool library containing things like some example procedural textures (plasma, fire, and water), full screen effects, collider support, texture generation tools, etc.
Graphics library with simple utilities to do mipmapping, color quantization, calculation of color gradients, simple bumpmapping, etc.
2D and 3D polygons
Shared Class Facility SCF. See section 6.2 Shared Class Facility (SCF). See section 5.1 Developing a Crystal Space Application.
Smart Pointers. See section 5.8.1 Correctly Using Smart Pointers.
Flexible plug-in system. See section 6.2 Shared Class Facility (SCF). See section 5.8.20 Create Your Own Plugin.
Virtual file system and transparent support for ZIP files. See section 7.2 Virtual File System (VFS).
Configuration files. See section 3.2 Configuration File.
Command-line parsing. See section 5.1 Developing a Crystal Space Application.
Event system.
Full screen effects (fading, whiteout, etc).
Procedural textures. See section 7.3.1 Procedural Texture System. See section 7.5.6 Texture Mapping.
Level of Detail. See section 7.5.11 Level of Detail.
Animated 3D models (3D sprites). See section 7.9 Animation.
2D animations.
Quake MD3 and MDL to Crystal Space convertor. See section 5.6 md32spr Tutorial.
The `sprcal3d' plugin is able to load Cal3D models. See section 7.7.6 SpriteCal3D Mesh Object.
Crystal Space native windowing system(s). See section 7.11 Alternate Windowing System (AWS). See section 6.4 Crystal Space Windowing System (CSWS).
2D canvases (OpenGL, DirectDraw, X11, CoreGraphics, Cocoa, null, memory)
3D renderers (OpenGL, software, null). See section 7.3 Graphics Drivers.
Playing AVI streams (DivX 4, OpenDivX) on a texture.
Various image loaders (BMP, GIF, JPG, PNG, SGI, TGA, WAL).
Portals and sectors. See section 7.5.2 Portal Engine.
Lighting: static, pseudo-dynamic, dynamic, halos, shadows, stencil shadows. See section 7.5.3 Lighting. See section 5.8.9 Pseudo-dynamic Lights.
Bezier curves.
Visibility culling based on kd-tree with coverage buffers (Dynavis). See section 7.5.7 Visibility Culling In Detail.
Multiple cameras. See section 5.8.7 Camera Movement.
Textures, materials, and shaders. See section 7.5.6 Texture Mapping.
Sound drivers (CoreAudio, OSS, and WaveOut). See section 7.4 Sound Drivers.
Sound renderers (software, DirectSound 3D, EAX, aRts). See section 7.4 Sound Drivers.
Sound loaders (WAV, AU, IFF, AIFF, MOD, MP3, OGG). See section 7.4 Sound Drivers.
Thing and other mesh objects. See section 7.7 Mesh Object Plug-In System. See section 7.7.19 Thing Mesh Object, See section 5.8.5 Creating a Thing Mesh. See section 7.7.7 Genmesh Mesh Object. See section 5.8.6 Creating a Genmesh Mesh.
2D and 3D sprites. See section 7.7.5 Sprite3D Mesh Object. See section 7.7.4 Sprite2D Mesh Object.
Terrain engines with support for texture splatting (dynamically merging multiple textures on a terrain and LOD). See section 7.7.18 Terrain Mesh Object.
Particle systems (fire, explosions, rain, snow, spirals, fountain). See section 7.7.10 Particle Systems in General.
Haze mesh (a bit like volumetric light). See section 7.7.17 Haze Mesh Object.
Pull-down console that you can integrate in your own games. See section 3.4.5 Console Configuration.
Collision detection (using RAPID or OPCODE). See section 5.8.2 Doing Collision Detection.
Powerful sequence manager to control movement, animation and other features in a world. See section 7.5.12 Sequence Manager.
Bitmapped and vector fonts (FreeFont). See section 5.8.22 Using a Custom Font.
Map file loader and converters. See section 7.6.1 Format of Map File (XML), See section 5.4 Simple Tutorial 3: Map Loading. See section 7.6.2 Old Format of Map File.
Scripting bindings (Python, Perl, Java). See section 7.8 Scripting Languages.
Skeletal animation. See section 7.7.6 SpriteCal3D Mesh Object.
Object movement. See section 5.8.4 Mesh Movement.
Movie Recording plugin. See section 5.8.23 Recording Movies.
Debugging system

What's New in This Release:
Bugfix in ODE which crashed if there was no collision polygon mesh on the object.
Fix in 3D sound.
Bugfix in LoadMountsFromFile().
Memory corruption fixed in xmlshader.
Mouse cursor change for win32.
Shader variables will now correctly find textures based on region settings.
Terrain collision bug fixed (CD didn't work for terrain that was moved away from 0,0,0).
Terrain levels using alpha maps (like terraina) didn't work anymore.
ICE Look and feel for CEGUI 0.5 fixed.
Texture compression and AFP are now disabled for Intel DRI driver since this caused problems.
RECT textures are disabled for nVidia cards since they also caused problems.
Destroying CS environment on linux could cause the environment to become corrupted.
Collision detection improvements (impossible to get stuck and impossible to go through walls).
Castle level license from by-nc to by-nc-sa.

Crystal Space 1.0 RC1 keywords