Past GSoCs

From WorldForgeWiki
Jump to: navigation, search

This page lists the projects completed in the past incarnations of the Google Summer of Code.

2008

In 2008, WorldForge participated in the GSoC for the first time and was allotted three slots. All three students completed their project successfully. We would like to congratulate Tamas Bates, Romulo Fernandes and Alexey Torkov to their success. We would also like to thank Google in general and Chris diBona and Leslie Hawthorn in particular for organizing such a great event.

Completed Projects

Entity creator

Add an entity creator to Ember, which will allow for easy creation of new entities. This will involve specifying and writing a parser for how to store the entity data, binding the parsed data to scripts (Lua to begin with) and adding hooks for replacing values of performing iterated actions, provide gui elements for the bound values and finally to provide a functional and cohesive gui for it all.

More information can be found here.

This project was implemented by Alexey Torkhov. A page for this can be found here.

Sound manager

Add support for sound through a sound manager. This will involve working with OpenAL and integrating it better into Ember, extending the Model format for better sound support, handling sound resource loading and unloading and provide functionality for sound prioritizing and leveling.

More information can be found here.

This project was implemented by Romulo Fernandes. A page for this can be found here.

Terrain modifiers

Extend the terrain handling with support for modifiers which directly alter the terrain. This will involve both client (Ember) and server (Cyphesis) side alterations, though with the focus on the former. It involves Atlas message format extension and parsing, Mercator integration and terrain system updates. A following phase of the project could involve creation of additional terrain modifiers or support for better terrain alteration on the client through an editing GUI.

More information can be found here and here(for a possible phase two)

This project was implemented by Tamas Bates

2009

In 2009, three students successfully completed their Summer of Code projects. We would like to congratulate Cédric Maréchal, Manuel A. Fernandez Montecelo and Amey Parulekar to their success. We would like to thank Google, especially Chris diBona, Leslie Hawthorn and Ellen Ko for making Google Summer of Code 2009 happen.

Completed Projects

Art upload/moderation/commit mechanism for WOMBAT

To make WOMBAT a true asset management solution, artists need to be able to upload their artwork via a web interface. To stop people from uploading unwanted artwork, a moderation feature is needed where the team leader can check the artwork prior to it being checked into the repository. The assets that pass moderation need to be checked into the back-end media repository, selecting the correct location to store the actual files based on tags or similar meta-data. Technical Details: WOMBAT currenly supports read-only access to the assets stored in a SVN repository. Now the goal is to make WOMBAT support adding new files to the repository as well.

This project was implemented by Cédric Maréchal.

Better multi threading support for Ember

Investigate areas where Ember would benefit from multitheading and add support. Ember is currently in essence single threaded throughout. There are however various areas where it can be refactored to instead use multiple thread. This task involves a initial phase where the suitable areas are thoroughly investigated and a solid multi-threaded approach is planned in detail. The second phase deals with the implementation of solid multi threading in the identified areas. Technical Details: This is a task which will require the student to both learn Ember, Ogre and many of the WF libraries such as Eris, Mercator and Atlas. A good understanding of the various aspects of multi threading is required.

This project was implemented by Manuel A. Fernandez Montecelo.

Implement a fishing task for Cyphesis

This project aims to implement an interface to allow players to fish in oceans. The aim is not only to implement fishing, but to create certain base features that can then be reused for similar activities in the future. While the basic implementation will have one type of fish and one type of bait, this will be extended to have multiple species of fish, with different behaviours for each species, and different bait for different species, which would introduce the need to select bait carefully.

This project was implemented by Amey Parulekar.

2010

In 2010 three students successfully completed their Summer of Code projects. We would like to congratulate Manohar Vanga, Tiberiu Paunescu and Dzmitry Kamiahin to their success. We would like to thank Google, especially Chris diBona, Carol Smith and Ellen Ko for making Google Summer of Code 2010 happen. We would also like to thank the OpenNEL project for a great collaboration, working together as mentor organizations.

Completed Projects

GUI improvements

Improve the GUI by adding five distinct features:

    • A common quickhelp system, which will unify the various way we now present context help to the user. More info.
    • Actionbars, allowing for binding of items and actions to keys. More info.
    • Support for bags and stacks in the inventory. More info.
    • Allow items to be dragged from the inventory to the world. More info.
    • Points-of-interest markers on the compass/minimap. More info.

Technical Details: This is a task which will require the student to learn both Ember and CEGUI in depth.

This project was implemented by Tiberiu Paunescu.

Convert Object Viewer to be Qt-based (OpenNEL)

Rewrite the tool Object Viewer using Qt4. This program will receive an improved interface, additional features and cross-platforming.

This project was implemented by Dzmitry Kamiahin.

Multi-Server Linking in Cyphesis

Currently Cyphesis does not scale to multiple servers. The aim of this project is to implement a mechanism for allowing multiple server running Cyphesis to coordinate with each other in simulating a single world.

This project was implemented by Manohar Vanga.

2011

In 2011, ...

2012

Completed Projects

Automatic adjustment of graphical level

  • Summary: Design a system which will automatically adjust the graphical detail level so that framerate is smooth
  • Description: Ember already has an ability to change the graphics detail level, as well as the ability to tweak the settings of the terrain system. However, all of this must currently be done by hand. This task aims to implement a system which will sample the current frame rate and adjust the graphical detail level accordingly, so that the player always has a smooth framerate.
  • Specification: More details can be found here.
  • Technical Details: This task does not require much knowledge of Ogre or CEGUI, but it will require that the developer becomes familiar with large parts of the Ember source code, as this feature is sure to touch on many different subsystems.
  • Difficulty: medium
  • Technical requirements: standard C++
  • Mentor: Erik Ogenvik

Dynamic calculating of lower LOD versions for meshes

  • Summary: Implement dynamic and automatic creation of low-LOD versions of meshes, to be used for far away entities.
  • Description: While Ogre has a built in LOD system which allows you to provide different versions of each mesh for different LOD levels, the current media available only provides high level meshes. One approach to this would be to have Ember instead dynamically calculating various lower detailed meshes on the fly, to be used for lower LOD levels.
  • Specification: More details can be found here.
  • Technical Details: This task requires basic understanding of how a mesh works, basic familiarity with Ogre, and the ability to implement various methods for collapsing a 3d mesh into a lower detailed one.
  • Difficulty: medium
  • Technical requirements: standard C++
  • Mentor: Erik Ogenvik

Develop Mason Game Systems

  • Summary: Implement game systems require to build a basic castle fortification from scratch from gathering raw materials to the completed construction.
  • Description: WorldForge have been working for some time towards a loose set of ideas for a game called Mason. Mason has a generic medieval fantasy setting and is a freeform multiplayer sandbox game in which players have a broad ability to permanently affect a persistent online game world. A number of example game systems have been defined as a starting point. The goal is to implement these game systems, and then further expand the defined systems. An ideal candidate would help push the boundaries that the core code can currently support, debug existing infrastructure and stimulate the rest of the WorldForge team to create a more capable framework.
  • Technical Details: Game systems are implemented by editing XML data which defines the game elements, and by writing python scripts that defines how players can interact with the systems. It may also be necessary to propose and make changes to the C++ core on which the game systems run.
  • Specification: More information can be found here.
  • Difficulty: Medium-Hard
  • Technical Requirements: Python, basic XML, optionally C++
  • Mentor: Alistair Riddoch

Samples framework (CEGUI)

  • Summary: Unify all samples together into one executable with a framework.
  • Description: Currently, samples are separate applications that are run separately. It would be nice to have some sort of a unified framework for defining samples. That way you can start CEGUIDemos executable and browse through samples, switching them, etc... Part of this task is to create new demos, improve existing ones or possibly remove them if they don't make sense anymore.
  • Technical Details: New samples should be coded in C++, Python or Lua (all languages CEGUI officially supports), so this framework should have bindings for Python and Lua. The GUI for choosing samples should of course be done with CEGUI. Ogre has a similar sample framework (but samples can only be written in C++).
  • Specification: TBD
  • Difficulty: Medium
  • Required Skills: C++, limited Python and Lua
  • Mentor: Martin Preisler

2013

Completed Projects

Replace current terrain manager with Ogre terrain component

  • Summary: Replace existing terrain manager with the more capable Ogre terrain component.
  • Description: The existing terrain manager isn't optimal. Instead we want to use the one provided by Ogre. Integrating it into Ember involves replacing the existing terrain manager with it, but also adapting the shaders currently used for terrain rending to it.
  • Technical Details: This is a task which will require the student to both learn Ember and Ogre. There will be some shader coding involved.
  • Specification: More information can be found here.
  • Difficulty: hard
  • Technical requirements: medium C++, basic shader knowledge
  • Mentor: Erik Ogenvik

2014

Completed Projects

Integrate SmartBody

  • Summary: Integrate the SmartBody system for humanoid movement into Ember.
  • Description: SmartBody is a system which allows for advanced movement or humanoid meshes. This would be a perfect fit for Ember, as it would bring much more depth and expressiveness to the humanoid characters. This task involves making sure that SmartBody code is integrated with Ember, but also that there are enough bindings in the Model format to leverage SmartBody features.
  • Technical Details: This is a task which will require the student to both learn Ember and SmartBody. Ogre will also be touched upon, but to a lesser extent.
  • Specification: More information can be found here.
  • Difficulty: medium
  • Technical requirements: medium C++
  • Mentor: Erik Ogenvik


AI entity filters

  • Summary: Implement AI entity filters, or "entity queries"
  • Description: For AI characters we need a better way to let them look for or interact with entities. Just going by the type of the entity isn't enough. We need a way to use multiple criterias to select entities. Think of other query languages like SQL.
  • Technical Details: Understanding how query languages, using chained criterias, are constructed will help. You will need to do work in both C++ and Python.
  • Specification: More information can be found [1].
  • Difficulty: medium
  • Technical requirements: medium C++, medium Python
  • Mentor: Erik Ogenvik