GSoc2009Ideas

All GSoC ideas are rated on a simple 4-place scale: Easy, Moderate, Difficult and Extremely Difficult.

NeL3D

Implement new OpenGL backend driver in NeL3D

Difficulty: Difficult
Description:
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.
Requirements: C++, OpenGL

Implement a native MacOS X implementation using OpenGL

Difficulty: Moderate to Difficult
Description:
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.)
Requirements: C++, OS X (Xcode), Cocoa, Objective-C

Modularize OS/Platform/Architecture Code

Difficulty: Easy to Moderate
Description:
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).
Requirements: C++

Create A Programmable Shader Framework

Difficulty: Extremely Difficult
Description:
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.
Requirements: C++, OpenGL and Direct3D, GLSL and HLSL (potentially Cg)

Expand Shadow Rendering Support

Difficulty: Difficult
Description:
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.
Requirements: C++, OpenGL and Direct3D, potentially GLSL and HLSL.

NeLMisc

Implement Pluggable Scripting Framework

Difficulty: Difficult
Description:
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.
Requirements: C++, Lua and/or Python

Expand Image File Support

Difficulty: Easy to Moderate
Description:
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.
Requirements: C++

NeLGeorges

Any ideas? Please add them!

NeLPacs

Create an Alternative Implementation of PACS

Difficulty: Difficult
Description:
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 or ODE. 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.
Requirements: C++, Physics, ODE or Bullet.

NeLNet

Any ideas? Please add them!

NeLLigo

Any ideas? Please add them!

NeLSound

Complete NeLSound OpenAL Driver.

Difficulty: Moderate
Description:
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.
Requirements: C++, OpenAL

Sound Source Loading System

Difficulty: Moderate
Description:
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).
Requirements: C++

Sound Occlusion and Obstruction Support

Difficulty: Easy
Description:
We would like to implement occlusion and obstruction using hi/med/low pass frequency filtering available in the sound APIs.
Requirements: C++

Custom Reverb Effect Algorithm

Difficulty: Easy
Description:
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.
Requirements: C++

NeLNS

New and Improved Login Service

Difficulty: Moderate
Description:
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.
Requirements: C++, PHP

NeL Tools

Convert Object Viewer to be Qt-based.

Difficulty: Moderate
Description:
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.
Requirements: C++, Qt

Convert Georges Editor to Qt

Difficulty: Moderate
Description:
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.
Requirements: C++, Qt

Complete Porting of Words Dictionary

Difficulty: Moderate
Description:
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.
Requirements: C++, Qt

Create Blender Exporter

Difficulty: Difficult
Description:
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.
Requirements: C++, Blender, Python

Create COLLADA Converter

Difficulty: Extremely Difficult
Description:
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.
Requirements: C++, 3D Algorithms

Web-based Translation Chain Tool

Difficulty: Easy
Description:
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.
Requirements: PHP

Landscape Editor

Difficulty: Difficult
Description:
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.
Requirements: C++, 3D Algorithms

BNP Tool Extensions

Difficulty: Easy to Moderate
Description:
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:
  • Make a kio for KDE platforms.
  • Make a FUSE based file system for Linux.
  • Make a shell extension for Windows.
  • WinZip-style application for editing/managing them (written in Qt).

Requirements: C++, Varying

Fix S3TC Texture Compression

Difficulty: Easy
Description:
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.
Requirements: C++

Expand Object Viewer Zone Support

Difficulty: Moderate
Description:
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.
Requirements: C++

Create a GUI Interface for 3D Pipeline

Difficulty: Easy to Moderate
Description:
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.
Requirements: C++, Qt

Fix or Refactor Panoply Maker

Difficulty: Easy to Moderate
Description:
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.
Requirements: C++

NeL Builds and Ports

Configure NeL To Build via CMake

Difficulty: Easy
Description:
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.
Requirements: C++, CMake

NeL Samples and Tests

Expand Unit Testing

Difficulty: Easy
Description:
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.
Requirements: C++, CppTest

Create Advanced Sound Sample

Difficulty: Easy to Moderate
Description:
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.
Requirements: C++

Advanced 3D Samples

Difficulty: Moderate
Description:
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.
Requirements: C++

Snowballs

Implement CEGUI Support in Snowballs

Difficulty: Moderate
Description:
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.
Requirements: C++, XML

Implement Login Control in Snowballs

Difficulty: Easy
Description:
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.
Requirements: C++

Implement Sound Effects in Snowballs

Difficulty: Moderate
Description:
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.
Requirements: C++

Implement NeL Entities in Snowballs

Difficulty: Moderate
Description:
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.
Requirements: C++

Implement Basic Game Logic in Snowballs

Difficulty: Easy to Moderate
Description:
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.
Requirements: C++

Implement Spacial Chat in Snowballs

Difficulty: Easy
Description:
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.
Requirements: C++

Create Snowballs Game Page

Difficulty: Easy
Description:
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.
Requirements: PHP

Build Snowballs AI Service

Difficulty: Difficult
Description:
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.
Requirements: C++

Miscellaneous

Implement MySQL Helper Library

Difficulty: Difficult
Description:
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.
Requirements: C++

Need To Discuss

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:

  • Create new Qt-based Log Analyzer
    • Add additional plugins or create new scriptable functionality for analyzing logs.
  • Fix NeLNS Admin deficiencies
    • Create a log server compliant with CNetDisplayer
    • Update admin web app to be capable of using the new logging server
    • Modernize the admin web app (Web 2.0)
  • Create an entity management layer that provides pluggable gameplay logic (behavior) identifying information (properties.)
    • For inspiration look at CEL
  • As an extension on the audio and bitmap file support, support for video playback within nel would be pretty interesting as well.
    • 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.
  • Convert and modernize the Tile Editor interface to be Qt-based.
    • This is already mostly done, but not modernized. It will need to be completed, tested and merged into the source tree.
    • See Issue 219
  • Web based (ajax, googlemaps) World editor to edit level design.