Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »


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 [www.ryzom.com 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

Account Management Web Application

  • Summary: Create a basic account management and back office administration web application.
  • Description: Ryzom Core is presently shipped enabled to create new accounts without validation or verification. The idea behind this would be to create a new web application that would allow for basic account creation with email validation and CAPTCHA support. The tool would allow the player the ability to manipulate various pieces of their personal profile as well as to change their account settings such as their password. The back office component would need to provide the ability for game administrators to perform basic CRUD operations on player accounts as well as the ability to edit their permissions. It should also provide a central place to edit bans. The application would ideally be complimentary to the WebTT tool (written in CakePHP and sharign session and user information with it.)
  • Technical Details: The web application will be a basic CRUD application in the first phase with refinements to apply. It should be template driven and the data saved should be normalized appropriately to make future customization easy.
  • SpecificationTBD
  • Difficulty: Medium
  • Required Skills: PHP
  • Mentor: Matthew Lagoe (Botanic)

Account Management Drupal Module

  • Summary: Create a basic account management and back office administration web application.
  • Description: Ryzom Core is presently shipped enabled to create new accounts without validation or verification. The idea behind this would be to create a new web application that would allow for basic account creation with email validation and CAPTCHA support. The tool would allow the player the ability to manipulate various pieces of their personal profile as well as to change their account settings such as their password. The back office component would need to provide the ability for game administrators to perform basic CRUD operations on player accounts as well as the ability to edit their permissions. It should also provide a central place to edit bans. The application would ideally be complimentary to the WebTT tool (written in CakePHP and sharign session and user information with it.)
  • Technical Details: The web application will be a basic CRUD application in the first phase with refinements to apply. It should be template driven and the data saved should be normalized appropriately to make future customization easy. A initial version of the module is in development Ryzom Core Drupal Module
  • SpecificationTBD
  • Difficulty: Medium
  • Required Skills: PHP, Drupal
  • Mentor: Matthew Lagoe (Botanic)

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 Maya Exporter

  • Summary: Create an exporter for the Maya modelling application.
  • Description: Ryzom Core has one fully functional exporter for its game data pipeline: 3DSMAX. 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). Note that the student will need to download and use the free 13th month student edition of Maya.
  • Technical Details: At a bare minimum we need the ability to export shapes, animations, skeletons and other objects out from Maya. 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 within Maya. A fair portion of the basic ground work of an exporter already exists for the student to review at: http://werewolf2.svn.sourceforge.net/viewvc/werewolf2/trunk/tools/maya/
  • Specification: TBD
  • Difficulty: Medium
  • Required Skills: C++, 3D Algorithms, Maya API and MEL.
  • Mentor: Matt Raykowski (sfb)

Ryzom Core DAE Converter

  • Summary: Create an converter for DAE's exported from modeling applications.
  • Description: Ryzom Core has one fully functional exporter for its game data pipeline: 3DSMAX. 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). Note that the student will need to download and use the free 13th month student edition of Maya.
  • Technical Details: At a bare minimum we need the ability to export shapes, animations, skeletons and other objects out from Maya. 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.
  • 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: Matt Raykowski (sfb)

OVQT Build Gamedata Frontend Plugin

  • Summary: Create an OVQT plugin allowing execution and monitoring of build_gamedata.
  • Description: build_gamedata is a Python-based tool that automatically exports and builds gamedata. The purpose of this task is to create a plugin for Object Viewer Qt that provides a way to execute the various stages of the pipeline, to view the logging/debugging and provide basic workflow status. In addition to this the build_gamedata workflow should be represented in some form - either tree view or graphical - and allow certain stages to be run directly. This will require modifying the build_gamedata tool so both C++ and limited Python will be required.
  • Technical Details: TBD
  • Specification: TBD
  • Difficulty: Medium
  • Required Skills: C++, Qt, Python
  • Mentor: TBD

Server Related Ideas

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 Statistics Services

  • Summary: Improve PDSS and implement additional commands.
  • Description: The PDSS service provides the ability to schedule command execution at an hourly and at a daily interval. In addition it collects a fixed set of data. It would be helpful to begin adding the ability to query live runtime data such as the number of mobs in region, the number of mobs killed, the number of a specific item and so on. All of the work to schedule and output data is manually created on the server using pdss_css scripts and the output is locally stored. In order to decentralize the presentation of this collected data it would need a messaging API that would allow services (or PHP scripts capable of sending CMessage objects) to upload/update scripts and retrieve information.
  • Technical Details: The goals in this task would be to provide a more flexible scheduling mechanism, an expansion of collectable data and additional service-level control commands for upload/retrieval of data and scripts.
  • Specification: TBD
  • Difficulty: Medium
  • Required Skills: C++, PHP
  • Mentor: TBD

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: TBD

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: The Ryzom Core client is currently reliant upon cURL and LibWWW for the retrieval and parsing of web content (specifically for WebIG.) LibWWW is no longer actively maintained and distributed in the main Linux distributions. This task would undertake replacing LibWWW with an alternative.
  • Technical Details: Determine the alternative frameworks (e.g. LibXML HTTP Parser, Berkelium, etc). Remove the LibWWW code and replace it with the alternative implementation. Simplify code where possible and document the design. Must maintain all special language extensions (e.g. the lua tag) and other Ryzom specific deviations from the HTML standard.
  • Specification: TBD
  • Difficulty: Medium
  • Required Skills: C++
  • Mentor: TBD

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: TBD

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.
  • Technical Details: TBD
  • Specification: TBD
  • Difficulty: Easy
  • Required Skills: C++, OpenGL
  • Mentor: TBD

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.
  • No labels