New release of Crystal Space Open Source 3D engine

36

Author: JT Smith

Jorrit Tyberghein writes: “After a long time we finally release another version of Crystal Space (Crystal Space Site). This is version 0.90 and it is a MAJOR step since the last official release (0.18). This release is actually in preparation for the long-expected 1.0 release. One of the most important goals we had to reach in order to be able to release 1.0 is API stability. Programming a game with Crystal Space was difficult because CS was a moving target. The 0.90 release will try to end this race by stabilizing the API. Between 0.90 and 1.0 we will most likely have to do small API changes for things we forgot but this should now have
minimal effect on applications using CS. After this release we will focus
on three major things now:

  • Further examination work on the API to see if we are really satisfied
    with it.
  • Eliminate all known and critical bugs that are still there. Also try
    to eliminate all unknown bugs 🙂
  • Complete the documentation so it is fit for an 1.0 release.

0.90 itself is already a very mature release of Crystal Space and I’m proud
to announce the list of things we accomplished since 0.18:

  • Engine Capabilities:
    • New isometric engine which can be used as an alternative to the
      normal 3D engine. This engine uses the same technology as the
      full 3D engine. You can add mesh objects (provided they are not
      too big) and it will use the 3D renderer system among others.
    • New landscape engine. The old DDG based landscape engine has been removed
      because it didn’t integrate well with the rest of CS and it was not
      maintained. This landscape engine is simpler but it works very well with
      the rest of CS.
    • New texture generation utility which is especially useful to generate
      textures for landscapes. One example: given a texture for snow, grass,
      rock, and sand you can use the texture generation utility to create
      a texture that will use those four textures based on the heights in
      a heightmap (for the terrain engine). Much more is possible though
      (i.e. basing on slope and so on).
    • New space demo demonstrating how CS can also be used as a space engine.
    • Hierarchical mesh factories (0.18 already had hierarchical mesh objects
      but not factories).
    • Much improved lighting system. The quality of lightmaps is a lot
      better now (although there is still some room for improvement).
    • Motion manager has been rewritten.
  • Special Effects:
    • New Lensflares.
    • New general emit particle system that can be configured to do nearly
      everything (although it still cannot make coffee!).
    • New functions for fullscreen fade effects (among others).
    • New haze mesh plugin. With this plugin it is possible to create effects
      that look a lot like volumetric light.
  • Structural Changes:
    • Huge redesign of the engine in order to make everything more consistant.
      All geometrical objects are now gone from the engine and are implemented in
      seperate ‘mesh object’ plugins. The engine itself is now fully usable
      as a plugin.
    • The engine has become much more general in that every mesh object
      can be used for everything. In the past sector walls had to be normal
      polygons. Now you can define a sector wall using a 3D sprite if you
      want. There is also a new system of render priorities with which you
      have full control when some entity should be rendered.
    • Huge structural changes (including removal of the old pseudo-RTTI
      system, the system driver, …).
    • Lots of things that used to be in libraries (like image loading, sound
      loading, level loading, …) are now seperate plugins. This increases
      modularity of CS a lot.
    • Big changes to configuration system.
  • Rendering:
    • The OpenGL renderer has been significantly rewritten making it a
      lot more optimal. Especially texture handling and 3D mesh
      handling (used for terrain engine and 3D sprites for example)
      are now much more optimal. In addition we did some preparation
      for vertex buffers (unimplemented) with which we will again
      improve performance of complex and detailed levels a lot.
    • The OpenGL renderer will now use the stencil buffer for
      clipping when available and if efficient enough.
    • The OpenGL renderer now dynamically combines small lightmaps
      into bigger super-lightmaps so that less textures have to be
      send to the hardware and less texture swapping occurs.
    • Support for multi-texturing in OpenGL. This can be used for
      detail textures (for example).
  • Model Support:
    • New plugins to import various model formats (3DS, ASE, MDL, MD2, POV,
      LWO, OBJ, …)
    • The 3ds2lev utility has been improved considerably. It can now
      also convert models and it has now options for full level conversion.
    • There are several new export plugins for use with Blender. With those
      you can export models (including animation) and levels from Blender
      to CS.
  • Various:
    • New Cygwin port.
    • New debugging plugin that can be inserted in any application without
      recompilation.
    • New ‘cs-config’ script to make it easier to use CS from external
      applications.
    • New reporter plugin which CS plugins and other parts of CS use
      to reporter errors, warnings, and normal notifications. An application
      can query this reporter or listen to it (i.e. receive events)
      in order to show a meaningful error to the user. This reporter
      plugin fixes a long standing problem with error handling in CS.
      Note that at this moment not all modules are properly using
      the reporter. This will be fixed for 1.0. This reporter fixes the
      problem with 0.18 which was very bad with regards to error handling.
    • New MP3 sound loader.
    • New Ogg/Vorbis sound loader.
    • New MOD sound loader using MikMod.
    • New EAX sound plugin (3D sound).
    • New RLE AVI Codec plugin.
    • New LUA scripting plugin
    • New AWS plugin (window system). This is work in progress which will
      eventually replace the old CSWS system.
    • LOTS of bugs fixed.

Some less nice things to say:

  • Radiosity is currently broken. This will be fixed for 1.0.
  • Glide renderer has been removed due to lack of maintenance.
  • Direct3D renderer has been removed due to lack of maintenance.
    The good news is that a new Direct3D renderer is being
    written for DirextX8. This will also be for 1.0.
  • MazeD has been removed due to lack of maintenance. We are
    now concentrating more on external editors (like Blender,
    QuarK, WorldCraft, …) and improving the importing/converting
    tools to work with other formats. The Quark editor in
    particular is being rewritten with Crystal Space in mind (and
    even using the Crystal Space framework).
  • The GGI canvas as been removed due to lack of maintenance.
  • The MGL2D canvas as been removed due to lack of maintenance.
  • If you have an application using CS 0.18 then converting this to
    0.90 will be a hell of a job. The API between 0.18 and 0.90
    changed dramatically. We have a document included which explains
    99% of these changes but doing the conversion is still
    complicated. We promise this will NOT happen anymore after 0.90!

For a more detailed list of changes since the very first time Crystal
Space was released check out this
ChangeLog File
(WARNING: this file is more than 1.8MB).

Go to this page for the new release.

I’d also like to remind people that it is possible to
Donate Money to the Crystal
Space project.”