Home - Forums - Documentation - Gallery - Bugs
m
Current revision (14:45, 29 March 2011) (edit) (undo)
 
(11 intermediate revisions not shown.)
Line 1: Line 1:
-
== CS ==
+
== The Crystal Space SDK ==
* Portability
* Portability
-
** Highly platform independent with good platform abstraction. Supports GNU/Linux, OSX and Windows.
+
** 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 gcc, MinGW/MSYS, Cygwin, Visual C++ 8 & 9.
+
** 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.
** Written in standard C++ using very few non-standard extensions.
** Self contained so that many modules requires no or few external dependencies.
** Self contained so that many modules requires no or few external dependencies.
-
** File system abstraction layer, VFS, that handles both physical files on disk and files within ZIP files, giving virtual layout independent from platform and physical layout.
+
** 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.
** 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
* Modularity
-
** Modularized using a lightweight component framework, SCF, based upon the COM model. Components can be easily loaded or switched.
+
** 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.
+
** Bindings for other programming languages through SWIG: Java, Python, Perl, dedicated bindings for Python.
** All subsystems easily extendable for new file formats.
** All subsystems easily extendable for new file formats.
Line 17: Line 18:
** OpenGL-based engine, supports hardware accelerated rendering on all supported platforms and cards from all well known vendors.
** 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.
** Rendering loops for custom rendering of objects.
-
** Static, pseudo-dynamic and dynamic lights. Statically and dynamically lit objects can be combined.
+
** Unshadowed, parallel-split shadow maps, and deferred lighting render managers.
-
** Stencil shadows and shadow map shadows.
+
** Static lighter with radiosity and caustic.
 +
** Lightmap and per-vertex lighting.
** Rendering to textures.
** Rendering to textures.
* Shaders
* Shaders
-
** Can be written in Cg, ARB, and GLSL. Shader description and mappings are defined in a XML compliant language.
+
** 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.
** Support for multiple passes, vertex and fragment programs. Light selection and multiple lights in one pass possible.
-
** Node-based system for combination of shaders and post-processing effects.
+
** Shader weaver for combination of shaders and post-processing effects.
** HDR rendering, tone mapping and eye adaptation.
** HDR rendering, tone mapping and eye adaptation.
** Fallback system of shader techniques for hardware compatibility.
** Fallback system of shader techniques for hardware compatibility.
-
** Cache storage of compiled shaders for faster loading.
 
** Library of available shaders and post-processing effects: diffuse, specular, bump map, glow, parallax, fur, bloom, blur, water, glass, and many others.
** 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.
** Automatic environment mapping.
* Scene & Level Of Detail Management
* 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.
** 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.
-
** Two different cullers: frustum culling (Frustvis), and dPVS (Dynavis), which also does software occlusion culling.
+
** Three different cullers: hardware occlusion culling (Occluvis), frustum culling (Frustvis), and dPVS (Dynavis).
-
** General system for static LOD on all types of meshes.
+
** General system for static LOD on all types of meshes, progressive LODS.
** Impostors for replacement of far meshes with a 2D object.
** Impostors for replacement of far meshes with a 2D object.
** Threaded loader for streamed loading of levels and objects.
** Threaded loader for streamed loading of levels and objects.
Line 40: Line 42:
* Meshes
* Meshes
-
** Many different type of meshes: general triangle mesh with skeletal animation, morphing and sockets, cal3d, sprite 2D, sprite 3D, ocean,...
+
** Many different type of meshes: general triangle mesh with multi-materials, cal3d meshes, sprite 2D, sprite 3D, ocean,...
-
** Terrain mesh with paging and splatting.
+
** Terrain mesh with paging, multi-splatting, deformations and automatic loading and unloading of terrain cells.
-
** Foliage system to dress up a scene with objects such as flora and rocks,...
+
** Mesh generator to dress up a scene with objects such as flora and rocks,...
-
** Decals to be added on top of other meshes.
+
** Decals to be added on top of other meshes, even animated.
** Configurable and extensible particle system mesh with billboards, emitters, physical effectors,...
** Configurable and extensible particle system mesh with billboards, emitters, physical effectors,...
** Halos and lens flares.
** Halos and lens flares.
Line 49: Line 51:
* Animation
* Animation
-
** Specialized mesh for advanced skeletal animation with animation blending tree, weight skinning, morphing, and sockets.
+
** 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, speed (time warping).
+
** 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.
** Ragdoll animation and animation of hairs & equipment.
-
** Skeletal animation and morphing for the general triangle mesh.
+
** Transparent import of BVH motion capture data, with real-time retargeting to a different (but similar) skeleton.
-
** Generic animation system for triggering of time events, moving of objects, fade in/out.
+
** 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
* Audio
Line 63: Line 67:
** Physics of rigid bodies and joints, made through a wrapper for two physics libraries: Bullet and ODE.
** 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.
** 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.
** Debug plugin to visualize the physical simulation.
** Simplified collision detection when you don't need the full dynamics simulation.
** Simplified collision detection when you don't need the full dynamics simulation.
Line 70: Line 76:
** Procedural, dynamic and animated textures.
** 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,...
** Support for many image formats: png, jpg, dds, bmp, gif, tga, mng, jng, (binary) alpha, transparency, non 2n sized images,...
-
** Importers for many 3D file format: Blender through blender2crystal, 3D Studio Max, Maya, COLLADA, and model importers for common file formats such as 3ds, cal3d and md2.
+
** 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
* User Interface
Line 77: Line 84:
** User interface widgets for wxWidgets.
** User interface widgets for wxWidgets.
** Text localization.
** Text localization.
-
** Plugin fo easy video recording and screenshots.
+
** Plugin fo easy video recording and uber-screenshots.
** Font servers, FreeType2 and glyphs fonts.
** Font servers, FreeType2 and glyphs fonts.
* Project Management
* Project Management
-
** Debugging tools: generic plugin for visual debugging of scenes, support for Valgrind.
+
** Debugging tools: generic plugin for visual debugging of scenes, support for Valgrind and CppUnit.
** Scripts for generation of new projects.
** Scripts for generation of new projects.
** Easy compilation and customization of the whole project thanks to Jam.
** Easy compilation and customization of the whole project thanks to Jam.
-
== CEL ==
+
== The Crystal Entity Layer ==
* Entity System
* 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 behavior.
+
** 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 property classes.
+
** Generic event system for communication between entities and property classes.
** Persistence layer for saving and loading world states.
** Persistence layer for saving and loading world states.
 +
** Experimental FTP-based network layer.
* Runtime Package Environment
* Runtime Package Environment
-
** CELStart: generic executable for all CELStart applications, only data files have to be installed.
+
** 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.
** 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 [http://code.google.com/p/recastnavigation/ Recast & Detour], steering behaviours.
 +
** Neural networks and genetic algorithms.
* World Management
* World Management
-
** Avatar and Non Player Character management: synchronization of the user actions with the mesh, its position, its orientation and its collisions.
+
** 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.
** 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.
** Region management: decomposition of a complete world in regions, with zoning between regions.
Line 116: Line 129:
** Vehicles and their physics: bikes, cars, tanks, hovercrafts, or any wheeled vehicle.
** Vehicles and their physics: bikes, cars, tanks, hovercrafts, or any wheeled vehicle.
** Mesh deformation, e.g. for destroying gradually an object.
** Mesh deformation, e.g. for destroying gradually an object.
- 
-
* Artificial Intelligence
 
-
** Finite state machine for the management of the evolution of the environment.
 
-
** Behavior trees to build complex artificial behaviors.
 
-
** Path finding and steering behaviors.
 
-
** Neural networks and genetic algorithms.
 
[[Category:Media]]
[[Category:Media]]

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 |