[LWN Logo]
[LWN.net]
From:	 Jorrit Tyberghein <jorrit.tyberghein@pandora.be>
To:	 news@linuxgames.com, lwn@lwn.net, ben@3dfiles.com,
	 tim@3dfiles.com, civax@mail.com
Subject: New Release of Crystal Space (0.90r001)
Date:	 Tue, 23 Oct 2001 21:56:05 -0400

Crystal Space 0.90r001 Released!

After a long time we finally release another version of Crystal
Space (http://crystal.linuxgames.com and
http://crystal.sourceforge.net). 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!

I'd also like to remind people that it is possible to
donate money to the Crystal Space project.