Roadmap Proposal
Overview
Version numbering scheme similar to SDL, ref https://wiki.libsdl.org/CategoryVersion
The version consists of three segments (X.Y.Z)
X = Major Version, which increments with massive changes, additions, and enhancements
Y = Minor Version, which increments with backwards-compatible changes to the major revision
Z = Patchlevel, which increments with fixes to the minor revision
Development planning
A full feature report is to be made on every major/minor release point, containing the list of features which are flagged as a stable part of this release, as well as a thorough usability testing for direction adjustment. This is to be used to replan and adjust the direction of the following release points.
Status
We are currently at version 0.9.0. The next release will be 0.9.1 and contain several bugfixes.
Version 1
General aims
- Remain fully compatible with Ryzom Live and further Version 1 source content data (source assets and leveldesign).
- Minor versions may break compatibility with Ryzom Live binary client data (georges sheets only). Binary client data compatibility with Ryzom Live provided by compatibility branch
- Minor versions May break compatibility with Ryzom Live network connection (msg.xml and database.xml differences only), compatibility must only require the correct msg.xml version to be used, compatibility also provided by the compatibility branch
- (
Fully compatible with Ryzom Live on default branch provided the proper content data build is used in v1.0; further minor versions may break network; use a compatibility branch for using the Ryzom Live data build)
Major engine and content breaking feature changes, are deferred to version 2. Feature additions that are compatible or easily upgradeable to will be added to version 1.
v1.0 - Stable engine and data pipeline (2017 FEB/APR)
Make the v1.0 release when the following goals have been reached.
- Maximize platform compatibility
- Maximize code performance
- Full 64bit support
- Implement any missing or incomplete features in the engine
- Remove all unused and unmaintained code paths *(1)
- Remove backwards compatibility hacks *(1)
- Ensure all original Nevrax tools and samples are functional (including the MFC tools) (v1.0 does not wait for the Qt tools)
- More streamlined web service and shard setup process (see Web Services Installer Design Doc)
Missing, broken or nearly complete features to be fully implemented
- Lens flare (occlusion queries) on AMD/ATI cards in OpenGL driver - FIXED
- Wind Tree VP broken on AMD/ATI cards in Direct3D driver
- Low pass filter for sound occlusion *(2)
- Adjust reverb effects to sound as originally intended (DirectSound is the reference implementation on which the Ryzom sounds were implemented) *(2)
- Load reverb effects from a set of georges sheets (provided with sound sheets) *(2)
- 3ds Max crashes on XRefs and Skinning modifier
- Cross-platform and platform aware executable patching
- Sound build pipeline settings for RC *(2)
Deprecated features to be removed
- Sound user var bindings are to be removed in favour of sound groups *(1)
- Remove FMod driver *(1)
- Remove DSound driver *(1)
- Remove DirectInput (see game-controller branch)
Deliverables
- Working shard with Silan, the old newbielands (mostly empty) and Ryzom Ring fully functioning (without pr maps)
- Minimal sample sound data for reference (incl sound sheets) (plus sound anim sheets, as they are part of animation data)
*(1) To be done on a separate branch, and patched in at v1.0 release. A 0.x release will be made without these breaking changes.
*(2) Audio will be done post-funding.
v1.1 - Cross-platform tools, new features
Make the v1.1 release when the following goals have been reached. These features are not part of v1.0 because they will take longer (need testing), and depend on a stable engine feature set.
- All MFC tool functionality should be available from Ryzom Core Studio
- Ryzom Core Studio must be stable, user friendly and reliable (and must be thoroughly tested)
New features
- Support for Game Controllers in engine (not yet client, see v1.2)
- Support for Oculus Rift 0.4.0 SDK
- Configuration option for Headphones (with HMD and headphones need to rotate audio listener with camera, with speakers audio position stays in place)
v1.2 - Cosmetics
Tools
- Upgrade tools to Qt5 and use dark paletted Fusion theme (palette sent by mail to dfighter)
Login Screen and Character Selection
- Relative positioning for multiple resolutions
- Full-screen character selection
- Re-do the launcher screen to have a 3D animated background
- Asynchronous loading in loading screens to have animated loading screens
Ingame
- Controller and HMD friendly version of the user interface (Oculus Rift)
v1.3 - Cross-platform content pipeline
Tools
- Landscape modeling tool
- Export 3d data from any format (note: files are scenes, not single shapes, must support skeletons, animations, etc)
- NeL node properties editor (separate metadata file next to asset scene, attach by node name)
- NeL Material editor (similar method as NeL node props editor, but attach by material name rather than by node name)
v1.any - Other features, to be planned
Graphics and Engine Utilities
- Release fully v1 compatible OpenGL 3.3 driver
- Support for normal maps (possibly only for the GL3 driver) (only possible at the moment for dynamically lit models, not for static landscape)
- Add (optional) fully featured webbrowser to NLGUI
- Camera effects, to be tested and merged in, needs to be integrated with haptic controllers (note: this breaks network compatibility due to changes in msg.xml)
Ryzom Core API Service
- Provide real time access to the guild and character PDRs
- Provide history on game events such as mob kills, deaths, location visits, etc.
Gameplay
- Spires (complete and provide demo on the demo shard)
Ryzom Ring
- Ring scenario hosting without require user to be logged in
- (Add sound effects to scenarios)
- (Expand the variety of props able to be spawned)
- Scenario Repository (allow players to share/rate scenarios easily)
Version 2
Major breaking changes to the engine are put in v2. (This allows the tools to be fully developed without the engine completely changin)
Start work on v2 after v1.0 is released (rather passively than actively), simultaneously with v1.1 (or later).
No backwards compatibility with binary client data with v1.0 will be provided. Several file formats may be changed fundamentally.
Do not expect these features anytime soon, ever.
v2.0
- Remove OpenGL 1.2 and Direct3D 9 drivers
- (Maybe) Mantle/DX12 style rendering backend (also OpenGL) (using pipeline state objects and command buffers, multi threaded, etcetera)
- Multi threaded rendering
- Implement deferred rendering model
- PBR shading model
- Replace CMaterial with CMaterial and CMaterialParams (making material seperate from shape, materialparams is part of shape)
- CMaterial refers to the shader setup, which is part of the driver pipeline state object
- CMaterialParams are the per-shape material parameters, which consist of textures and uniform buffer objects
- Replace CPU based MRM and skinning with GPU skinning and simple model-swap LOD
- Implement optional 16-byte alignment model for vertex buffers (for faster access from vectorized sources) (only used for streaming buffers) (use this for particles)
- Need a new and higher quality lightmapper with support for normals (exporting direction and spread in addition to just the light value)
- Need a tool to auto generate LOD meshes (similar to Simplygon)
- Revamp the landscape rendering using GPU tesselation. Add support for normal maps and fine roughness texture for very fine tesselation. Keep bezier patch model. Keep near/far model. Far model does not tesselate at all. May need to use sparse texture maps.
- Physics (jumping)