Home - Forums - Documentation - Gallery - Bugs

CS

* Portability
 * Highly platform independent with good platform abstraction. Supports GNU/Linux, OSX and Windows.
 * Support of a wide range of compilers and IDE, including gcc, MinGW/MSYS, Cygwin, Visual C++ 8 & 9.
 * Written in standard C++ using very few non-standard extensions.
 * 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.
 * 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.
 * Bindings for other programming languages through SWIG: Java, Python, Perl.
 * 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.
 * Static, pseudo-dynamic and dynamic lights. Statically and dynamically lit objects can be combined.
 * Shadow map shadows.
 * Multiple render targets.
 * Rendering to textures.
* Shaders
 * Can be written in Cg, ARB, and GLSL. 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.
 * Node-based system for combination of shaders and post-processing effects.
 * HDR rendering, tone mapping and eye adaptation.
 * 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.
 * Automatic environment mapping.
* 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.
 * Two different cullers: frustum culling (Frustvis), and dPVS (Dynavis), which also does software occlusion culling.
 * General system for static LOD on all types of meshes.
 * 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 skeletal animation, morphing and sockets, cal3d, sprite 2D, sprite 3D, ocean,...
 * Terrain mesh with paging and splatting.
 * Foliage system to dress up a scene with objects such as flora and rocks,...
 * Decals to be added on top of other meshes.
 * Configurable and extensible particle system mesh with billboards, emitters, physical effectors,...
 * Halos and lens flares.
 * Automatic triangulation of shapes.
* Animation
 * Specialized mesh for advanced skeletal animation with animation blending tree, weight 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).
 * Ragdoll animation and animation of hairs & equipment.
 * Skeletal animation and morphing for the general triangle mesh.
 * Generic animation system for triggering of time events, moving of objects, fade in/out.
* 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.
 * 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,...
 * 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.
* 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 screenshots.
 * Font servers, FreeType2 and glyphs fonts.
* Project Management
 * Debugging tools: generic plugin for visual debugging of scenes, support for Valgrind.
 * Scripts for generation of new projects.
 * Easy compilation and customization of the whole project thanks to Jam.


CEL

* 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.
 * Generic event system for communication between property classes.
 * Persistence layer for saving and loading world states.
* Runtime Package Environment
 * CELStart: generic executable for all CELStart applications, only data files have to be installed.
 * The whole logic may be written with bindings for Python, or in a XML scripting language.
* World Management
 * Avatar and Non Player Character management: synchronization of the user actions with the mesh, its position, its orientation 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.
* 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.
| Article | Discussion | View source | History |