GSoC2011Ideas: Difference between revisions

Newton (talk | contribs)
No edit summary
Add landscape zoom project
Line 5: Line 5:


----
----
'''Introduce DirectX support''' (''Mentor(s)'': [http://forum.openclonk.org/user_info.pl?uid=18 ck])
'''Introduce DirectX support''' (''Mentor(s)'': [http://forum.openclonk.org/user_info.pl?uid=18 ck], [http://forum.openclonk.org/user_info.pl?uid=27 PeterW])
When we introduced support for 3D mesh rendering we only did so for the OpenGL renderer. Since meshes are required to run the game the DirectX option is currently disabled. However there are many drivers which support DirectX better than OpenGL, and Window handling (such as Tabbing out) works better in DirectX mode, so it would be cool to have it back. The current implementation of the 3D mesh renderer loads meshes in the Ogre3D format and amongst others, supports uv-mapped textures,  orthographic/perspective rendering, (bone) animations, an interface to C4Script (Clonk's script language) for attaching additional meshes to bones, change textures as well as play, mix and control different animations.
When we introduced support for 3D mesh rendering we only did so for the OpenGL renderer. Since meshes are required to run the game the DirectX option is currently disabled. However there are many drivers which support DirectX better than OpenGL, and Window handling (such as Tabbing out) works better in DirectX mode, so it would be cool to have it back. The current implementation of the 3D mesh renderer loads meshes in the Ogre3D format and amongst others, supports uv-mapped textures,  orthographic/perspective rendering, (bone) animations, an interface to C4Script (Clonk's script language) for attaching additional meshes to bones, change textures as well as play, mix and control different animations.


Line 12: Line 12:
  * Requirements: C++ knowledge, Windows OS, ideally some basic understanding of 3D computer graphics
  * Requirements: C++ knowledge, Windows OS, ideally some basic understanding of 3D computer graphics
----
----
'''Mesh Rendering performance''' (''Mentor(s)'': [http://forum.openclonk.org/user_info.pl?uid=18 ck])
'''Mesh Rendering performance''' (''Mentor(s)'': [http://forum.openclonk.org/user_info.pl?uid=18 ck], [http://forum.openclonk.org/user_info.pl?uid=27 PeterW])
Some players report poor FPS rates on their otherwise adequate hardware. This task involves finding potential bottlenecks and fixing them. Especially the new mesh rendering code is probably subject to more optimization. Ideas for things to investigate include re-using the depth buffer for multiple meshes, executing skeletal animation on the hardware or adding support for Level-of-Detail for meshes and/or textures.
Some players report poor FPS rates on their otherwise adequate hardware. This task involves finding potential bottlenecks and fixing them. Especially the new mesh rendering code is probably subject to more optimization. Ideas for things to investigate include re-using the depth buffer for multiple meshes, executing skeletal animation on the hardware or adding support for Level-of-Detail for meshes and/or textures.


Line 19: Line 19:
  * Requirements: C++ knowledge, ideally some basic understanding of 3D computer graphics.
  * Requirements: C++ knowledge, ideally some basic understanding of 3D computer graphics.
----
----
'''Multi-Device support''' (''Mentor(s)'': [http://forum.openclonk.org/user_info.pl?uid=18 ck])
'''Multi-Device support''' (''Mentor(s)'': [http://forum.openclonk.org/user_info.pl?uid=18 ck], [http://forum.openclonk.org/user_info.pl?uid=27 PeterW])
With the overhauled controls in OpenClonk it became impossible to play the game in splitscreen mode because every player needs mouse control. Splitscreen mode can be re-introduced by allowing multiple mices to be used, one for each player. The generic splitscreen code is still in place, so the code that needs to be written needs to manage multiple input devices and propagate events correctly.
With the overhauled controls in OpenClonk it became impossible to play the game in splitscreen mode because every player needs mouse control. Splitscreen mode can be re-introduced by allowing multiple mices to be used, one for each player. The generic splitscreen code is still in place, so the code that needs to be written needs to manage multiple input devices and propagate events correctly.


Line 32: Line 32:
  * Resources: ''None yet''
  * Resources: ''None yet''
  * Requirements: C++ knowledge, ideally knowledge about C4Script (Clonk's scripting language)
  * Requirements: C++ knowledge, ideally knowledge about C4Script (Clonk's scripting language)
----
'''Finish implementing the landscape zoom shader''' (''Mentor(s)'': [http://forum.openclonk.org/user_info.pl?uid=27 PeterW], [http://forum.openclonk.org/user_info.pl?uid=18 ck])
OpenClonk allows to zoom in and out. Object graphics have been updated to a higher resolution so that they do not look blurry when zoomed in, but this is not the case for the landscape yet. There is a prototype attempt to scale the landscape using the an algorithm similar to [http://en.wikipedia.org/wiki/Hq3x Hq3x] at runtime on the hardware. The goal of this project is to finish it and to integrate it into the OpenClonk engine.
* Difficulty: Medium
* Resources: [http://forum.openclonk.org/topic_show.pl?tid=498 forum discussion and presentation of a prototype implementation]
* Requirements: C++ knowledge, ideally some experience with shader programming

Revision as of 14:37, 7 March 2011

Google Summer of Code 2011 Project Ideas

This is a list of possible student projects for Google Summer of Code 2011. The game engine is written in C++ so you should be familiar with its basics for all the projects below. If there is something in OpenClonk you would like to work on in the scope of GSoC 2011 and which is not in this list then please contact us in IRC or in the forums and if it's a cool idea we can surely find a mentor and make it happen. Also if you have questions to any of the ideas below feel free to ask in IRC, in the forums or talk directly to one of the mentors listed.



Introduce DirectX support (Mentor(s): ck, PeterW) When we introduced support for 3D mesh rendering we only did so for the OpenGL renderer. Since meshes are required to run the game the DirectX option is currently disabled. However there are many drivers which support DirectX better than OpenGL, and Window handling (such as Tabbing out) works better in DirectX mode, so it would be cool to have it back. The current implementation of the 3D mesh renderer loads meshes in the Ogre3D format and amongst others, supports uv-mapped textures, orthographic/perspective rendering, (bone) animations, an interface to C4Script (Clonk's script language) for attaching additional meshes to bones, change textures as well as play, mix and control different animations.

* Difficulty: Easy
* Resources: Bug
* Requirements: C++ knowledge, Windows OS, ideally some basic understanding of 3D computer graphics

Mesh Rendering performance (Mentor(s): ck, PeterW) Some players report poor FPS rates on their otherwise adequate hardware. This task involves finding potential bottlenecks and fixing them. Especially the new mesh rendering code is probably subject to more optimization. Ideas for things to investigate include re-using the depth buffer for multiple meshes, executing skeletal animation on the hardware or adding support for Level-of-Detail for meshes and/or textures.

* Difficulty: Medium
* Resources: A forum thread, Another thread
* Requirements: C++ knowledge, ideally some basic understanding of 3D computer graphics.

Multi-Device support (Mentor(s): ck, PeterW) With the overhauled controls in OpenClonk it became impossible to play the game in splitscreen mode because every player needs mouse control. Splitscreen mode can be re-introduced by allowing multiple mices to be used, one for each player. The generic splitscreen code is still in place, so the code that needs to be written needs to manage multiple input devices and propagate events correctly.

* Difficulty: Medium to Hard
* Resources: Some initial forum discussion, Bug
* Requirements: C++ knowledge, at least two mice/pointing devices :)

Extend in-game GUI: Non-modal inventory windows (Mentor(s): Maikel, Newton) The in-game inventory management is overhauled completely for the next milestone to be faster and more intuitive to use. This involves the implementation of generic non-modal windows which can interact with each other through an appropriate script interface. The generic windows are written in C++ while the specific (inventory) windows should be implemented using the script interface provided by the C++ implementation. To summarize, this project consists of three different areas of work: First, the construction and rendering of the windows and its contents, second, the interface to C4Script and third, the implementation of specific inventory (and other) windows in C4Script.

* Difficulty: Medium
* Resources: None yet
* Requirements: C++ knowledge, ideally knowledge about C4Script (Clonk's scripting language)

Finish implementing the landscape zoom shader (Mentor(s): PeterW, ck) OpenClonk allows to zoom in and out. Object graphics have been updated to a higher resolution so that they do not look blurry when zoomed in, but this is not the case for the landscape yet. There is a prototype attempt to scale the landscape using the an algorithm similar to Hq3x at runtime on the hardware. The goal of this project is to finish it and to integrate it into the OpenClonk engine.

* Difficulty: Medium
* Resources: forum discussion and presentation of a prototype implementation
* Requirements: C++ knowledge, ideally some experience with shader programming