GSoc2011Ideas

Version 4 (sfb, 03/04/2011 03:49 pm)

1 3 sfb
{{toc}}
2 1 sfb
3 1 sfb
h1. Ryzom Core GSoC 2011 Ideas
4 1 sfb
5 1 sfb
h2. Tools Related Ideas
6 1 sfb
7 1 sfb
h3. OVQT Translation Plugin
8 1 sfb
9 1 sfb
*Summary:* Implemenent basic Translation Tool frontend in Object Viewer Qt
10 1 sfb
*Description:* This tool will be a GUI  replacement of the existing translation_tool process. In addition to the  extraction, diff and merge functionality the tools should also provide  basic _wk_ worksheet editing capabilities. The tool should be able to  provide a map of phrases to other plugins.
11 1 sfb
*Technical Details:* This task will be using components in NeL (NLMISC, STRING_MAPPER), reusing two existing tools (words_dic_qt and translation_tool) and will be written as a plugin to Object Viewer Qt.
12 1 sfb
*Specification:* _TBD_
13 1 sfb
*Difficulty:* Medium
14 1 sfb
*Required Skills:* C++, Qt
15 1 sfb
*Mentor:* Matt Raykowski (sfb)
16 1 sfb
17 1 sfb
h3. Web-Based Translation Tool
18 1 sfb
19 1 sfb
*Summary:* Implement a web-frontend for providing translations to Ryzom Core phrase files.
20 1 sfb
*Description:* This tool will provide a  web-based frontend to the translation words dictionary (.uxt) and  phrases (words_LN.txt). It should allow users to signup and provide  translations to a variety of languages as well as suggestions for better  translations on existing translations. It should provide admins with  the ability to push and pull changes from this to the .txt/uxt files and  vice versa. The desired language of development for this tool is PHP  but reasonable justifications can be made for other languages. The ultimate goal is to provide an easy and secure way of 'crowd-sourcing' translations for Ryzom Core based projects.
21 1 sfb
*Technical Details:* This task will require both a frontend that provides an interface for users to edit/update translations but also a backend that merges the approved translation information into the actual phrase files. This backend process will also need to pull diffs from the phrase files (see translation_tool) to know what additional phrases need to be translated.
22 1 sfb
*Specification:* TBD
23 1 sfb
*Difficulty:* Medium
24 1 sfb
*Required Skills:* PHP
25 4 sfb
*Mentor:* Vianney Lecroart (acemtp)
26 1 sfb
27 1 sfb
h3. World Editor Conversion
28 1 sfb
29 1 sfb
*Summary:* Convert the legacy World Editor to Qt as an Object Viewer Qt Plugin
30 1 sfb
*Description:* Our current World Editor tool is  developed using Microsoft's MFC framework for its GUI. The primary goal  of this task is to convert the World Editor to Qt and load it into OVQT  as a plugin. In addition to the primary goal the various World Editor  plugins should be converted to OVQT plugins as well.
31 1 sfb
*Technical Details:* The new World Editor UI will be developed in Qt and loaded using OVQT's plugin architecture. World Editor-specific configuration information should be available as a separate page in the configuration settings dialog but should use global configuration where possible (e.g. search paths.) 
32 1 sfb
*Specification:* TBD
33 1 sfb
*Difficulty:* Very Difficult
34 1 sfb
*Required Skills:* C++, Qt
35 1 sfb
*Mentor:* Matt Raykowski (sfb)
36 1 sfb
37 1 sfb
h3. BNP Tools
38 1 sfb
39 1 sfb
*Summary:* Implement tools for managing BNP files.
40 1 sfb
*Description:* Create a WinZip-style tool for managing BNP files. Optimally it would integrate into GNOME and Windows.
41 1 sfb
*Technical Details:* The tool must be written in Qt and must contain the logic internally to accomplish this. It should be two parts: an executable with shell extensions and a DLL/SO containing the core logic and dialogs. The DLL/SO should also be able to be loaded as an OVQT plugin and dock as normal.
42 1 sfb
*Specification:* TBD
43 1 sfb
*Difficulty:* Easy
44 1 sfb
*Required Skills:* C++, Qt
45 4 sfb
*Mentor:* Vianney Lecroart (acemtp)
46 1 sfb
47 1 sfb
h3. Ryzom GUI Editor
48 1 sfb
49 1 sfb
*Summary:* Create a GUI editor for Ryzom's Interface Library
50 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.
51 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.
52 1 sfb
*Specification:* TBD
53 1 sfb
*Difficulty:* Very Difficult
54 1 sfb
*Required Skills:* C++, Qt
55 4 sfb
*Mentor:* Nuno Gonçalves (ulukyn)
56 1 sfb
57 1 sfb
h3. NeLNS Qt Displayer and Services Dashboard
58 1 sfb
59 1 sfb
*Summary:* Create a Qt UI for Ryzom Core Serivces and a Dashboard organizing all services.
60 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.
61 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.
62 1 sfb
*Specification:* TODO
63 1 sfb
*Difficulty:* Medium
64 1 sfb
*Required Skills:* C++, Qt
65 4 sfb
*Mentor:* Vianney Lecroart (acemtp)
66 1 sfb
67 1 sfb
h3. Ryzom Core  Blender Exporter
68 1 sfb
69 1 sfb
*Summary:* Create a GUI editor for Ryzom's Interface Library
70 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.)
71 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.
72 1 sfb
*Specification:* TBD
73 1 sfb
*Difficulty:* Medium
74 1 sfb
*Required Skills:* Python, C++, 3D Algorithms
75 1 sfb
*Mentor:* Matt Raykowski (sfb)
76 1 sfb
77 1 sfb
h3. Ryzom Core Landscape Editor Plugin
78 1 sfb
79 1 sfb
*Summary:* Create a landscape editor plugin for Object Viewer Qt
80 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.
81 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.
82 1 sfb
83 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.
84 1 sfb
85 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.
86 1 sfb
87 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.
88 1 sfb
*Specification:* TBD
89 1 sfb
*Difficulty:* Very Difficult
90 1 sfb
*Required Skills:* C++, Qt, 3D Algorithms
91 1 sfb
*Mentor:* Matt Raykowski (sfb)
92 1 sfb
93 1 sfb
h3. OVQT Build Gamedata Frontend Plugin
94 1 sfb
95 1 sfb
*Summary:* Create an OVQT plugin allowing execution and monitoring of build_gamedata.
96 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.
97 1 sfb
*Technical Details:* TBD
98 1 sfb
*Specification:* TBD
99 1 sfb
*Difficulty:* Medium
100 1 sfb
*Required Skills:* C++, Qt, Python
101 4 sfb
*Mentor:* Nuno Gonçalves (ulukyn)
102 2 sfb
103 2 sfb
h2. Ryzom Game Functionality
104 2 sfb
105 2 sfb
h3. Implement Guild Missions
106 2 sfb
107 2 sfb
*Summary:* Implement missions which can be accepted by specific guild roles and completed by any guild member.
108 2 sfb
*Description:* Ryzom Core current provides individual and team missions. Guild missions will function similar to team missions: a guild officer can approach a mission giver and accept missions on behalf of the guild. Guild members may complete that guild mission. The mission dialog box should differentiate between mission types (guild vs individual.) At a minimum two additional mission actions will need to be added to grant the guild money in reward for completing the mission or mission step, rather than granting money to the individual and to remove money from the guild as a penalty for failing a mission.
109 2 sfb
*Technical Details:* Much of the hard work is already accomplished through the team/group missions. Looking at CGuildMemberModule there's already a _pickMission_ method which is defaulted to false (preventing any guild members from picking up missions.) Implementing this in one of the higher grade classes such as CGuildHighOfficerModule will allow that grade of officer to pick missions. CMissionGuild already exists but is more or less a copy of CMissionTeam and will need to be cleaned up, uncommented and updated for guilds rather than teams. In order to demonstrate the new guild missions and mission actions a new mission will have to be created for Open Shard which requires a high officer to pick a guild mission from an NPC and then some member to complete the mission in a given amount of time. A thorough knowledge of mission_editor will not be required for this task.
110 2 sfb
*Specification:* TBD
111 2 sfb
*Difficulty:* Medium
112 2 sfb
*Required Skills:* C++
113 4 sfb
*Mentor:* Nuno Gonçalves (ulukyn)
114 2 sfb
115 2 sfb
h3. Implement Additional Sound Triggers
116 2 sfb
117 2 sfb
*Summary:* Implement additional sound triggers such as impulses and phrase mapping.
118 2 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.
119 2 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.
120 2 sfb
*Specification:* TBD
121 2 sfb
*Difficulty:* Medium
122 2 sfb
*Required Skills:* C++
123 2 sfb
*Mentor:* Matt Raykowski (sfb)