m |
|||
| (12 intermediate revisions not shown.) | |||
| Line 1: | Line 1: | ||
| - | == | + | == 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 | + | ** 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 | + | ** 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. | ||
| - | ** | + | ** Unshadowed, parallel-split shadow maps, and deferred lighting render managers. |
| - | ** | + | ** Static lighter with radiosity and caustic. |
| + | ** Lightmap and per-vertex lighting. | ||
** Rendering to textures. | ** Rendering to textures. | ||
* Shaders | * Shaders | ||
| - | ** Can be written in Cg | + | ** 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. | ||
| - | ** | + | ** 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 | ||
| - | ** Decomposition of a world in sectors with portals connecting them. Portals can be used for effects such as LOD management, streamed loading or space warping. | + | ** 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. |
| - | ** General system for static LOD on all types of meshes. | + | ** 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. | ** 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 | + | ** Many different type of meshes: general triangle mesh with multi-materials, cal3d meshes, sprite 2D, sprite 3D, ocean,... |
| - | ** Terrain mesh with paging | + | ** 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. | + | ** 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 | + | ** 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. | ||
| - | ** | + | ** Transparent import of BVH motion capture data, with real-time retargeting to a different (but similar) skeleton. |
| - | ** Generic animation system for | + | ** 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,... | ||
| - | ** | + | ** 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. | ||
| - | == | + | == 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 | + | ** 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 | + | ** 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.
