GSoC/GCI Archive
Google Summer of Code 2012


Web Page:

Mailing List:

The WorldForge project is about building tools to allow the construction of virtual worlds. The original community came together over a decade ago, out of a desire to create a game that was better and freer than Ultima Online.

But as the aims of the project evolved and became more ambitious, the overall goal changed. Instead of one game, we instead decided build a flexible framework that would allow everyone to contribute their own unique ideas and goals to the Worldforge project, allowing a multitude of games to be created. Our core focus is the construction of a complete system with all the tools, technology, content and artwork required to build complex persistent online virtual worlds.<

As part of our commitment to a vibrant virtual worlds ecosystem, we're also acting as an umbrella project for both Ryzom Core ( and CEGUI (


  • [Ryzom Core] Ryzom GUI Editor Ryzom has a very powerful and flexible GUI which can be configured from XML files. The XML GUI configuration files define the GUI layout, the widgets, and the data source for the widgets ( in reality it can only use the CDB system as a data source, but nevertheless the location of the data can be specified within the CDB and it's still a lot more flexible than having to fill the data with code ). This project involves extracting the GUI code from Ryzom and turning it into a reusable library, then building a GUI editor on top of it using the Qt framework. The editor shall be able to load existing GUI XML files and create new ones.
  • [Ryzom Game Functionality] Implement Character Achievements When achievements for Ryzom were introduced on the Ryzom Armory[1], the resonance from the community was very good. I'd like to give every player the chance to benefit from achievements without relying on third-party mechanisms. Therefore the current achievement system should be moved onto the Ryzom servers, allowing for a more detailed progress tracking and also access to the achievements via WebIG.
  • Automatic adjustment of graphical level and extra features for Graphics Settings menu. The goal of this project is to implement a system that adjusts the graphics level of the Ember client automatically to get a smooth FPS. As an additional goal, I aim to implement new options in the Graphics Settings menu.
  • Automatic mesh LOD management system Ember uses high quality graphical models, but doesn’t provide low quality versions of them. When a model is far away from the camera it is not required to render high quality models, since the user sees it on screen for just few pixels. This makes Ember to require high-end graphics cards. The automatic LOD (Level of detail) management system is about to solve this problem. It will create from high quality models multiple low quality models, by reducing vertex count with an algorithm. This allows for far away rendering to use low quality models, which will increase graphical performance. Next to the automatic LOD management, I want to provide possibility to manually configuring the LOD for a given model, which will allow fine-tuning for performance critical models. I will also design and create a GUI for the manual LOD configurations in the model editor to make fine-tuning an easy task.
  • CEGUI Samples Framework The CEGUI user interface library currently has a great number of demos which are all split into seperate executable files. Additionally a lot of them are very old and some do not represent CEGUI's features in a good fashion. Therefore I suggest to create a sample browser, a single executable that unifies all samples and makes it possible to add new demos easily. The sample browser would be written in C++ and would also support python and Lua demos. As the next step I would like to change all existing demos, improving their visual appearance and functionality, removing useless ones, merging redundant ones, and adding new ones that i deem useful and representable for the library. My goal is to provide a sample browser in the end, which contains a set of useful, appealing demos, that give newcomers a good impression of the library and help them understand how it works, what can be done with the library and how certain features can be used. For this I would also like to create a special environment in which the sample viewing takes place, like a 3D room with screens, each displaying one demo on it.
  • Create an End-User Defined, Dynamic Rank Structure Within the Guild Manager As stated above I will be creating an end-user defined, dynamic rank structure within the guild manager. The Guild manager already has a Grade system (Member, Bearer, Recruiter, Officer, High Officer and Guild Leader) and each grade has their own permission. One thing it doesn't have is the ability for a Guild Leader to define his own hierarchy based on ranks he/she would like to use (e.g. Soldier, Sergeant, Lieutenant). I feel this addition will add depth to the multi-player community that cannot be experienced without it.
  • Develop Mason Game System Implement a game play system where one can build and construct fortifications for the mason game system. The system would use a hierarchy to gather and construct this base, and the interface would be very apparent and intuitive.
  • Ryzom Core: Camera animations and sound triggers Implement sound triggers and camera animations during missions. We have to be able to play sounds at a given moment or event during a mission. The sounds can be attached to a NPC, a player in the game or they can just be at a specific location. Sounds can also be different in function of the language of the player. Beside the sounds, I will implement camera animations that can be played at any moment in the game. The animations can be rotations over the time and/or movements over the time. Some special animations like shaking animation will be implemented too. With the animations we will also have some text that can be displayed at the bottom of the screen to describe the objectives of a mission for example. Everything will be configurable via the world editor and will be kept as simple as possible and as generic as possible to be easily scalable and integrated in the game.