1.4 Feature List
The first feature to mention is that Crystal Space is an open source project.
It falls under the GNU copyleft license (LGPL). See section 1.12 GNU Library General Public License.
Crystal Space is divided into several libraries. The items in the feature
list are sorted by the library they belong to. Note that this is not a
description of how these libraries work together. Some libraries are not
even mentioned here.
Currently Crystal Space has the following features:
- System Driver
- A system library that will perform system-dependent operations for your
program. This way your program is easily portable to any supported system.
It includes a good plug-in system that offers you an interface to
dynamically loaded drivers (`.so' or `.dll'), like the 3D rasterizer.
NOTE: This library as such will not be available in the 1.0 release, OS-specific
functions will remain in this library however. The most important classes will
be moving into the Tool and Utility libraries.
- Geometry Library
- A 3D math library, including 2D and 3D vectors, matrices and polygons.
This library can be used without the rest of Crystal Space.
- 2D Canvas / 3D Renderer
- These libraries allow you to draw directly on the screen, and to use
hardware accelerated 3D drawing. They are independent from the engine and
perform only basic operations. You can actually use them if you want to
write your own engine. The libraries include:
-
Direct3D for Windows (32 bit) port.
-
OpenGL support for GNU/Linux, BeOS, MacOS/9, OS/2, and Windows (32 bit).
-
Drawing arbitrary sloped convex polygons.
-
Perspective correct texture mapping. You can chose between accuracy
and speed (by selecting the interpolation step).
-
Support for 8-bit (palette), 15/16-bit and 32-bit truecolor displays
(no support for 24-bit yet).
-
Mipmapping to minimize memory strain on the texture cache and to have
nicer textures in the distance.
-
The width and height of textures must be a power of two but the
texture need not be a square.
-
Procedural textures. Currently the included procedural textures are plasma,
sky, water, and fire. You can also define your own procedural textures.
-
It is possible to map the texture on a polygon in various ways such as via
rotation, scaling, mirroring, etc.
-
Transparent and semi-transparent textures allowing for see-through
water surfaces and windows.
-
Colored volumetric fog.
-
Halos around lights.
- 3D Engine
- The engine features the following:
-
True six-degrees-of-freedom (6DOF).
-
Integrated landscape engine.
-
Moving objects and scripts controlling the movement.
-
Static colored lighting with real shadows. Lighting and shadows are
precomputed before the world is displayed. Radiosity is also supported.
-
Pseudo-dynamic colored lights which cannot move but have very accurate
shadows and can change intensity/color randomly.
-
Dynamic colored lighting with support for shadows (detail objects are
ignored for shadows currently).
-
Support for frame and skeletal based 3D triangle mesh sprites with
level-of-detail (LOD) reduction via progressive meshes.
-
Support for 2D sprites and particle systems.
-
Mesh object plugin system that is used for 3D sprites, 2D sprites and
particle systems. The game developer can also write his own mesh objects
and plug them into the engine transparently.
-
Portals are used for efficient and easy visibility sorting. In
addition you can optionally enable an OCTREE and/or BSP for some
sectors to allow for even more powerful world definitions.
-
Additional C-buffer (coverage buffer) which can be enabled for even
better visibility culling.
-
Using portals you can also create transparent and semi-transparent
mirrors.
-
Alpha transparency in combination with mirrors allows simulation of
shining walls.
-
You can also include gouraud shaded triangles in the world.
-
Dynamic gouraud shaded sky spheres. Also support for skybox.
-
Curved bezier surfaces with dynamic tessellation depending on viewer
distance.
-
Support for multiple cameras and the ability to make 1st person or
3rd person cameras.
-
ZIP archive format to pack the map file, the textures and all other
needed data files for one level inside one file. Crystal Space also
uses the same ZIP file to automatically add lightmap data. This
greatly speeds up the start-up of Crystal Space.
-
Powerful text-based map file format allows you to easily redefine the world.
-
Libraries of commonly used objects and textures are supported.
- Utility Library
- Much of the utility functionality in this library can be used independently
of Crystal Space. This library includes the following functionality:
-
Reading configuration (INI) files for program options.
-
Reading and writing ZIP files as data files.
-
Simple parser that you can use if INI files are not enough. It is used
by the engine to read map files.
-
Defining an interface for shared libraries (`.so' or .DLL). This is
used by the plug-in system.
-
Dynamically-sized arrays (
csVector
).
- VFS
- Virtual file system. See section 7.2 Virtual File System (VFS).
- Tool Library
- Much of the utility functionality in this library can be used independently
of Crystal Space. This library includes the following functionality:
-
Contains several functions that can help setup an application.
The most important class in this library is csInitializer which will create
everything needed to get a CS application operational.
-
Support for models, procedural textures, and sprites.
-
Support for collision detection.
- Sound Driver / Sound Renderer
- General sound system. Currently drivers exist for GNU/Linux, MacOS/9, and
Windows.
- Network Driver
- General networking support. Currently supports socket-based networking via
TCP/IP.
- Scripting
- Crystal Space supports scripting through the PYTHON plugin. This way
a game using Crystal Space can call PYTHON methods and PYTHON
scripts can call Crystal Space methods.
This document was generated
using texi2html