GSoc2009Ideas

Version 1 (kervala, 09/29/2010 07:49 pm)

1 1 kervala
h1. GSoc2009Ideas
2 1 kervala
3 1 kervala
{{toc}}
4 1 kervala
5 1 kervala
All GSoC ideas are rated on a simple 4-place scale: Easy, Moderate, Difficult and Extremely Difficult.
6 1 kervala
7 1 kervala
h2. NeL3D
8 1 kervala
9 1 kervala
h3. Implement new OpenGL backend driver in NeL3D
10 1 kervala
11 1 kervala
*Difficulty:* Difficult
12 1 kervala
*Description:*
13 1 kervala
Write a new OpenGL driver for NeL3D based on either OpenGL 2.0+ or OpenGL ES 2.0. The latter OpenGL implementation will be the more challenging effort. Writing an OpenGL 2.0+ driver would be a good step to providing the basis necessary for more modern OpenGL implementations and OpenGL ES 2.0 will set the basis for the future OpenGL 3.0 driver.
14 1 kervala
*Requirements:* C++, OpenGL
15 1 kervala
16 1 kervala
h3. Implement a native MacOS X implementation using OpenGL
17 1 kervala
18 1 kervala
*Difficulty:* Moderate to Difficult
19 1 kervala
*Description:*
20 1 kervala
Currently the NeL implementation for OS X relies upon X11 which is not a default feature for average end-users. We would like to create a custom native handler for the OpenGL driver for OS X systems. This will provide native window creation, screen management and events (keyboard and mouse input.)
21 1 kervala
*Requirements:* C++, OS X (Xcode), Cocoa, Objective-C
22 1 kervala
23 1 kervala
h3. Modularize OS/Platform/Architecture Code
24 1 kervala
25 1 kervala
*Difficulty:* Easy to Moderate
26 1 kervala
*Description:*
27 1 kervala
We would like to extract OS and platform specific code into separate code files that can be resolved at link-time as well as runtime. This will help clean a myriad of #ifdefs out of the code and will allow us, at runtime, to link libraries optimized for specific instruction sets (e.g. MMX).
28 1 kervala
*Requirements:* C++
29 1 kervala
30 1 kervala
h3. Create A Programmable Shader Framework
31 1 kervala
32 1 kervala
*Difficulty:* Extremely Difficult
33 1 kervala
*Description:*
34 1 kervala
We want to create a pluggable programmable shader framework that allow us to load shaders at runtime and allows the configuration of use of a specific shader langauge based  upon system support. This will give us the ability to allow graphic artists to write shaders for their models and terrain without requiring timely and bug prone modifications of the render pipeline and will eliminate the existing inefficient CVertexProgram architecture. This will also simplify our ability to support for existing built-in shader effects.
35 1 kervala
*Requirements:* C++, OpenGL *and* Direct3D, GLSL *and* HLSL (potentially Cg)
36 1 kervala
37 1 kervala
h3. Expand Shadow Rendering Support
38 1 kervala
39 1 kervala
*Difficulty:* Difficult
40 1 kervala
*Description:*
41 1 kervala
We need to fix shadow rendering to have more broad hardware support. We have a number of platforms in which shadows do not render properly.
42 1 kervala
*Requirements:* C++, OpenGL *and* Direct3D, potentially GLSL and HLSL.
43 1 kervala
44 1 kervala
h2. NeLMisc
45 1 kervala
46 1 kervala
h3. Implement Pluggable Scripting Framework
47 1 kervala
48 1 kervala
*Difficulty:* Difficult
49 1 kervala
*Description:*
50 1 kervala
We want to create a pluggable scripting framework with a reference implementation in Python or Lua. This framework will provide the essential wrapping of the NeL API so that any NeL-related activity can be accomplished through the reference implementation. The goal in this is to make it easier for new and existing projects to develop gameplay changes dynamically while limiting the impact of compilation. In addition if the reference implementation is in Python this provides a crucial step forward in simplifying the path to a Blender exporter.
51 1 kervala
*Requirements:* C++, Lua and/or Python
52 1 kervala
53 1 kervala
h3. Expand Image File Support
54 1 kervala
55 1 kervala
*Difficulty:* Easy to Moderate
56 1 kervala
*Description:*
57 1 kervala
We want to add file format support for more texture and image formats using a third-party library such as DevIL. The new functionality should be flexible enough to exclude formats that may not supported by the third party library based on the library compile-time options.
58 1 kervala
*Requirements:* C++
59 1 kervala
60 1 kervala
h2. NeLGeorges
61 1 kervala
62 1 kervala
Any ideas? Please add them!
63 1 kervala
64 1 kervala
h2. NeLPacs
65 1 kervala
66 1 kervala
h3. Create an Alternative Implementation of PACS
67 1 kervala
68 1 kervala
*Difficulty:* Difficult
69 1 kervala
*Description:*
70 1 kervala
There have been a number of request to have a "true" 3D collision library implemented for NeL using NeL's types and compatible with NeL's landscape. The primary challenge with this is compensating for the landscape without inducing undue performance losses. The two optimal choices for a potential third-party library to support would be either "Bullet":http://www.bulletphysics.com/Bullet/wordpress/ or "ODE":http://www.ode.org/. It would also be preferred if possible to maintain NLPACS as an API and change it to load the legacy functionality or the new functionality as a driver in the same manner we manage OpenGL vs. Direct3D.
71 1 kervala
*Requirements:* C++, Physics, ODE or Bullet.
72 1 kervala
73 1 kervala
h2. NeLNet
74 1 kervala
75 1 kervala
Any ideas? Please add them!
76 1 kervala
77 1 kervala
h2. NeLLigo
78 1 kervala
79 1 kervala
Any ideas? Please add them!
80 1 kervala
81 1 kervala
h2. NeLSound
82 1 kervala
83 1 kervala
h3. Complete NeLSound OpenAL Driver.
84 1 kervala
85 1 kervala
*Difficulty:* Moderate
86 1 kervala
*Description:*
87 1 kervala
The OpenAL sound driver isn't entirely complete and needs to be reviewed to ensure that it fulfills all of the feature requirements of NeLSound. Additionally a better mechanism for handling music may need to be considered.
88 1 kervala
*Requirements:* C++, OpenAL
89 1 kervala
90 1 kervala
91 1 kervala
h3. Sound Source Loading System
92 1 kervala
93 1 kervala
*Difficulty:* Moderate
94 1 kervala
*Description:*
95 1 kervala
Currently supported sound formats are dictated by the sound driver in use. We want to add a sound source loading system into the low-level API that exists between high level sound management and the driver. This would ideally load into a driver independent storage class and be compatible with the sound drivers we currently use (DirectSound, XAudio2, FMOD and OpenAL).
96 1 kervala
*Requirements:* C++
97 1 kervala
98 1 kervala
h3. Sound Occlusion and Obstruction Support 
99 1 kervala
100 1 kervala
*Difficulty:* Easy
101 1 kervala
*Description:*
102 1 kervala
We would like to implement occlusion and obstruction using hi/med/low pass frequency filtering available in the sound APIs.
103 1 kervala
*Requirements:* C++
104 1 kervala
105 1 kervala
h3. Custom Reverb Effect Algorithm
106 1 kervala
107 1 kervala
*Difficulty:* Easy
108 1 kervala
*Description:*
109 1 kervala
We would like to implement a custom algorithm for applying the _RoomSize_ parameter on a reverb parameter structure to get the same reverb effect on all APIs. This would make each driver's sound consistent.
110 1 kervala
*Requirements:* C++
111 1 kervala
112 1 kervala
113 1 kervala
h2. NeLNS
114 1 kervala
115 1 kervala
h3. New and Improved Login Service
116 1 kervala
117 1 kervala
*Difficulty:* Moderate
118 1 kervala
*Description:*
119 1 kervala
We would like to update the Login Service (LS) and the supporting client classes to be more flexible in a variety of ways. We would like it to have more controls and flexibility around managing and securing user-operated shards. One of the goals would be to provide more information downstream to the shard (via the LS connectivity to the Welcome Service) as well as providing a reference implementation of a web-based account management tool. This web-based tool would be independent of the admin service tools.
120 1 kervala
*Requirements:* C++, PHP
121 1 kervala
122 1 kervala
h2. NeL Tools
123 1 kervala
124 1 kervala
h3. Convert Object Viewer to be Qt-based.
125 1 kervala
126 1 kervala
*Difficulty:* Moderate
127 1 kervala
*Description:*
128 1 kervala
One of the primary tools used by programmers and designers alike is the Object Viewer. It is currently a Windows only tool and we want to rewrite this tool using Qt, ensuring that it is cross platform. The finished product must run on Windows, Linux and Mac OS X.
129 1 kervala
*Requirements:* C++, Qt
130 1 kervala
131 1 kervala
h3. Convert Georges Editor to Qt
132 1 kervala
133 1 kervala
*Difficulty:* Moderate
134 1 kervala
*Description:*
135 1 kervala
One of the tools used by programmers is the Georges Editor. It is a tool used to edit data loaded into the game. It is currently a Windows only tool and we want to rewrite this tool using Qt, ensuring that it is cross platform. The finished product must run on Windows, Linux and Mac OS X.
136 1 kervala
*Requirements:* C++, Qt
137 1 kervala
138 1 kervala
h3. Complete Porting of Words Dictionary
139 1 kervala
140 1 kervala
*Difficulty:* Moderate
141 1 kervala
*Description:*
142 1 kervala
One of the tools used by programmers and content editors is the Words Dictionary. It is a tool used to edit I18N and phrase data for the game. It is currently a Windows only tool and we want to complete the rewrite of this tool using Qt, ensuring that it is cross platform. The finished product must run on Windows, Linux and Mac OS X. In addition we want to investigate the possibility of adding more I18N functionality into this tool.
143 1 kervala
*Requirements:* C++, Qt
144 1 kervala
145 1 kervala
h3. Create Blender Exporter
146 1 kervala
147 1 kervala
*Difficulty:* Difficult
148 1 kervala
*Description:*
149 1 kervala
Presently NeL only officially supports 3DStudio MAX with a contributed plugin for Maya. We would like to expand our modeler support to include an Open Source modeling package, Blender. This exporter must be capable of exporting 3D mesh, animation and landscapes.
150 1 kervala
*Requirements:* C++, Blender, Python
151 1 kervala
152 1 kervala
153 1 kervala
h3. Create COLLADA Converter
154 1 kervala
155 1 kervala
*Difficulty:* Extremely Difficult
156 1 kervala
*Description:*
157 1 kervala
Presently NeL only officially supports 3DStudio MAX with a contributed plugin for Maya. We would like to expand our modeler support to include COLLADA-supporting modeling softwares. This exporter must be capable of exporting 3D mesh, animation and landscapes. Due to the nature of COLLADA some work will be necessary in the NeL3D module to add support for deficient areas of the 3D engine, namely adding more interpolation techniques.
158 1 kervala
*Requirements:* C++, 3D Algorithms
159 1 kervala
160 1 kervala
h3. Web-based Translation Chain Tool
161 1 kervala
162 1 kervala
*Difficulty:* Easy
163 1 kervala
*Description:*
164 1 kervala
We would like to create a web-based tool chain for managing translations. This would provide an easier way for words and phrases to be submitted to the I18N files for translation efforts.
165 1 kervala
*Requirements:* PHP
166 1 kervala
167 1 kervala
168 1 kervala
h3. Landscape Editor
169 1 kervala
170 1 kervala
*Difficulty:* Difficult
171 1 kervala
*Description:*
172 1 kervala
We would like an external tool for for editing and painting landscape. This tool would need to be capable of generating and editing large bezier patches as well as providing varying levels of detail editing and ultimately the ability to save to NeL-compatible zone files.
173 1 kervala
*Requirements:* C++, 3D Algorithms
174 1 kervala
175 1 kervala
h3. BNP Tool Extensions
176 1 kervala
177 1 kervala
*Difficulty:* Easy to Moderate
178 1 kervala
*Description:*
179 1 kervala
BNP is a virtual file system we use to package game information and media data. At present the tools for manipulating BNP files is simple. We would like to add one or more of the following extensions to the BNP tool chain:
180 1 kervala
* Make a kio for KDE platforms.
181 1 kervala
* Make a FUSE based file system for Linux.
182 1 kervala
* Make a shell extension for Windows.
183 1 kervala
* WinZip-style application for editing/managing them (written in Qt).
184 1 kervala
185 1 kervala
*Requirements:* C++, Varying
186 1 kervala
187 1 kervala
h3. Fix S3TC Texture Compression
188 1 kervala
189 1 kervala
*Difficulty:* Easy
190 1 kervala
*Description:*
191 1 kervala
The NeL tool chain still performs S3TC texture compression through the use of a deprecated library no longer available for download. We would like to replace our reliance on this library through the use of a new third-party library such as DevIL or libsquish.
192 1 kervala
*Requirements:* C++
193 1 kervala
194 1 kervala
h3. Expand Object Viewer Zone Support
195 1 kervala
196 1 kervala
*Difficulty:* Moderate
197 1 kervala
*Description:*
198 1 kervala
Visualizing objects/shapes, zones (landscanpe and clusters/portals (indoor/outdoor scenes) is presently accomplished through three GUI tools: Object Viewer, ZViewer and Cluster Viewer. We want to consolidate this functionality into Object Viewer.
199 1 kervala
*Requirements:* C++
200 1 kervala
201 1 kervala
h3. Create a GUI Interface for 3D Pipeline
202 1 kervala
203 1 kervala
*Difficulty:* Easy to Moderate
204 1 kervala
*Description:*
205 1 kervala
We would like to create a Qt-based GUI application capable of performing the build_gamedata functionality but we would like to eliminate the dependency on that pipeline for this tool and consolidate the functionality and logic of the steps into the tool. This tool would allow programmers and graphic designers to visually manage the steps of the process.
206 1 kervala
*Requirements:* C++, Qt
207 1 kervala
208 1 kervala
h3. Fix or Refactor Panoply Maker
209 1 kervala
210 1 kervala
*Difficulty:* Easy to Moderate
211 1 kervala
*Description:*
212 1 kervala
Panoply Maker is a simple tool to generate textures via a source with configured variations in large amounts. For example Panoply Maker would take a texture of a shirt and generate textures of many colored shirts. Panoply Maker does not work or compile out of the box. We would like to investigate the delivered functionality of this tool and refactor it more intelligently as well as solving our compilation problem.
213 1 kervala
*Requirements:* C++
214 1 kervala
215 1 kervala
h2. NeL Builds and Ports
216 1 kervala
217 1 kervala
h3. Configure NeL To Build via CMake
218 1 kervala
219 1 kervala
*Difficulty:* Easy
220 1 kervala
*Description:*
221 1 kervala
NeL presently uses both a custom build system as well as autotools on Linux and a variety of Microsoft Visual Studio projects dependent on the version the developer is using. We're in the process of replacing these build systems with CMake. The goal of this project would be to complete the CMake transition, create custom packaging scripts and verify that installs work with appropriate variations. This will involve C++ programming to alter the tools, services and applications to more intelligently find their default configuration information.
222 1 kervala
*Requirements:* C++, CMake
223 1 kervala
224 1 kervala
h2. NeL Samples and Tests
225 1 kervala
226 1 kervala
h3. Expand Unit Testing
227 1 kervala
228 1 kervala
*Difficulty:* Easy
229 1 kervala
*Description:*
230 1 kervala
NeL presently uses CppTest for unit testing. We are testing core areas and complex modules that are newcomers to NeL. We would like to expand the unit testing to all of the libraries and modules within NeL.
231 1 kervala
*Requirements:* C++, CppTest
232 1 kervala
233 1 kervala
234 1 kervala
h3. Create Advanced Sound Sample
235 1 kervala
236 1 kervala
*Difficulty:* Easy to Moderate
237 1 kervala
*Description:*
238 1 kervala
We would like to create an advanced sound sample that allows the user to experience more of the features and functionality of the sound system. This sample would expand upon the existing sound_sources sample by adding a _very basic_ 3D presentation, music, ambient sounds and what ever other features of NeLSound are able to be completed within the project time.
239 1 kervala
*Requirements:* C++
240 1 kervala
241 1 kervala
h3. Advanced 3D Samples
242 1 kervala
243 1 kervala
*Difficulty:* Moderate
244 1 kervala
*Description:*
245 1 kervala
We would like to write a series of samples demonstrating the more advanced features of the 3D engine. The list of features will be dependent upon time and resources but will include a simple landscape demonstration, animations, particles and special effects. 
246 1 kervala
*Requirements:* C++
247 1 kervala
248 1 kervala
h2. Snowballs
249 1 kervala
250 1 kervala
h3. Implement CEGUI Support in Snowballs
251 1 kervala
252 1 kervala
*Difficulty:* Moderate
253 1 kervala
*Description:*
254 1 kervala
The GUI for Snowballs is very rudimentary. We would like to implement our NeL CEGUI Renderer for Snowballs and add better menu management to the game.
255 1 kervala
*Requirements:* C++, XML
256 1 kervala
257 1 kervala
h3. Implement Login Control in Snowballs
258 1 kervala
259 1 kervala
*Difficulty:* Easy
260 1 kervala
*Description:*
261 1 kervala
Snowballs allows users to log in to a shard but the functionality to allow the user to interactively enter their account information, choose a shard to connect to and choose a character from that shard is missing. This functionality is crucial to putting the game back into a playable state.
262 1 kervala
*Requirements:* C++
263 1 kervala
264 1 kervala
h3. Implement Sound Effects in Snowballs
265 1 kervala
266 1 kervala
*Difficulty:* Moderate
267 1 kervala
*Description:*
268 1 kervala
Snowballs needs to be updated to take advantage of the NeLSound module. We want to add functionality into Snowballs to play sound effects for actions, interface interactions, environmental sounds and background music.
269 1 kervala
*Requirements:* C++
270 1 kervala
271 1 kervala
h3. Implement NeL Entities in Snowballs
272 1 kervala
273 1 kervala
*Difficulty:* Moderate
274 1 kervala
*Description:*
275 1 kervala
We want to update the Snowballs services to use NeL entities to track online players. This will allow better player management as functionality is added to the game and allows a shard administrator to use the player lookup facilities of the admin web-tool.
276 1 kervala
*Requirements:* C++
277 1 kervala
278 1 kervala
h3. Implement Basic Game Logic in Snowballs
279 1 kervala
280 1 kervala
*Difficulty:* Easy to Moderate
281 1 kervala
*Description:*
282 1 kervala
Currently Snowballs has none of the original game logic. We would like to add some of this logic in both from a client and from a server perspective. Examples of new functionality would be the ability to track hits in a database, implement "hit-effects" such as freezing in place for a period of time.
283 1 kervala
*Requirements:* C++
284 1 kervala
285 1 kervala
h3. Implement Spacial Chat in Snowballs
286 1 kervala
287 1 kervala
*Difficulty:* Easy
288 1 kervala
*Description:*
289 1 kervala
Snowballs only has "global" chat. We would like to add the concept of spacial chat to the game so that "listeners" are limited by distance.
290 1 kervala
*Requirements:* C++
291 1 kervala
292 1 kervala
h3. Create Snowballs Game Page
293 1 kervala
294 1 kervala
*Difficulty:* Easy
295 1 kervala
*Description:*
296 1 kervala
We would like to create a players-page for Snowballs that allows players to view scores, high scores, their character information and more. This could be comprised of simple shard level information and then a larger game-level site that allows the viewing of all configured shard information.
297 1 kervala
*Requirements:* PHP
298 1 kervala
299 1 kervala
h3. Build Snowballs AI Service
300 1 kervala
301 1 kervala
*Difficulty:* Difficult
302 1 kervala
*Description:*
303 1 kervala
We would like to build a simple AI service for snowballs that is able to perform scripted events, control entities in a semi-intelligent fashion.
304 1 kervala
*Requirements:* C++
305 1 kervala
306 1 kervala
h2. Miscellaneous
307 1 kervala
308 1 kervala
h3. Implement MySQL Helper Library
309 1 kervala
310 1 kervala
*Difficulty:* Difficult
311 1 kervala
*Description:*
312 1 kervala
Several of the NeLNS services use MySQL to persist information such as shard statistics, player and character information. We would like to create a helper library to simplify the NeL-developer's exposure to MySQL. This library would simplify calls to SQL, handle error catching and abstract the MySQL such that the NeL developer is only exposed to it as a last resort. It may be possible to utilize another library to do this, but a reference implementation using a NeLNS service must be created to demonstrate.
313 1 kervala
*Requirements:* C++
314 1 kervala
315 1 kervala
h2. Need To Discuss
316 1 kervala
317 1 kervala
The following ideas can be discussed further if anyone is interested in them. They are no less important than the others but have no received sufficient discussion by the community to determine the requirements or priority. Do not be afraid to ask about these:
318 1 kervala
319 1 kervala
* Create new Qt-based Log Analyzer
320 1 kervala
** Add additional plugins or create new scriptable functionality for analyzing logs.
321 1 kervala
322 1 kervala
* Fix NeLNS Admin deficiencies
323 1 kervala
** Create a log server compliant with CNetDisplayer
324 1 kervala
** Update admin web app to be capable of using the new logging server
325 1 kervala
** Modernize the admin web app (Web 2.0)
326 1 kervala
327 1 kervala
* Create an entity management layer that provides pluggable gameplay logic (behavior) identifying information (properties.)
328 1 kervala
** For inspiration look at "CEL":http://www.crystalspace3d.org/main/CEL
329 1 kervala
330 1 kervala
* As an extension on the audio and bitmap file support, support for video playback within nel would be pretty interesting as well.
331 1 kervala
** Perhaps it could be useful to have all of these in a new nel media library, to avoid putting too many external dependencies within the core libraries.
332 1 kervala
333 1 kervala
* Convert and modernize the Tile Editor interface to be Qt-based.
334 1 kervala
** This is already mostly done, but not modernized. It will need to be completed, tested and merged into the source tree.
335 1 kervala
** See "Issue 219":http://dev.ryzom.com/issues/219
336 1 kervala
337 1 kervala
* Web based (ajax, googlemaps) World editor to edit level design.