Help Us Code
Ryzom Core Ideas
About Ryzom Core
Ryzom Core is a framework built to encourage and facilitate the creation of open-source MMORPG projects and worlds. It contains all of the essential functionality needed for a mid-to-large scale MMO. All of the essential 3D, sound (including spatial sound), physics, landscape/terrain, data loading and core network services are available. Ryzom Core has a robust pre-built shard framework ready for developers to build game logic upon and ready to scale to whatever the developer needs. One Ryzom Core's fundamental differences between most of its open-source competitors is that Ryzom Core has been in development since 2001 and is the framework behind the commercial MMORPG Ryzom. Ryzom Core is a complete platform for MMORPG development and includes a vast array of artistic assets, tools, services and a full featured client so that a new project can sit down and begin creation on day one.
Contacting Ryzom Core
You can find the Ryzom Core community through our IRC channel (irc.freenode.net / #ryzom) as well our Google Plus Community.
Mentor Contact Information
- Matt Raykowski: IRC as 'sfb', email
- Vianney Lecroart: IRC as 'ace', email
- Nuno Gonçalves: IRC as 'ulukyn', email
- Dzmitry Kamiahin: IRC as 'dnk-88', email
- Jan Boon: IRC as 'Kaetemi'
- Matthew Lagoe: IRC as 'Botanic' email
Tools Related Ideas
Ryzom Core Blender Exporter
- Summary: Create an exporter for the Blender modelling application.
- Description: Ryzom Core has one fully functional exporter for its game data pipeline: 3DSMAX. We greatly wish to enable FOSS users to create content completely independent of proprietary tools. This exporter will need to be functionally identical to the 3DSMAX exporter. This task may also require modifications to NeL in order to enable additional functionality (such as animation tracks keyed with a different algorithm). Finally the exporter should provide a method for build_gamedata to procedurally execute the export functions (see the 3DSMAX MAXScripts called to export shapes, etc).
- Technical Details: At a bare minimum we need the ability to export shapes, animations, skeletons and other objects out from Blender. The process should as closely match the 3DSMAX plugins capabilities as possible so that object creation between the packages is consistent and that the resulting exported data can uniformly be processed by build_gamedata regardless of the modeling package. Liberty can be taken on the presentation of the plugin information as is appropriate with Blender. The NeL builder classes are all in C++ but wrapping them in Python in order to use Blender Python API is acceptable.
- Specification: TBD
- Difficulty: Medium
- Required Skills: Python, C++, 3D Algorithms
- Mentor: TBD
Ryzom Core DAE Converter
- Summary: Create an converter for DAE's exported from modeling applications.
- Description: TBD
- Technical Details: TBD
- Specification: TBD
- Difficulty: Medium
- Required Skills: C++, 3D Algorithms
- Mentor:TBD
Ryzom Core Landscape Editor Plugin
- Summary: Create a landscape editor plugin for Object Viewer Qt
- Description: Landscape editing and painting is one of the more sophisticated components of the 3DSMAX plugins. This plugin will combine four major components: Tile Editor, Landscape Sculptor and Landscape Painter, Ligoscape Editor. We envision the tool being something similar to EasyGen or the Torque Terrain Editor.
- Technical Details: The Tile Editor plugin will need to rewrite the Tile Edit Qt tool's presentation so that it is more flexible (implemented as re-sizable and dock widgets.) The process will also require the elimination of the PIC library - use CBitmap where edges need to be saved into the tile bank and QBitmap or QPixmap otherwise.
The Landscape Sculpting tool should use bezier patches as the underlying topology (since that is the native topology of NeL landscape zones.) A basic ability to edit sub-objects on the patch and to add sub-objects (cut to add more segments and points) is an essential. The ability to "sculpt" with brushes is the second task required. Finally an option to deform the topology using a heightmap. This tool should output a ".zone" file which is a binary serialization of CZone.
Landscape Painter should be based on the 3DSMAX Patch Painter plugin (nel_patch_paint). Nearly all of the underlying logic already directly manipulated the NeL CZone object - only the 3DSAMX driven presentation needs to be replaced.
The Ligoscape Editor will need to be able to define various zones created by the previous modules as ligobricks and define their purposes (ligozone, ligomat, ligotrans or special.) It will need to be able to export all of this information in a form that is usable by World Editor.
- Specification: TBD
- Difficulty: Very Difficult
- Required Skills: C++, Qt, 3D Algorithms
- Mentor: Jan Boon (Kaetemi), Matt Raykowski (sfb)
OVQT Tool Conversions and Improvements
- Summary: Complete the conversion of important level design tools such as Tile Editor and Georges Editor and implement improvements to existing tools or to the OVQT framework.
- Description: The OVQT tool has become the primary tool used for content creation in Ryzom Core. It's still a fairly immature tool and needs plugins adapted to it or polished so as to be more usable and stable. There are several on-going efforts to accomplish this such as a new Georges Editor plugin, a new Tile Editor plugin and a mostly complete Mission Compiler. In addition there are some tools which could use some additional minor functionality. The editor framework itself is purposely simple but could use some slight improvements as well.
- Technical Details: This project will be a collection of small improvements to existing tools, minor updates to the extension framework and the completion of partially-to-mostly completed tools with existing reference implementations. There are issues linked for each one of these.
- Specification: Issues #11 (Georges Editor), Issue #12 (Tile Editor), Issue #24 (Mission Compiler), Issue #25 (Splash Screen), Issue #26 (Hot Load Plugins), Issue #27 (UXT Editor)
- Difficulty: Medium
- Required Skills: C++, Qt
- Mentor: Matt Raykowski (sfb) or Dzmitry Kamiahin(dnk-88)
Server Related Ideas
Implementation of NLNET Service in node.js
- Summary: Create an implementation of the full NLNET service protocol in node.js
- Description: The goal is to be able to create a NeL service that runs under node.js and communicates with native C++ NeL services.
- Technical Details: Implementation of binary serialization of network packages. P2P connection between services. Implementation of protocol for communication with NeL Naming Service.
- Specification: TBD
- Difficulty: Medium
- Required Skills: JavaScript, C++
- Mentor: TBD
NeLNS Qt Displayer and Services Dashboard
- Summary: Create a Qt UI for Ryzom Core Services and a Dashboard organizing all services.
- Description: This task has two parts. The first step is to implement a Qt-based viewer that NLNET::IService can be set to use individually. This displayer should function equivalent to the existing Windows displayer for network services. The second step is to build a "services dashboard" application in which each NeL network service displayer can be attached as a tab.
- Technical Details: The application cannot be run in the QApplication::run loop due to the fact that IService has its own main loop. Optimally the design will allow each service to remain running as an independent process and map into the dashboard through some other mechanism such as IPC.
- Specification: TODO
- Difficulty: Medium
- Required Skills: C++, Qt
- Mentor: TBD
Ryzom Core API Service
- Summary: Create a central API hub service with a PHP REST API capable of XML and JSON.
- Description: The project would create a new API service that is capable of providing real-time access to PDR information as well as other statistics. Using the Mirror Service this service can retrieve all of the existing API functionality such as character information, fame and guild information. Additionally this service should have a MySQL database associated with it for tracking non-persistent data points such as data like PvP kills, PvE kills by player and by region, and more. All of this data should be available via a simple TCP interface for consumption by the REST frontend. Ideally the REST frontend would be written in PHP and accompany the existing Ryzom API (see code/web/api).
- Technical Details: The goals in this task would be to provide an expansion of collectable data and a PHP frontend based upon the open source Ryzom API (code/web/api). Unlike the existing API this should not rely on scheduled running of cronjobs to export XML via the pdr_util tool and should be capable of realtime or near-realtime querying.
- Specification: TBD
- Difficulty: Medium
- Required Skills: C++, PHP
- Mentor: Matt Raykowski (sfb) or Vianney Lecroart (ace)
Ryzom Core Service Security
- Summary: Create a shared library for service connectity authentication and authorization and provide a method for inter-service validation.
- Description: The Ryzom Core services do not have an standard method of "authenticating" non-player connectivity. With a handful of tools connecting to services such as MOS and the potential for webapp or tool connectivity to other internal services we should implement a simple authentication and authorization system using user credentials and privileges. Additionally it would be nice for the services to have some way of identifying each others validity within the shard to prohibit 'imposter' services for shards run on a public network with no filtering.
- Specification: TBD
- Difficulty: Easy
- Required Skills: C++, PHP
- Mentor: Matt Raykowski (sfb)
Content Manager Service and Frontend
- Summary: Create a "content manager" service that provides the ability to maintain the contents of the art asset database.
- Description:
- Specification: TBD
- Difficulty: Easy
- Required Skills: C++, Qt and PHP (optional)
- Mentor: TBD
Ryzom App Improvements
- Summary: Improve the Ryzom App framework, add management functionality and write new apps.
- Description: The current open source App framework has no regulation of app and privilege security and has no way to dynamically introduce new apps. The improvements to the App framework should include adding a standard way to for introducing new apps and management of access to apps through privilege levels.
- Specification: Issue #28 (Framework Improvements), Issue #29 (Additional Basic Apps)
- Difficulty: Easy
- Required Skills: PHP
- Mentor: Nuno Gonçalves (ulukyn) or Matt Raykowski (sfb)
Ryzom Game Functionality
Implement New Movement Modes
- Summary: Implement the ability for players to jump and to swim underwater.
- Description: Ryzom Core has a basic ability to support these two features but the work was never completed. This task would be to completely implement one or both of these movement modes.
- Technical Details: See the forum thread for a more thorough discussion of the needed changes.
- Specification: Issue #17
- Difficulty: Difficult
- Required Skills: C++
- Mentor: TBD
Conversion of Client Web Browser Technology
- Summary: Convert the client web browser library from LibWWW to a modern alternative.
- Description: Ryzom Core's client currently relies on LibWWW and cURL to facilitate the rendering if its in-game browser. The in-game browser and the accompanying allow Ryzom Core developers to quickly create new features and functionality using web frameworks. The reliance on LibWWW has proven to have two major problems for the project: LibWWW is no longer maintained and is no longer provided in many major distributions package repositories and its functionality is very limited, the LibWWW library has very poor support for advanced browser functionality. Ryzom Core would like to replace this with Berkelium. This would provide Ryzom Core with a rich interface capable of HTML5 and JavaScript.
- Technical Details: Remove the LibWWW code and replace it with embedded Berkelium. Simplify code where possible and document the design. Imlpement special language extensions (e.g. the lua tag) and other Ryzom specific deviations from the HTML standard.
- Specification: Issue #22
- Difficulty: Medium
- Required Skills: C++
- Mentor: Matt Raykowski (sfb)
Programmable Shader Pipeline
- Summary: Implement a GLSL-based programmable shader pipeline for artists and developers.
- Description: Currently there's no means to create and apply fragment programs, the few that exist in the system are completely hard coded. Additionally the only way to apply a vertex program is to create a CVertexProgram class and inject it into the object using 3DSMAX - this means you need to create a new class in NeL and modify the MAX plugin whenever you want to add new VP.
- Technical Details: TBD
- Specification: TBD
- Difficulty: Medium
- Required Skills: C++, OpenGL+GLSL, 3DSMAX (optional)
- Mentor: Jan Boon (Kaetemi)
General Usability
- Summary: Fix usability issues with Ryzom Core
- Description: Currently there's a number of smaller issues such as the "close" button not working, the system not auto-detecting screen resolution etc, that modern games have. Would be good to have these general usability issues fixed.
- Application 'X' icon does not close the application.
- Auto-detect screen resolution for default game settings.
- Full screen outgame screens (windowed launcher, still).
- Make the 'ESC' key close more than just modal windows.
- Make it so users can choose to have 'tells' tabbed.
- Anti-Aliasing Settings
- Eliminate dependency on enums for titles, allowing adding titles to be content-only adds (a new sheet and a new set of translations) without code modification.
- Eliminate dependency on enums for continents, replacing things such as Ring point determination with continent sheet information and defaulting continents starting locations in the sheets.
- Technical Details: TBD
- Specification: TBD
- Difficulty: Easy
- Required Skills: C++, OpenGL
- Mentor: Any
Miscellaneous Game Play Additions
Please note that many of these ideas are short in duration and trivial while others are fairly complex. Please assess the difficulty and time required before using one of these ideas for a proposal. A task which we believe to be only a few weeks worth of work will not be accepted as a proposal. In these cases it may be helpful to lump together a theme of ideas for example guild improvements, outpost improvements or changes to the PVP system.
- Complete the spires code and provide demonstration material and scripts.
- Implement improved mount/packer abilities such as taming/training and cavalry skills (ability to attack with penalty while mounted.)
- Implement PVP XP and PVP-specific skill tree code.
- Implement Guild/Faction/etc banners - using WindTree code to have a 'flapping' effect. Allow the new item type to have AOE bricks associated with it. Provide guild officer commands to grant and revoke standard bearer rights. Allow guilds to buy varying levels of standard. Perhaps add a PVP-restriction to its AOE abilities.
- Modify the guild system to have guild officer defined structure and ranks.
- Improve 'outgame' screens. Allow subsequent runs of the client to be full screen for outgame. Allow an outgame scene to be displayed at the login screen.
- Additional outpost building types (see the suggestion)
- Improve guild management interfaces, provide more details and abilities (see the suggestion).
- Extend outpost code to support a concept of 'homesteading' for guild members. Allow guilds to place guild buildings and players to place player buildings. Could lead to guild-owned hamlets.
- Improve the campfire code to allow creation of other objects, e.g. crates. (see the suggestion).
- Add tell/whisper windows or channels to the UI.
- Improve Ryzom Ring - see the suggestion.
- Additional logic components.
- Spawning of props.
- Ability to add sound effects.
- Scenario Repository - allow players to submit scenarios and other players to download from WebIG.
- Ability for a player to 'host' a scenario on the Ring servers.
- Additional mission types: global and faction based missions. Similar in concept to group and guild missions.
- Musical instruments (ala Star Wars Galaxies). See the suggestion.
- RP features such as food or drink. Allow PCs to visit bars/restaurants. Essentially throw-away consumables for dapper sinks and role play.
- Damageable and destructible outpost buildings. Damage affects production (if applicable.)
- Improve material deposits to not be impacted or dependent on EGS reboots: persist the status of the deposit so that the state survives shard reboots but implement seasonal re-population. Make the re-population cycle configurable per deposit zone.
Web Related Ideas
Replace Admin Panel
- Summary:Replace the admin panel with a responsive panel in the AMS
- Description: Ryzom Core has a admin panel which was developed quite some time ago, as such the web administration portal has some lacking features. Last year at GSoC the AMS was created as a new web interface for ryzom. We need to build the admin functionality into the ams.
- Technical Details: The new admin portal will need to have the features of the old one, including starting and stopping the shard and specific services, viewing the service logfiles etc. Additionally the AMS will need to be expanded so that you can create users in it manually and fix up a few lingering issues.
- Specification: TBD
- Difficulty: Medium
- Required Skills: PHP, C++, HTML, CSS
- Mentor: Botanic