Help Us

Nice to see that you want to help the project :) There's lot of things you can do.

This project requires a lot of work and this page will list in order of importance what you can do to help us:

Promoting The Project

If you like this project please tell your friends, post on forums, blog about it, tweet about it, and do whatever else you can to spread the word.

Improving GNU/Linux and MAC OS X and ports

Currently Ryzom is natively compiling and running on Windows, Linux and Mac OS X. However, the two last ports are very recent and need to be improved. We are looking for people who want to help to improve Ryzom to their preferred operating system.

Porting Tools

  • 3D objects were made with 3dsmax. Work is already underway to eliminate that dependency and use free software alternatives like Blender.
  • Georges, the tool used to describe all items in the world (monsters, npc, items, stats) was written for Windows with MFC. So it needs to be adapted to work on GNU/Linux using Qt.
  • ObjectViewer will be adapted to work on GNU/Linux using Qt thanks to a trainee from the Google Summer of Code but the task is big and help is welcome.
  • WorldEditor is also made with MFC and only for Windows. We have a very precise vision of what we want to do to replace this tool. Using new web technology and some tools already made by some Ryzom fans, we want to create collaborative online tools to directly edit and apply world modification into the servers. This will require lot of knowledge in Javascript and PHP.

These are the next big tasks that need to be done to make Ryzom even more useful to the free software community, so if you'd like to help, please contact us.

Source Code Packaging

One of the first big changes to the Ryzom project will be to eliminate the build-specific files. Currently Ryzom uses a custom Makefile system for building on Linux and Visual Studio solutions and projects to build on Windows. The goal is to unify all of the disparate build environments under the CMake umbrella.

CMake provides a certain level of automated packaging through CPack. We would like to start harnessing CPack to generate releases so that the release cycle can be shorter and easier. In addition we are seeking Debian and Fedora package maintainers to help build and maintain Ryzom packages for the various Debian-based distributions and the RedHat-based systems.

Packagers for other distributions and distribution systems are eagerly welcomed as well. We would like to release often and to as many platforms as possible.

Documentation

Documentation is something we readily admit is a weak point for us. If you're good at technical writing but not confident in your programming skills this could be a great way for you to contribute. We have a variety of documentation tasks including these examples:

  • Convert existing NeL documentation to the new site.
  • Convert the OpenNeL Handbook to this site.
  • Write tutorials on basic usage.
  • Create simple sample demonstrations.
  • Create tutorials and videos on things such as using the tools, creating content, etc.

In addition to these examples we also very much need a developer willing to dig through obscure code and work on understanding how much of the lesser known pieces of code and functionality work and document them as well.

Security Reviews and Patches

The Ryzom Project has gone through lengths in an attempt to mitigate as many of the potential security threats as possible but we know we're not perfect. We seek eager individuals to help us identify potential or actual security problems and work with us to resolve them.

Bug Slaying

Every project has bugs and we are no exception. It takes a special person to catch those little flaws in code and figure out the right way to fix the problem.

Do some never ending tasks

It's often a very good way to start to contribute.

Never ending tasks are special tasks that are... never ended. They often are easy but sometime boring but they are very important to maintain the quality of Ryzom Core. You can see the list of never ending tasks (fix the link). For example, it's code/comments cleaning, some small refactoring... Well, it's often easy to do when you read a header for example. If we all regularly work on these tasks, the project will become stronger.

Resolve a known issue

There are some bugs and features that have been requested by the community, you can take one and resolve it.

Do what you want

After all, it's a Free Software project, you can do what you want! Just do it!

Ideas

All open work is rated on a simple 4-place scale: Easy, Moderate, Difficult and Extremely Difficult.

NeL3D

Implement new OpenGL backend driver in NeL3D

Difficulty: Difficult
Description:
Write a new OpenGL driver for NeL3D based on either OpenGL 2.0+ or OpenGL ES 2.0. The latter OpenGL implementation will be the more challenging effort. Writing an OpenGL 2.0+ driver would be a good step to providing the basis necessary for more modern OpenGL implementations and OpenGL ES 2.0 will set the basis for the future OpenGL 3.0 driver.
Requirements: C++, OpenGL
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Modularize OS/Platform/Architecture Code

Difficulty: Easy to Moderate
Description:
We would like to extract OS and platform specific code into separate code files that can be resolved at link-time as well as runtime. This will help clean a myriad of #ifdefs out of the code and will allow us, at runtime, to link libraries optimized for specific instruction sets (e.g. MMX).
Requirements: C++
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Create A Programmable Shader Framework

Difficulty: Extremely Difficult
Description:
We want to create a pluggable programmable shader framework that allow us to load shaders at runtime and allows the configuration of use of a specific shader langauge based upon system support. This will give us the ability to allow graphic artists to write shaders for their models and terrain without requiring timely and bug prone modifications of the render pipeline and will eliminate the existing inefficient CVertexProgram architecture. This will also simplify our ability to support for existing built-in shader effects.
Requirements: C++, OpenGL and Direct3D, GLSL and HLSL (potentially Cg)
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Expand Shadow Rendering Support

Difficulty: Difficult
Description:
We need to fix shadow rendering to have more broad hardware support. We have a number of platforms in which shadows do not render properly.
Requirements: C++, OpenGL and Direct3D, potentially GLSL and HLSL.
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

NeLMisc

Implement Pluggable Scripting Framework

Difficulty: Difficult
Description:
We want to create a pluggable scripting framework with a reference implementation in Python or Lua. This framework will provide the essential wrapping of the NeL API so that any NeL-related activity can be accomplished through the reference implementation. The goal in this is to make it easier for new and existing projects to develop gameplay changes dynamically while limiting the impact of compilation. In addition if the reference implementation is in Python this provides a crucial step forward in simplifying the path to a Blender exporter.
Requirements: C++, Lua and/or Python
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Expand Image File Support

Difficulty: Easy to Moderate
Description:
We want to add file format support for more texture and image formats using a third-party library such as DevIL. The new functionality should be flexible enough to exclude formats that may not supported by the third party library based on the library compile-time options.
Requirements: C++
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

NeLGeorges

Any ideas? Please add them!

NeLPacs

Create an Alternative Implementation of PACS

Difficulty: Difficult
Description:
There have been a number of request to have a "true" 3D collision library implemented for NeL using NeL's types and compatible with NeL's landscape. The primary challenge with this is compensating for the landscape without inducing undue performance losses. The two optimal choices for a potential third-party library to support would be either Bullet or ODE. It would also be preferred if possible to maintain NLPACS as an API and change it to load the legacy functionality or the new functionality as a driver in the same manner we manage OpenGL vs. Direct3D.
Requirements: C++, Physics, ODE or Bullet.
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

NeLNet

Any ideas? Please add them!

NeLLigo

Any ideas? Please add them!

NeLSound

Complete NeLSound OpenAL Driver.

Difficulty: Moderate
Description:
The OpenAL sound driver isn't entirely complete and needs to be reviewed to ensure that it fulfills all of the feature requirements of NeLSound. Additionally a better mechanism for handling music may need to be considered.
Requirements: C++, OpenAL
Issue Reference: Feature #132: Implement manual rolloff in OpenAL driver

Sound Source Loading System

Difficulty: Moderate
Description:
Currently supported sound formats are dictated by the sound driver in use. We want to add a sound source loading system into the low-level API that exists between high level sound management and the driver. This would ideally load into a driver independent storage class and be compatible with the sound drivers we currently use (DirectSound, XAudio2, FMOD and OpenAL).
Requirements: C++
Issue Reference: Feature #99: Sound buffer streaming, Feature #100: Multi-channel buffers, Bug #324

Sound Occlusion and Obstruction Support

Difficulty: Easy
Description:
We would like to implement occlusion and obstruction using hi/med/low pass frequency filtering available in the sound APIs.
Requirements: C++
Issue Reference: Feature #167: Implement occlusion and obstruction in sound drivers

Custom Reverb Effect Algorithm

Difficulty: Easy
Description:
We would like to implement a custom algorithm for applying the RoomSize parameter on a reverb parameter structure to get the same reverb effect on all APIs. This would make each driver's sound consistent.
Requirements: C++
Issue Reference: Feature #168: Environment room size does not work the same under different sound drivers

NeLNS

New and Improved Login Service

Difficulty: Moderate
Description:
We would like to update the Login Service (LS) and the supporting client classes to be more flexible in a variety of ways. We would like it to have more controls and flexibility around managing and securing user-operated shards. One of the goals would be to provide more information downstream to the shard (via the LS connectivity to the Welcome Service) as well as providing a reference implementation of a web-based account management tool. This web-based tool would be independent of the admin service tools.
Requirements: C++, PHP
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

NeL Tools

Create Blender Exporter

Difficulty: Difficult
Description:
Presently NeL only officially supports 3DStudio MAX with a contributed plugin for Maya. We would like to expand our modeler support to include an Open Source modeling package, Blender. This exporter must be capable of exporting 3D mesh, animation and landscapes.
Requirements: C++, Blender, Python
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Create COLLADA Converter

Difficulty: Extremely Difficult
Description:
Presently NeL only officially supports 3DStudio MAX with a contributed plugin for Maya. We would like to expand our modeler support to include COLLADA-supporting modeling softwares. This exporter must be capable of exporting 3D mesh, animation and landscapes. Due to the nature of COLLADA some work will be necessary in the NeL3D module to add support for deficient areas of the 3D engine, namely adding more interpolation techniques.
Requirements: C++, 3D Algorithms
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Web-based Translation Chain Tool

Difficulty: Easy
Description:
We would like to create a web-based tool chain for managing translations. This would provide an easier way for words and phrases to be submitted to the I18N files for translation efforts.
Requirements: PHP
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Landscape Editor

Difficulty: Difficult
Description:
We would like an external tool for for editing and painting landscape. This tool would need to be capable of generating and editing large bezier patches as well as providing varying levels of detail editing and ultimately the ability to save to NeL-compatible zone files.
Requirements: C++, 3D Algorithms
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

BNP Tool Extensions

Difficulty: Easy to Moderate
Description:
BNP is a virtual file system we use to package game information and media data. At present the tools for manipulating BNP files is simple. We would like to add one or more of the following extensions to the BNP tool chain:

  • Make a kio for KDE platforms.
  • Make a FUSE based file system for Linux.
  • Make a shell extension for Windows.
  • WinZip-style application for editing/managing them (written in Qt).

Requirements: C++, Varying
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Expand Object Viewer Zone Support

Difficulty: Moderate
Description:
Visualizing objects/shapes, zones (landscanpe and clusters/portals (indoor/outdoor scenes) is presently accomplished through three GUI tools: Object Viewer, ZViewer and Cluster Viewer. We want to consolidate this functionality into Object Viewer.
Requirements: C++
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Create a GUI Interface for 3D Pipeline

Difficulty: Easy to Moderate
Description:
We would like to create a Qt-based GUI application capable of performing the build_gamedata functionality but we would like to eliminate the dependency on that pipeline for this tool and consolidate the functionality and logic of the steps into the tool. This tool would allow programmers and graphic designers to visually manage the steps of the process.
Requirements: C++, Qt
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

NeL Builds and Ports

NeL Samples and Tests

Expand Unit Testing

Difficulty: Easy
Description:
NeL presently uses CppTest for unit testing. We are testing core areas and complex modules that are newcomers to NeL. We would like to expand the unit testing to all of the libraries and modules within NeL.
Requirements: C++, CppTest
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Create Advanced Sound Sample

Difficulty: Easy to Moderate
Description:
We would like to create an advanced sound sample that allows the user to experience more of the features and functionality of the sound system. This sample would expand upon the existing sound_sources sample by adding a very basic 3D presentation, music, ambient sounds and what ever other features of NeLSound are able to be completed within the project time.
Requirements: C++
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Advanced 3D Samples

Difficulty: Moderate
Description:
We would like to write a series of samples demonstrating the more advanced features of the 3D engine. The list of features will be dependent upon time and resources but will include a simple landscape demonstration, animations, particles and special effects.
Requirements: C++
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Snowballs

Implement CEGUI Support in Snowballs

Difficulty: Moderate
Description:
The GUI for Snowballs is very rudimentary. We would like to implement our NeL CEGUI Renderer for Snowballs and add better menu management to the game.
Requirements: C++, XML
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Implement Login Control in Snowballs

Difficulty: Easy
Description:
Snowballs allows users to log in to a shard but the functionality to allow the user to interactively enter their account information, choose a shard to connect to and choose a character from that shard is missing. This functionality is crucial to putting the game back into a playable state.
Requirements: C++
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Implement Sound Effects in Snowballs

Difficulty: Moderate
Description:
Snowballs needs to be updated to take advantage of the NeLSound module. We want to add functionality into Snowballs to play sound effects for actions, interface interactions, environmental sounds and background music.
Requirements: C++
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Implement NeL Entities in Snowballs

Difficulty: Moderate
Description:
We want to update the Snowballs services to use NeL entities to track online players. This will allow better player management as functionality is added to the game and allows a shard administrator to use the player lookup facilities of the admin web-tool.
Requirements: C++
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Implement Basic Game Logic in Snowballs

Difficulty: Easy to Moderate
Description:
Currently Snowballs has none of the original game logic. We would like to add some of this logic in both from a client and from a server perspective. Examples of new functionality would be the ability to track hits in a database, implement "hit-effects" such as freezing in place for a period of time.
Requirements: C++
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Implement Spacial Chat in Snowballs

Difficulty: Easy
Description:
Snowballs only has "global" chat. We would like to add the concept of spacial chat to the game so that "listeners" are limited by distance.
Requirements: C++
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Create Snowballs Game Page

Difficulty: Easy
Description:
We would like to create a players-page for Snowballs that allows players to view scores, high scores, their character information and more. This could be comprised of simple shard level information and then a larger game-level site that allows the viewing of all configured shard information.
Requirements: PHP
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Build Snowballs AI Service

Difficulty: Difficult
Description:
We would like to build a simple AI service for snowballs that is able to perform scripted events, control entities in a semi-intelligent fashion.
Requirements: C++
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Miscellaneous

Implement MySQL Helper Library

Difficulty: Difficult
Description:
Several of the NeLNS services use MySQL to persist information such as shard statistics, player and character information. We would like to create a helper library to simplify the NeL-developer's exposure to MySQL. This library would simplify calls to SQL, handle error catching and abstract the MySQL such that the NeL developer is only exposed to it as a last resort. It may be possible to utilize another library to do this, but a reference implementation using a NeLNS service must be created to demonstrate.
Requirements: C++
Issue Reference: PLEASE CREATE AN ISSUE FOR THIS

Need To Discuss

The following ideas can be discussed further if anyone is interested in them. They are no less important than the others but have no received sufficient discussion by the community to determine the requirements or priority. Do not be afraid to ask about these:

  • Create new Qt-based Log Analyzer
    • Add additional plugins or create new scriptable functionality for analyzing logs.
  • Fix NeLNS Admin deficiencies
    • Create a log server compliant with CNetDisplayer
    • Update admin web app to be capable of using the new logging server
    • Modernize the admin web app (Web 2.0)
  • Create an entity management layer that provides pluggable gameplay logic (behavior) identifying information (properties.)
    • For inspiration look at CEL
  • As an extension on the audio and bitmap file support, support for video playback within nel would be pretty interesting as well.
    • Perhaps it could be useful to have all of these in a new nel media library, to avoid putting too many external dependencies within the core libraries.
  • Convert and modernize the Tile Editor interface to be Qt-based.
    • This is already mostly done, but not modernized. It will need to be completed, tested and merged into the source tree.
    • See Issue 219
  • Web based (ajax, googlemaps) World editor to edit level design.