GSoc2012Ideas

Version 1 (sfb, 02/06/2012 02:42 pm)

1 1 sfb
{{toc}}
2 1 sfb
3 1 sfb
h1. Ryzom Core GSoC 2012 Ideas
4 1 sfb
5 1 sfb
h2. Tools Related Ideas
6 1 sfb
7 1 sfb
h3. Ryzom GUI Editor
8 1 sfb
9 1 sfb
*Summary:* Create a GUI editor for Ryzom's Interface Library
10 1 sfb
*Description:* Ryzom Core has a robust GUI system which is driven through XML files. This means that it is easy to layout new dialogs and modify existing ones provided you understand the elements in the XML dialogs. To make modifying and adding new dialogs easier we want to add a GUI Editor plugin to OVQT. For examples you could look at CEGUILayoutEditor or MyGUI Layout Editor.
11 1 sfb
*Technical Details:* The tool should be written as an OVQT plugin. Before the actual editor is written the interface code (interface_v3) will need to be modularized into a library that the plugin can utilize independent of the client source code. This may also mean modularizing the CDB system. The GUI Editor does not need the ability to read the CDB system, the stand-in labels would be sufficient.
12 1 sfb
*Specification:* TBD
13 1 sfb
*Difficulty:* Very Difficult
14 1 sfb
*Required Skills:* C++, Qt
15 1 sfb
*Mentor:* TBD
16 1 sfb
17 1 sfb
h3. NeLNS Qt Displayer and Services Dashboard
18 1 sfb
19 1 sfb
*Summary:* Create a Qt UI for Ryzom Core Serivces and a Dashboard organizing all services.
20 1 sfb
*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.
21 1 sfb
*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.
22 1 sfb
*Specification:* TODO
23 1 sfb
*Difficulty:* Medium
24 1 sfb
*Required Skills:* C++, Qt
25 1 sfb
*Mentor:* TBD
26 1 sfb
27 1 sfb
h3. Ryzom Core  Blender Exporter
28 1 sfb
29 1 sfb
*Summary:* Create a GUI editor for Ryzom's Interface Library
30 1 sfb
*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.)
31 1 sfb
*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.
32 1 sfb
*Specification:* TBD
33 1 sfb
*Difficulty:* Medium
34 1 sfb
*Required Skills:* Python, C++, 3D Algorithms
35 1 sfb
*Mentor:* TBD
36 1 sfb
37 1 sfb
h3. Ryzom Core Landscape Editor Plugin
38 1 sfb
39 1 sfb
*Summary:* Create a landscape editor plugin for Object Viewer Qt
40 1 sfb
*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.
41 1 sfb
*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.
42 1 sfb
43 1 sfb
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.
44 1 sfb
45 1 sfb
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.
46 1 sfb
47 1 sfb
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.
48 1 sfb
*Specification:* TBD
49 1 sfb
*Difficulty:* Very Difficult
50 1 sfb
*Required Skills:* C++, Qt, 3D Algorithms
51 1 sfb
*Mentor:* TBD
52 1 sfb
53 1 sfb
h3. OVQT Build Gamedata Frontend Plugin
54 1 sfb
55 1 sfb
*Summary:* Create an OVQT plugin allowing execution and monitoring of build_gamedata.
56 1 sfb
*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.
57 1 sfb
*Technical Details:* TBD
58 1 sfb
*Specification:* TBD
59 1 sfb
*Difficulty:* Medium
60 1 sfb
*Required Skills:* C++, Qt, Python
61 1 sfb
*Mentor:* TBD
62 1 sfb
63 1 sfb
h3. Accounts Management Tool
64 1 sfb
65 1 sfb
*Summary:* Create a web-based account management tool.
66 1 sfb
*Description:* The tool will provide a way to sign up properly, recover a lost password, manage the personal data (change the password, etc). It will provide a back office to manage the accounts (statistics, account temporary ban, etc).
67 1 sfb
*Technical Details:* TBD
68 1 sfb
*Specification:* TBD
69 1 sfb
*Difficulty:* Medium
70 1 sfb
*Required Skills:* C++, Qt, Python
71 1 sfb
*Mentor:* TBD
72 1 sfb
73 1 sfb
h2. Ryzom Game Functionality
74 1 sfb
75 1 sfb
h3. Implement Additional Sound Triggers
76 1 sfb
77 1 sfb
*Summary:* Implement additional sound triggers such as impulses and phrase mapping.
78 1 sfb
*Description:* We would like to add the ability to do things such as  send "play sound" impulses from mission scripts and the ability to map a phrases to a sound samples. The idea is to provide mission creators more depth and control over their events and dialog.
79 1 sfb
*Technical Details:* The "play sound" impulse should be fairly easy. We will need to implement a mission action similar to CMissionActionPopupMsg which in simple terms uses the PlayerManager to send a "USER:POPUP" impulse to the client. The phrase mapping will be more difficult but could be done fairly simply by combining the locale name (e.g. EN or FR) to the end of the phrase (e.g. WELCOME_TO_RYZOM) creating a new sample named "WELCOME_TO_RYZOM_EN" - if such a sample exists in the sample bank play the sound from a source located at the speaker. This will allow us to have limited verbal dialog.
80 1 sfb
*Specification:* TBD
81 1 sfb
*Difficulty:* Medium
82 1 sfb
*Required Skills:* C++
83 1 sfb
*Mentor:* TBD