Home - Forums - Documentation - Gallery - Bugs
Line 32: Line 32:
* 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.
** Three different cullers: hardware occlusion culling (Occluvis), frustum culling (Frustvis), and dPVS (Dynavis).
** Three different cullers: hardware occlusion culling (Occluvis), frustum culling (Frustvis), and dPVS (Dynavis).
Line 75: Line 76:
** 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,...
** Generic importer for static and animated models for [http://assimp.sourceforge.net/main_features_formats.html many 3D file formats].
** 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 2.49 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.
+
** 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

Revision as of 19:07, 28 March 2011

The Crystal Space SDK

  • Portability
    • Highly platform independent with good platform abstraction. Supports GNU/Linux, OSX and Windows.
    • 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.
  • 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 |