Home - Forums - Documentation - Gallery - Bugs
(broke the layout on purpose)
Current revision (14:45, 29 March 2011) (edit) (undo)
 
(47 intermediate revisions not shown.)
Line 1: Line 1:
-
== Feature Spotlight ==
+
== The Crystal Space SDK ==
-
=== Version 1.0 ===
+
* Portability
 +
** Highly platform independent with good platform abstraction. Supports GNU/Linux, OSX and Windows operating systems, and x86, PowerPC, ARM and SPARC processor architectures.
 +
** Support of a wide range of compilers and IDE, including Visual C++ 8, 9 & 10, gcc, MinGW/MSYS, Code::Blocks.
 +
** Written in standard C++ using very few non-standard extensions.
 +
** Self contained so that many modules requires no or few external dependencies.
 +
** Virtual File System handling both physical files on disk and files within ZIP files.
 +
** Abstracted configuration layer with support for settings in configuration file, system dependent storage such as the registry and command line.
 +
** Platform specific optimizations (MMX/SSE/Altivec).
-
==== Terrain with Foliage ====
+
* Modularity
 +
** Modularized using a lightweight component framework, SCF, based upon the COM model. Components can be easily loaded or switched dynamically.
 +
** Bindings for other programming languages through SWIG: Java, Python, Perl, dedicated bindings for Python.
 +
** All subsystems easily extendable for new file formats.
-
[[Image:Showcase_1_0_Foliage.jpg|thumb|left|Trees on a hill]]Our outside terrain now feature beautiful, randomly placed foliage that will make your worlds feel less empty. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus quam nisl, vulputate nec, ultrices sit amet, porta et, sapien. Mauris nibh eros, laoreet sed, rhoncus eu, placerat et, tellus. Integer purus leo, laoreet eu, mollis id, cursus eget, metus. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin ultrices eros eu ipsum.
+
* Rendering & Lighting
 +
** OpenGL-based engine, supports hardware accelerated rendering on all supported platforms and cards from all well known vendors.
 +
** Rendering loops for custom rendering of objects.
 +
** Unshadowed, parallel-split shadow maps, and deferred lighting render managers.
 +
** Static lighter with radiosity and caustic.
 +
** Lightmap and per-vertex lighting.
 +
** Rendering to textures.
-
==== Funny Shaders ====
+
* Shaders
 +
** Can be written in Cg and ARB. Shader description and mappings are defined in a XML compliant language.
 +
** Support for multiple passes, vertex and fragment programs. Light selection and multiple lights in one pass possible.
 +
** Shader weaver for combination of shaders and post-processing effects.
 +
** HDR rendering, tone mapping and eye adaptation.
 +
** Fallback system of shader techniques for hardware compatibility.
 +
** Library of available shaders and post-processing effects: diffuse, specular, bump map, glow, parallax, fur, bloom, blur, water, glass, and many others.
 +
** Automatic environment mapping.
-
<span>Our support for shaders will give you great possiblities of enhancing your art with the nicest, up-to-date effects. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus quam nisl, vulputate nec, ultrices sit amet, porta et, sapien. Mauris nibh eros, laoreet sed, rhoncus eu, placerat et, tellus. Integer purus leo, laoreet eu, mollis id, cursus eget, metus. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin ultrices eros eu ipsum.[[Image:Showcase_1_0_Shader.jpg|thumb|left|Wolf with fur shader]]
+
* Scene & Level Of Detail Management
 +
** Scene node system for easy composition of objects
 +
** Decomposition of a world in sectors with portals connecting them. Portals can be used for effects such as LOD management, streamed loading, mirrors or space warping.
 +
** Three different cullers: hardware occlusion culling (Occluvis), frustum culling (Frustvis), and dPVS (Dynavis).
 +
** General system for static LOD on all types of meshes, progressive LODS.
 +
** Impostors for replacement of far meshes with a 2D object.
 +
** Threaded loader for streamed loading of levels and objects.
 +
** Instanciation of meshes and objects.
 +
* Meshes
 +
** Many different type of meshes: general triangle mesh with multi-materials, cal3d meshes, sprite 2D, sprite 3D, ocean,...
 +
** Terrain mesh with paging, multi-splatting, deformations and automatic loading and unloading of terrain cells.
 +
** Mesh generator to dress up a scene with objects such as flora and rocks,...
 +
** Decals to be added on top of other meshes, even animated.
 +
** Configurable and extensible particle system mesh with billboards, emitters, physical effectors,...
 +
** Halos and lens flares.
 +
** Automatic triangulation of shapes.
-
==== Skeletal Animation and Dynamic Shadows ====
+
* Animation
 +
** Specialized and powerful mesh for advanced skeletal animation with animation blending trees, volume preserving dual quaternion skinning, morphing, and sockets.
 +
** Many types of animation nodes can be combined to generate dynamically complex animations: multi-blending, Finite State Machine, random, priority, LookAt, Inverse Kinematics (Quaternion-CCD and physically-based), speed (time warping), debug.
 +
** Ragdoll animation and animation of hairs & equipment.
 +
** Transparent import of BVH motion capture data, with real-time retargeting to a different (but similar) skeleton.
 +
** Motion capture viewer with integrated Point Light Display system.
 +
** Generic animation system for management of sequences of time events.
 +
** Coherent noise generation through the [http://libnoise.sourceforge.net/ libnoise] library.
-
{|
+
* Audio
-
|-
+
** 2D and 3D sounds with OpenAL.
-
| [[Image:Showcase_1_0_Demo.jpg|thumb|left|Evil character]]
+
** Audio codecs: speex, ogg, wav (8- and 16-bit PCM).
-
| <span>Skeletal animation and dynamic shadows let you characters look lifely and ever more dangerous. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus quam nisl, vulputate nec, ultrices sit amet, porta et, sapien. Mauris nibh eros, laoreet sed, rhoncus eu, placerat et, tellus. Integer purus leo, laoreet eu, mollis id, cursus eget, metus. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin ultrices eros eu ipsum.</span>
+
** Provides both one-time playing of effects and streaming playing in the background for music.
-
|}
+
-
=== upcoming Version 1.2 ===
+
* Physics & Collisions
 +
** Physics of rigid bodies and joints, made through a wrapper for two physics libraries: Bullet and ODE.
 +
** Support of kinematic bodies for interaction between classical animation and the physical simulation.
 +
** Transparent integration with the terrain system.
 +
** Soft bodies to simulate ropes, clothes and other volumetric deformable objects. General meshes can be animated automatically through them.
 +
** Debug plugin to visualize the physical simulation.
 +
** Simplified collision detection when you don't need the full dynamics simulation.
-
==== Terrain with Foliage ====
+
* Data Representation
 +
** XML language for the description of each object and plugin of the whole CS. XML files can be set binary for faster loading.
 +
** Procedural, dynamic and animated textures.
 +
** Support for many image formats: png, jpg, dds, bmp, gif, tga, mng, jng, (binary) alpha, transparency, non 2n sized images,...
 +
** Generic importer for static and animated models for [http://assimp.sourceforge.net/main_features_formats.html many 3D file formats].
 +
** Dedicated Exporters for many 3D file formats: Blender up to 2.49b through blender2crystal, Blender 2.5x through B2.5CS, 3D Studio Max, Maya, and model importers for common file formats such as COLLADA, 3ds, cal3d and md2.
-
{|
+
* User Interface
-
|-
+
** Event system & peripherals: mouse, joystick, keyboard.
-
| [[Image:Showcase_1_0_Foliage.jpg|thumb|left|Trees on a hill]]
+
** Graphical user interface system through CEGUI.
-
| <span>Our outside terrain now feature beautiful, randomly placed foliage that will make your worlds feel less empty. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus quam nisl, vulputate nec, ultrices sit amet, porta et, sapien. Mauris nibh eros, laoreet sed, rhoncus eu, placerat et, tellus. Integer purus leo, laoreet eu, mollis id, cursus eget, metus. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin ultrices eros eu ipsum.</span>
+
** User interface widgets for wxWidgets.
-
|}
+
** Text localization.
 +
** Plugin fo easy video recording and uber-screenshots.
 +
** Font servers, FreeType2 and glyphs fonts.
-
=== upcoming Version 2.0 ===
+
* Project Management
 +
** Debugging tools: generic plugin for visual debugging of scenes, support for Valgrind and CppUnit.
 +
** Scripts for generation of new projects.
 +
** Easy compilation and customization of the whole project thanks to Jam.
-
==== Terrain with Foliage ====
+
== The Crystal Entity Layer ==
-
{|
+
* Entity System
-
|-
+
** Each object in CEL is an entity. Entities are defined by adding them a list of property classes that defines their attributes and their behaviour.
-
| [[Image:Showcase_1_0_Foliage.jpg|thumb|left|Trees on a hill]]
+
** Generic event system for communication between entities and property classes.
-
| <span>Our outside terrain now feature beautiful, randomly placed foliage that will make your worlds feel less empty. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus quam nisl, vulputate nec, ultrices sit amet, porta et, sapien. Mauris nibh eros, laoreet sed, rhoncus eu, placerat et, tellus. Integer purus leo, laoreet eu, mollis id, cursus eget, metus. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin ultrices eros eu ipsum.</span>
+
** Persistence layer for saving and loading world states.
-
|}
+
** Experimental FTP-based network layer.
-
== Complete featurelist ==
+
* Runtime Package Environment
-
* General Architecture:
+
** CELStart: generic executable for all CELStart packaged applications, only the packed data files of the applications have to be installed on the user machines.
-
** True 6DOF engine with arbitrary sloped convex polygons.
+
** The whole logic may be written with bindings for Python, or in a XML scripting language.
-
** Flexible plugin system which allows for plugging in other modules including scripting languages. Python, Perl, and Java scripting plugins are already included. There are also various other plugins (fonts, sound, physics, movie recording, movie playing, ...).
+
-
** Crystal Space uses SCF (Shared Class Facility) for communication between several layers (like between the 3D Engine and the 3D Rasterizer). This allows plug-and-play capabilities and other nice stuff.
+
-
** Support for 15/16-bit truecolor) and 24/32-bit (truecolor) displays.
+
-
** Crystal Space has commandline arguments and can run at many resolutions (640x480, 800x600, ...).
+
-
** Very configurable via commandline or configuration file.
+
-
** C++ source (and optional assembler) is available. Crystal Space falls under the LGPL GNU copyleft license for libraries which means that the engine can be used in commercial products provided you can conform to the LGPL license (no, you DON'T have to release the source of your game if you use CS).
+
-
** cs-config script to make it easier for external applications to use CS.
+
-
* Textures and Texture Mapping:
+
* Artificial Intelligence
-
** Textures can have any size which is a power of two and they need not be square.
+
** Behaviour trees to build complex artificial behaviours by combination of single decision nodes.
-
** Crystal Space supports textures with various formats including GIF, TGA, PNG, BMP, JPG, and others. Also MNG/JNG images (animated) are supported.
+
** Hierarchical path finding upon [http://code.google.com/p/recastnavigation/ Recast & Detour], steering behaviours.
-
** It is possible to map a texture on a polygon in various ways (rotated, scaled, mirrored, ...).
+
** Neural networks and genetic algorithms.
-
** Perspective correct texture mapping with interpolation every 16 pixels (for software renderer). OpenGL has of course true perspective correction.
+
-
** Transparent and semi-transparent textures allowing for see-through water surfaces and windows.
+
-
** In addition to the usual lightmapped textures you can also use triangles which are gouraud shaded. The latest new renderer also supports stencil based realtime shadows using OpenGL hardware.
+
-
** Mipmapping to minimize memory strain on the texture cache and to have nicer looking textures when a polygon is far away.
+
-
** Support for dynamic textures (i.e. texture that you can render on and put on a polygon as well as normal textures).
+
-
** New renderer supports advanced shaders for making special effects. Shaders can use CG, vertex programs, fragment programs, and more.
+
-
* Engine Features:
+
* World Management
-
** Dynamic gouraud shaded sky dome (half-sphere) for a very realistic and nice looking sky. With very little programming it is possible to have a moving sun which actually modifies the color of the sky in real-time.
+
** Avatar and Non Player Character management: synchronization of the user actions with the mesh, its animations, its position and its collisions.
-
** Support for multi-layered and animated skyboxes and skydomes.
+
** Camera management with many different modes: first person, third person, tracking, isometric, horizontal.
-
** Landscape engine with support for scattering, material blending, lod, and other nice things.
+
** Region management: decomposition of a complete world in regions, with zoning between regions.
-
** Crystal Space supports mirrors!
+
** Advanced management of portals, e.g. for closing portals that are occluded.
-
** With mirrors and alpha mapping you can create really nice shiny or reflecting surfaces.
+
** Spawning of entities.
-
** Static LOD.
+
** Triggering of proximity events.
-
** Static colored lights with real shadows. Lighting and shadows are precalculated before the world is displayed (unless you use stencil based lighting).
+
-
** Dynamic colored lights with soft shadows!
+
-
** Stencil shadows.
+
-
** 3D triangle mesh sprites with frame animation. Convertors for Milkshape, Maya, Cal3d, 3DS, Quake MDL and Quake II MD2 formats to Crystal Space are included. Importers for 3DS, MDL, MD2, OBJ, POV, and ASE are also included. The meshes are actually progressive meshes allowing for dynamic LOD (level of detail) changes.
+
-
** 3D animated skeletal meshes using Cal3D animation.
+
-
** 2D sprites and a particle system using those 2D sprites.
+
-
** Depth-correct colored volumetric fog in sectors (both software and hardware renderers).
+
-
** Optional halo's around lights for nice atmospheric effects. Also support for lens-flares.
+
-
** Support for curved surfaces (Beziers, ...).
+
-
** Visibility system based on a combination of portals, kd-tree, and coverage buffer.
+
-
** Hardware accelerated transforms (if available and with OpenGL) for all objects.
+
-
* Portability:
+
* Inventory & Interaction
-
** Currently Crystal Space has been ported to Unix (X Windows, OpenGL), GNU/Linux (X Windows, OpenGL), Macintosh OS/X (also with OpenGL), Windows 32-bit (DirectDraw and OpenGL).
+
** Key and peripherals events bindings.
-
** Optional OpenGL hardware acceleration on Windows, GNU/Linux, and Macintosh OS/X. The OpenGL port has been tested with Mesa on GNU/Linux and works very well. The other OpenGL ports will also work well.
+
** Billboards and tooltips.
-
** Optional MMX support for processors that support it.
+
** Inventory system.
 +
** Selecting and grabbing objects.
-
* File Format Support:
+
* Advanced Physics
-
** Crystal Space can directly load 3DS, MDL, MD2, ASE, OBJ, or POV objects.
+
** Projectiles and damages to entities.
-
** Powerful XML world file format allowing you to easily redefine the world.
+
** Collision management with the ground.
-
** Levels can be stored in standard compressed ZIP archives so that you can easily make a bundle of one level.
+
** Advanced physical effects: fluids, thrusters, steering, explosions, attractors and repulsors.
-
** It's possible to make libraries of objects, textures and other game related stuff and put it all in a seperate ZIP file.
+
** Vehicles and their physics: bikes, cars, tanks, hovercrafts, or any wheeled vehicle.
-
** A convertor to convert MAP files (from Quake/HalfLife) to CS is also included. You can use this to edit levels with QuarK/WorldCraft or other editors.
+
** Mesh deformation, e.g. for destroying gradually an object.
-
** Convertors to convert Maya, Milkshape, or 3DS to models or levels is included.
+
-
** Several Blender scripts (Python) are included to export models and levels from within Blender.
+
-
* Various Other Features:
+
[[Category:Media]]
-
** Font system plugin to support other font types. Currently CS fonts and truetype fonts are supported.
+
-
** Moving objects.
+
-
** Sequence manager with triggers allowing the definition of object interactions from within the level itself.
+
-
** Hierarchical bounding box collision detection system.
+
-
** Powerful physics library using ODE is included too. It is a dynamics modeling and simulation engine.
+
-
** Sound support.
+
-
** Support for 3D sound (DS3D, EAX, A3D, ...).
+
-
** Support for various sound formats: WAV, Ogg/Vorbis, AU, AIFF, IFF, and MOD (using MikMod).
+
-
** Window system is included which is useful for in-game menus.
+
-
** There is also an input/output console (like in Quake) that can be activated with the 'tab' key.
+
-
 
+
-
Here are things which are currently in progress:
+
-
 
+
-
* More advanced lighting system to allow for shadows under moving objects and other nice things. Also a new radiosity based lightmapping tool is in development right now.
+
-
* Work on static visibility calculation (PVS).
+
-
 
+
-
Here are several things that we plan to do for Crystal Space in the near future:
+
-
 
+
-
* We will start working on a general LOD (Level Of Detail) manager in CS.
+
-
 
+
-
You also may want to take a look at the "Comparing CS to other engines" [tiki-list_faqs.php|FAQ] entry.
+

Current revision

The Crystal Space SDK

  • Portability
    • Highly platform independent with good platform abstraction. Supports GNU/Linux, OSX and Windows operating systems, and x86, PowerPC, ARM and SPARC processor architectures.
    • Support of a wide range of compilers and IDE, including Visual C++ 8, 9 & 10, gcc, MinGW/MSYS, Code::Blocks.
    • Written in standard C++ using very few non-standard extensions.
    • Self contained so that many modules requires no or few external dependencies.
    • Virtual File System handling both physical files on disk and files within ZIP files.
    • Abstracted configuration layer with support for settings in configuration file, system dependent storage such as the registry and command line.
    • Platform specific optimizations (MMX/SSE/Altivec).
  • Modularity
    • Modularized using a lightweight component framework, SCF, based upon the COM model. Components can be easily loaded or switched dynamically.
    • Bindings for other programming languages through SWIG: Java, Python, Perl, dedicated bindings for Python.
    • All subsystems easily extendable for new file formats.
  • Rendering & Lighting
    • OpenGL-based engine, supports hardware accelerated rendering on all supported platforms and cards from all well known vendors.
    • Rendering loops for custom rendering of objects.
    • Unshadowed, parallel-split shadow maps, and deferred lighting render managers.
    • Static lighter with radiosity and caustic.
    • Lightmap and per-vertex lighting.
    • Rendering to textures.
  • Shaders
    • Can be written in Cg and ARB. Shader description and mappings are defined in a XML compliant language.
    • Support for multiple passes, vertex and fragment programs. Light selection and multiple lights in one pass possible.
    • Shader weaver for combination of shaders and post-processing effects.
    • HDR rendering, tone mapping and eye adaptation.
    • Fallback system of shader techniques for hardware compatibility.
    • Library of available shaders and post-processing effects: diffuse, specular, bump map, glow, parallax, fur, bloom, blur, water, glass, and many others.
    • Automatic environment mapping.
  • Scene & Level Of Detail Management
    • Scene node system for easy composition of objects
    • Decomposition of a world in sectors with portals connecting them. Portals can be used for effects such as LOD management, streamed loading, mirrors or space warping.
    • Three different cullers: hardware occlusion culling (Occluvis), frustum culling (Frustvis), and dPVS (Dynavis).
    • General system for static LOD on all types of meshes, progressive LODS.
    • Impostors for replacement of far meshes with a 2D object.
    • Threaded loader for streamed loading of levels and objects.
    • Instanciation of meshes and objects.
  • Meshes
    • Many different type of meshes: general triangle mesh with multi-materials, cal3d meshes, sprite 2D, sprite 3D, ocean,...
    • Terrain mesh with paging, multi-splatting, deformations and automatic loading and unloading of terrain cells.
    • Mesh generator to dress up a scene with objects such as flora and rocks,...
    • Decals to be added on top of other meshes, even animated.
    • Configurable and extensible particle system mesh with billboards, emitters, physical effectors,...
    • Halos and lens flares.
    • Automatic triangulation of shapes.
  • Animation
    • Specialized and powerful mesh for advanced skeletal animation with animation blending trees, volume preserving dual quaternion skinning, morphing, and sockets.
    • Many types of animation nodes can be combined to generate dynamically complex animations: multi-blending, Finite State Machine, random, priority, LookAt, Inverse Kinematics (Quaternion-CCD and physically-based), speed (time warping), debug.
    • Ragdoll animation and animation of hairs & equipment.
    • Transparent import of BVH motion capture data, with real-time retargeting to a different (but similar) skeleton.
    • Motion capture viewer with integrated Point Light Display system.
    • Generic animation system for management of sequences of time events.
    • Coherent noise generation through the libnoise library.
  • Audio
    • 2D and 3D sounds with OpenAL.
    • Audio codecs: speex, ogg, wav (8- and 16-bit PCM).
    • Provides both one-time playing of effects and streaming playing in the background for music.
  • Physics & Collisions
    • Physics of rigid bodies and joints, made through a wrapper for two physics libraries: Bullet and ODE.
    • Support of kinematic bodies for interaction between classical animation and the physical simulation.
    • Transparent integration with the terrain system.
    • Soft bodies to simulate ropes, clothes and other volumetric deformable objects. General meshes can be animated automatically through them.
    • Debug plugin to visualize the physical simulation.
    • Simplified collision detection when you don't need the full dynamics simulation.
  • Data Representation
    • XML language for the description of each object and plugin of the whole CS. XML files can be set binary for faster loading.
    • Procedural, dynamic and animated textures.
    • Support for many image formats: png, jpg, dds, bmp, gif, tga, mng, jng, (binary) alpha, transparency, non 2n sized images,...
    • Generic importer for static and animated models for many 3D file formats.
    • Dedicated Exporters for many 3D file formats: Blender up to 2.49b through blender2crystal, Blender 2.5x through B2.5CS, 3D Studio Max, Maya, and model importers for common file formats such as COLLADA, 3ds, cal3d and md2.
  • User Interface
    • Event system & peripherals: mouse, joystick, keyboard.
    • Graphical user interface system through CEGUI.
    • User interface widgets for wxWidgets.
    • Text localization.
    • Plugin fo easy video recording and uber-screenshots.
    • Font servers, FreeType2 and glyphs fonts.
  • Project Management
    • Debugging tools: generic plugin for visual debugging of scenes, support for Valgrind and CppUnit.
    • Scripts for generation of new projects.
    • Easy compilation and customization of the whole project thanks to Jam.

The Crystal Entity Layer

  • Entity System
    • Each object in CEL is an entity. Entities are defined by adding them a list of property classes that defines their attributes and their behaviour.
    • Generic event system for communication between entities and property classes.
    • Persistence layer for saving and loading world states.
    • Experimental FTP-based network layer.
  • Runtime Package Environment
    • CELStart: generic executable for all CELStart packaged applications, only the packed data files of the applications have to be installed on the user machines.
    • The whole logic may be written with bindings for Python, or in a XML scripting language.
  • Artificial Intelligence
    • Behaviour trees to build complex artificial behaviours by combination of single decision nodes.
    • Hierarchical path finding upon Recast & Detour, steering behaviours.
    • Neural networks and genetic algorithms.
  • World Management
    • Avatar and Non Player Character management: synchronization of the user actions with the mesh, its animations, its position and its collisions.
    • Camera management with many different modes: first person, third person, tracking, isometric, horizontal.
    • Region management: decomposition of a complete world in regions, with zoning between regions.
    • Advanced management of portals, e.g. for closing portals that are occluded.
    • Spawning of entities.
    • Triggering of proximity events.
  • Inventory & Interaction
    • Key and peripherals events bindings.
    • Billboards and tooltips.
    • Inventory system.
    • Selecting and grabbing objects.
  • Advanced Physics
    • Projectiles and damages to entities.
    • Collision management with the ground.
    • Advanced physical effects: fluids, thrusters, steering, explosions, attractors and repulsors.
    • Vehicles and their physics: bikes, cars, tanks, hovercrafts, or any wheeled vehicle.
    • Mesh deformation, e.g. for destroying gradually an object.
| Article | Discussion | View source | History |