For the seventh year in a row Crystal Space, an open source 3D Engine, has participated in the Google Summer of Code program. In previous years we had great success stories, but this year has exceeded all of our expectations. Below is a brief description of each of the seven student projects, some of which are continuations of student projects from previous years of Google Summer of Code.
Matthieu Kraus worked on improving the deferred renderer in Crystal Space by cleaning up the deferred render pipeline and integrating dynamic shadows using Cascaded Shadow Maps. He also added deferred lighting and deferred shading.
Extensions to the cseditor Framework
A continuation of a Google Summer of Code project from 2007, Andrei Bârsan’s project was to create the base tools needed for the automated generation of a graphical user interface, and then to apply and test those tools on an object that had always strongly lacked a way to be manipulated: the particle mesh. The goals of the project were achieved and for the first time it is possible to modify particle systems easily and dynamically.
Improved Physics in Crystal Space with Bullet
Dominik Seifert continued revamping the Bullet-based physics engine in Crystal Space, a project started last year by another student. Dominik did much more than just improve the physics engine: he refactored it, pulled it apart, put it back together, and added a lot of new features and improvements. He worked on implementing handling of kinematic and dynamic actors, better coupling of rendering and physics parameters and objects, and more work on portals. He also added support for simple vehicles and physically more accurate particles.
Improving Support for Water Bodies
One of our most graphically oriented projects (together with deferred rendering) was the improvement of water bodies. Naman Gupta managed to fix several bugs in the ocean system, implemented reflection and refraction and implemented support for shorelines.
Virtual File System v2: Modular and Extensible Redesign of VFS
In Crystal Space we have a VFS plugin (Virtual File System) which takes care of loading and saving data transparently to archives and the regular file system. Our student, Touko, spent the summer cleaning up, refactoring the code, committing code and fixing some serious issues like buffer overflows with the old VFS plugin.
Lighter2 is an application in Crystal Space that calculates static lightmaps for a level. The tool is quite complicated so this is the second year that we had a student work on the project. This year’s student, Steel Style, was mentored by the student who worked on the project last year. Steel implemented Sector Grouping, Lighter2 configuration option simplifications, and improvements in the packaging of the light maps. His work on Sector Grouping made light map computing faster by a factor of 5x-10x on the sample maps, an astonishing speedup.
Updating Behavior Trees, Recast & Detour and the Life-Sim Demo
Sam Devlin worked on several different tasks in his Artificial Intelligence-oriented project: improving the behavior trees that Sam actually created himself during a previous Google Summer of Code edition, improving the path-finding system that is the result of two other previous Google Summer of Code projects, and improving the demo and tutorial applications for these tools. There is still a lot of work that still has to be done, but all of these tools are now finally usable.
At the end of the program the students spent a lot of time cleaning up their code, writing documentation and some of them even started helping us with the merging of their respective subversion branches into our main development branch. We believe that the experience for our students has been a good one and hope that what they have learned this summer will be valuable for them in the future. Several of the students expressed interest in continuing to work with Crystal Space and there was a lot of very useful code produced. All in all, a really good experience!
By Jorrit Tyberghein, Crystal Space Organization Administrator