flipCode - Jorrit Tyberghein Interview [an error occurred while processing this directive]
Jorrit Tyberghein is the main author and driving force behind the Crystal Space 3D Engine project. He currently works at the University of Leuven in Belgium as a programmer/analyst.

"...Open Source will probably be the way of the future."

Screenshot from Crystal Space


For those that don't know what Crystal Space is, could you tell us a little about the engine, why you started it, and what its basic features are?

Here is the excerpt from my page which describes Crystal Space:
Crystal Space is a free (LGPL) and portable 3D engine written in C++. It supports true 6DOF, colored lights, mipmapping, portals, mirrors, alpha transparency, reflecting surfaces, 3D sprites, scripting, 8-bit and 16-bit display support, Direct3D hardware acceleration on Windows, Glide hardware acceleration on Windows and Linux, ...
What does this all mean? Crystal Space is not a game. Many people have confused it with a game in the past. CS is a 3D engine which can be used for creating a game. The kind of games it is most suitable for are games like Quake II, Tomb Raider, Unreal and RPG's. However any 3D game could probably be made using Crystal Space.

So the ultimate purpose of Crystal Space would be to create a development kit which will help people make 3D type games. The major part of CS is the 3D Engine itself. This is a piece of software which visualizes 3D scenes. In addition to that CS will also contain code for networking, and sound support which are also used a lot in modern games.

Another issue of Crystal Space is portability. This means that CS can run on many platforms (like Linux and Windows). The advantage of this is that it will become easier for game developers to make games that are immediately compatible on all those systems. If you want to make a 3D game that will have to run on Linux, Windows, and Macintosh then Crystal Space is ideal for you.

Probably the most important feature of Crystal Space is that it is 'free'. You can use it in your own products without having to pay a license fee. There is only one catch. You have to be able to conform to the LGPL license. This is not very difficult and we also try to make it as easy as possible.

I started Crystal Space because programming is my hobby. I also was frustrated by seeing all those nifty 3D games (like Doom initially and later Quake). I wanted to be able to do the same. So I started researching and thinking about this. This took about six months. I scanned the Web for every useful document I could find. You must keep in mind that when I started all this I knew next to nothing about 3D graphics. I had to learn it all by myself. At some point I finally had enough information to start coding. In about one and a half months I coded the first version of Crystal Space. At that point I had not enough time to finish my own project and I decided to release it to the public rather than let the code rot away on my harddisk.

I didn't expect the response I got. More than 1500 different people have already mailed me from all over the world!

Crystal Space is basically based on portals (although we are currently considering adding level possibilities which would not be based on portals for landscape capabilities). This makes it ideal for indoor type games (like Quake II). However we are also working on landscape capabilities to enhance flexilibity. It is a 6DOF engine which means that you can look and walk in any direction you want. Unlike Doom which is limited (you cannot look up and down). It supports colored static and dynamic lighting with shadows (something that even Quake II cannot do in software mode). Some other nifty features are volumetric fog and halos (like in Unreal) and curved surfaces (like in Quake III Arena).


How many people exactly are now working on Crystal Space, and how difficult has it been to coordinate such a large project?

There are currently more than 300 people subscribed to the developers mailing list. Not all of them are really developing Crystal Space but many are. I estimate there are about 30 people who are really active helping me with coding and designing of new features. More than fifty people have already contributed actual code to Crystal Space. Those include small bug fixes but also large modules like the sound code and 3D hardware accelerated rasterizers.

Initially coordination was not very easy because there was no common forum. Everything had to be done using personal mail. At some point (about a year ago) some people donated a mailing list to me and this is now our main discussion forum. All coordination of the actual source is done by me. I decide what goes into the project and what not. I almost never refuse patches. The only reason to me to refuse a patch is when I cannot get it to work correctly.


Crystal Space is currently a "large open source project". Why? What are your thoughts on the importance of Open Source projects?

Initially when I released Crystal Space I hadn't even heard about Open Source yet :-) I released Crystal Space because I had too little time to finish the project myself. I have a fulltime job and I could never make it as good as it is now without the help of all my contributors. Lately Open Source is getting more in the news. Crystal Space fits in perfectly :-)

I think Open Source is a very good idea. Witness the success of Linux for example. I also think that Open Source will probably be the way of the future. More and more commercial software vendors are moving towards Open Source.



Screenshot from Crystal Space
How do major changes occur within such a large open project? For example if someone wanted to add or change a major feature, does that all go through you first?


A few large changes have been done in the past. Both me and others have at some point done a major redesign on a lot of features. One very good example is the transition to COM which was done recently. This was probably the most significant major change in the current history of Crystal Space. Dan Ogles worked for several months on this and when he finally finished everything was totally broken. What he did was changing the system dependent stuff (the 2D driver and 3D rasterizer) so that it worked via COM. This was a VERY significant change and he could only do it for Windows. So all other ports (Linux, DOS, ...) were completely broken. When he was doing this transition I froze Crystal Space for about ten days before Dan released his major patch. This was to help him get up-to-date with the current version of Crystal Space (there is a new version of CS every week so it is difficult to be up-to-date at times). As soon as I received his patch I started working to fixing the Linux port (as I'm the maintainer for that port). This took me about two to three days. The version which was then released to the developers had only two barely functioning ports (Windows and Linux). All other ports were broken. Then it was up to the remaining developers to fix their stuff. By now almost all ports are fixed.

I always help the person that is doing such a large change.


What games or projects being developed now are using the Crystal Space engine, and is it free for them to use the engine in a commercial product?

Several people on my list are considering making RPG's using Crystal Space. I think CS will probably be used most for those types of games. Most of these projects are still in an early planning stage so it is a bit early to say much about them.

You can use the engine freely in a commercial product provided you can comply to the LGPL license (GNU license for libraries). This license stresses that Crystal Space should remain free. This also means that any changes a game developer makes to Crystal Space should also remain free and public. However, all other code that a game developer creates for his game do not need to be free.


How many platforms does Crystal Space run on at this time, and are there any limitations that you've found by making Crystal Space such a portable engine (For example, assembly code compatibility)?

Screenshot from Crystal Space


Crystal Space currently runs on Linux, Unix in general, DOS, Windows, BeOS, Macintosh, and OS/2. The Amiga port is broken but in the past it also worked.

Crystal Space can work with software rendering, Direct3D, Glide, and OpenGL.
There are very few limitations with this approach. Crystal Space supports assembler routines on platforms that can use them. So for example, on a Pentium Crystal Space will really be able to use high-performance assembler routines while this may not be the case on a SPARC processor. However if someone decides to write assembler routines for the SPARC then CS will be able to use them.

Portability does not necessarily mean that you need to make compromises. If the design is done correctly you gain a lot while loosing almost nothing.


What are the long term goals of the Crystal Space project?

The goal of Crystal Space is to become a useful and flexible 3D game development kit. We try to incorporate every useful 3D feature in the engine while keeping the engine performant and easy to use.

We're not there yet. Work is going very well but we still have work to do.



Screenshot from Crystal Space
If someone is interested in joining the Crystal Space effort, what should they do and who should they get in contact with?


They can mail me (jorrit.tyberghein@uz.kuleuven.ac.be) or join the developers mailing list (information at http://crystal.linuxgames.com) and mail the list instead.

The first thing they should do is to try to browse the source code to get a feel of how things work. Crystal Space is rather large so this may take some time. I'm always available for help.




Interview by Kurt Miller (12 January 1999)

Goto The Crystal Space web page
Return to the flipCode Page

[an error occurred while processing this directive]