GSoC 2012 Ideas

As mentioned in the news post about jME’s pursuit of Google Summer of Code, we need great ideas for what projects to have on our wish list. The methodology having a thread for ideas worked out pretty well last year… This year we’re looking for more “substance” to the proposals. As each idea will have its own page on the website, we’re looking to fit in the most amount of information.



So when posting an idea we’d ask that you include: A brief description of the idea, why its important to jME, examples of where it has been of use before (if applicable), and your estimation of the technical expertise needed to successfully complete the project.



With these bits of information we’re hopefully well on our way to jME’s first year in GSoC :slight_smile:

So since this hasn’t exactly taken off as hoped, I’m going to list last years ideas with information on what has been done with them since (a year is a long time!)



Android Renderer

Mentor: @Momoko_Fan



Create an OpenGL ES 2.0 renderer for Android. For questions or general reading about jME3 Android progress to date, please use our Android forum.



Estimation: Not perfect, but mostly complete.



TerraMonkey Editor (Plugin)

Mentor: @sploreg, @normen



Add terrain modification tools to jMP terrain plugin: smooth, flatten, noise tools to jMP terrain plugin: Noise generation (See JNoise)

External modification and modeling (caves, cliffs, etc.) (requires extending the core)

TerraMonkey Road System and editor tools

Hydraulic erosion using GLSL



Estimation: Actively maintained by Brent.



TerraMonkey Core

Mentor: @sploreg

Extend the core with any advanced new functionality of your choosing. Ask questions in the TerraMonkey forum.



Estimation: One of the sample tasks, infinite paged terrain is already complete though still not 100% stable. Where are we at with this?



Cinematics Editor

Mentor: @nehon, @normen



Create a cinematics editor with a graphical interface.



Estimation: @nehon mentioned here that he’d be interested in seeing the Cinematics Editor come back. I’d say this is still viable.



Blender-to-jME Bridge

@mentor: @normen



Joining forces with the existing Blender Loader, this bridge would work as an add-on functionality to further streamline the Blender-to-jME import pipeline. Similar to Adobe Bridge.



Estimation: I don’t think we’ve done anything on this but it would be a great project for a developer who’s more interested in UI/UX than gritty graphics programming.



Nifty core improvements

Mentor: @void256



Improve Nifty workflow and jME integration.



Estimation: I haven’t been following this too much but I know @ractoc was pretty deep into nifty… Can more be done? Is more needed?



Nifty CSS based layout

Mentor: @void256



A standardized layout mechanism based on CSS (or a close pragmatic version of CSS) would open up Nifty to a bigger audience.



Estimation: This is still wide-open as far as features go. There was actually a thread in the last day or two where someone who was a stronger web designer than programmer was looking at the Berkelium-Java-jME project, mainly because he could then work in HTML/CSS



jME3 Applet showcase (with GWT/Vaadin)

Mentor: Jesus Martinez



Create a full blown graphical interface for a jME3 applet showcase. We recommend using GWT or Vaadin since these tools have already been proven successful by an existing project using jME2.



Estimation: This would be great and would definitely spruce up just having an applet on a page.



iPhone Renderer

Mentor: @normen



Estimation: Normen is very anxious to see this work :smiley:



Automated Lipsync

Mentor: @Momoko_Fan, @normen



Automated lip synchronization for animated CG characters. Similar projects include Annosoft Lipsync and Voice-O-Matic. Feed jME a recorded audio file to automatically generate timing and lip position data for your characters.



Estimation: Still wide-open.



Xbox Kinect for motion capture

Mentor: @Momoko_Fan, @normen, @nehon



Use Kinect with open source libraries to create a cost-efficient motion capture tool for jME3 development.



Estimation: @glaucomardano did a project using the Kinect for the Beta 1 Games Contest… He’d be an authority on this right now I think :slight_smile:



Coherent Hierarchical Culling

Mentor: @Momoko_Fan



Implement Hardware Occlusion Query based on the algorithm in these papers: citeseerx.ist.psu.edu article, cgg.cvut.cz article. Also see this initial implementation.



Estimation: This would be great to see.



Plugin: Collada Loader

Mentor: @mulova



Create a Collada loader as an SDK plugin



Estimation: This hasn’t received much attention but it is the primary file format that Sketchup (and Google’s Model Warehouse) works in.



Texture Atlas Auto Generation

Mentor: @mulova



Texture Atlas is a performance boost technique, but manual generation of it is difficult and time-consuming. For the static scene graph, we could generate texture atlas automatically.



Estimation: Normen just recently implemented this.



PagedGeometry Engine

Mentor: @Momoko_Fan



Implement a PagedGeometry Engine. See Ogre3D PagedGeometry.



Estimation: Are we still interested?



AI System

Mentor: @Momoko_Fan



General AI library for basic and common game AI.



Estimation: Everyone’s favorite question on the forums. Do we want to go further than “Look in MonkeyZone”?

  1. geometry shader support for jme.
  2. custom attributes in mesh.java.

Hey Skye.

I can make a complete description on how i see the Cinematic Editor. I’ll start another thread though so we can discuss it without polluting this thread


@tralala said:
1) geometry shader support for jme.
2) custom attributes in mesh.java.

I guess that's not good enough for a gsoc project, that just some new features to add to the engine.
Also i agree would be cool to have those features.

Interesting topics. What about a GWT Application target using a WebGL renderer? That should excite Google enough to get accepted. :smiley:

In-Game object editor:



Since i myself often have problems getting useful models for my games, Mythruna brought me a great idea: Why don’t we use a Mythruna-style object editor for creating our models? If i understood it correctly, even wonderland does this: http://blogs.openwonderland.org/2012/02/07/in-world-building-tool/.



So, here is Basically what i would like to have in such a tool:

  1. ) Some predefined shapes - slabs, slopes, pipes, bars, blocks, stairs etc.pp. All basic shapes you need to create more complex objects.

    (maybe when the basic version of this works, a “shape editor” that allows you to create new shapes based on the old shapes using boolean logic could also be implemented)



    2.) A list of predefined materials, as well as the possibility to add new materials.



    3.) Building a 3d model would then be easy - you simply choose a shape and a texture, and click where you want it. Then you choose another shape and texture and go on. You shouls also be able to build on 3d object, save it and re-use that very object at any scale in your scene. Example given: i create a new empty object that is 20x20x20 blocks great, and build i giant teapot. Then i create a new 100x100x100 blocks great object and build a house. now i can import my teapot model, scales at 1x1x1 size and just put it on the table in the house.





    Here is why i think thats a good idea:

    Programmers often have great problems finding appropriate models for their games. Yes, there were many “free” (some more free then others) model sharing sites, but finding a whole set of models that share the same basic design priciple often is very hard. So, often games only have place-holder art or simply were discontinuued because art can be found.



    Minecraft, and mythruna, have proven, that such a way of creating models is a.) easy for everyone to understand and b.) especially mythruna has proven with it’s object editor, that you can have quite good models with such a simple tool. Since my idea involes re-using objects and scaling objects, you could possibly be as detailed as you want. And all with a very intuitive interface, with mechanics proven to be easily understood by millions of people.



    Another good aspect: the models can very easily be exported to .j3o format :stuck_out_tongue:





    If that project is a success and a usable editor can be made, it could also be evaluated to integrate a plattform for sharing models made with this editor directly in the jmonkeyengines website.



    I would really like to work on such an editor, i had recently begun to evaluate to start with it, since i need models and that would be a great way for me to make them.



    But there is one caveat:

    I’m not sure about this whole “Google Code of summer” thing. It seems that you need to work on it quite hard, do status reports etc. and tbh, i don’t think if thats what i really want. Working on that - yes, sure. Whith a little help, with someone i can ask if i get stuck - sure. But it seems to me that there could easily be some pressure coming by doing this under the GSoC, and thats kind of gives me a headache.
1 Like

“In-game object editor” kind of implies theres a game already that it would fit in, so doing this as a feature of the engine doesn’t make much sense imo. Especially reducing the feature set to only certain blocks basically only makes it usable for mythruna-like games. The whole infrastructure for doing this (sharing assets, editing scenes) is already in the SDK.

Hm well, the name might not be choosen well. The idea was that you do not need to use an external editor. And since that editor would be based on jME, it might even be possible to load an existing scene and build your object in it :wink:


Especially reducing the feature set to only certain blocks basically only makes it usable for mythruna-like games.

I don't think so. Every complex object is in the end only composed of some primitives. And as i said, since you might build an object in big scale, and then resize it, you could possibly build models as detailed as you want, its simply a matter of building the parts you want to be detailed first in big scale, then use them scaled down in your final scene (and that could be repated - build a flower first, then re-use that flower in a flowerpot, then re-use that flowerpot on a table, re-use that table in a house etc.pp).

If the basic shapes were choosen well, almost everything would be possible. But remember: It's not the goal, to provide an absolute perfect "uber"-editor, but an editor that can easily be used and that gives presentable results for people that were not that familiar with 3D modelling. It's about making 3D modelling accessible, not about making the perfect model (for that, we have experts in 3d modelling).

And with the ability to create new shapes using the old shapes and boolean logic, the flexibility would increase dramatically.

Well, maybe i took off a bit on the mythruna-editor, but basically it’s about composing basic shapes together, giving them the material you want and when you’re done, saving the whole thing as your model.

@polygnome said:
It's not the goal, to provide an absolute perfect "uber"-editor, but an editor that can easily be used and that gives presentable results for people that were not that familiar with 3D modelling. It's about making 3D modelling accessible, not about making the perfect model (for that, we have experts in 3d modelling).

Theres many different 3d modeling tools out there working on this level of accessibility and jME is not a 3d editor but a 3d engine.
The interesting part we could take out of this would be mesh simplification, e.g. making a surface mesh out of actual stacked boxes or something for editing purposes. Then doing an editor like you say would be as easy as pushing some pre made shapes around and merging them via a command.

I would also added to the list:

  • GPU instances
@mifth said:
I would also added to the list:
- GPU instances

Again, this is not a feature request post for the engine. Google wants fully described projects that could have a 2 to 3 month span.

i don’t know how much time it will take… to get instances + shader injection for example…

We can take 2-5 features for 3 months of development.



Another thing is Deffered Lighting. Would be really great to integrate it.



Also we can have a look at Ogre and CristalSpace GSoCs choose the same development but for our engine:

http://www.ogre3d.org/tikiwiki/Google+Summer+Of+Code

http://www.crystalspace3d.org/main/GSoC_2009

http://www.crystalspace3d.org/main/GSoC_2010

http://www.crystalspace3d.org/main/GSoC_2011

1 Like
@mifth said:
shader injection

OMFG how dare you mention this!!!! NOOOOOooooOOOoOooo
:p

Again, we failed last year because we submit just some pieces of ideas that would have been nice to have but that were fitting in a project as a whole. Adding sporadic features to the engine is not a project.

Deferred lighting however could be a full project I guess...but it would have to be thorough, and integrate transparency,shadows, etc...
Also someone posted something about inferred lighting that might be a track to explore.

@polygnome



This is kinda off topic of the thread, but I did want to mention that I already have a project in the works to load .map files from the Radiant family of level editors. If you’re not familiar with what *Radiant is, it is basically a brushed based level editor used primarily with the q3 based engine games which were then compiled into bsp’s. You created your geometry with ‘brushes’ which were basically just cubes and you could then resize/reshape the cube however you wanted using basic tools supplied by the editor.



We’re basically on the same line of thinking when it comes to level design for jme. Some of us are developers and NOT modelers and Blender is just not a viable option for us. Radiant has a shorter learning curve and can be picked up and put to use in a matter of hours as opposed to weeks with a full blown 3d editor.



For more information you can check out http://radiant.robotrenegade.com/ or just do a google search for NetRadiant, GtkRadiant, MacRadiant, etc…



-Feen

2 Likes
@feengur said:
For more information you can check out http://radiant.robotrenegade.com/ or just do a google search for NetRadiant, GtkRadiant, MacRadiant, etc...

-Feen


Thanks, i'll have a look into that ;)

Suggestions for projects (those are quite high priority, in no particular order):



Improve particles to be more flexible

Support for ramping, better influencers, mesh particles, trail/ribbon particles, effect system to synchronize multiple particle effects at the same time



Use OpenCL or threading to accelerate parts of engine, or other form of optimization

You can accelerate skinning, particle rendering, and collision as those are the most intense algorithms in the engine



Shadow support for spot or point lights

It has to be reliable and fast, I should be able to add and remove lights at will. It would be preferable if this worked as a post-pass without requiring changes to existing shaders



Collision support with animated models

This may require implementing a new collision algorithm for performance reasons. I would also like to get the bone(s) that were collided. Support for rays, boxes, and spheres is expected out of the box.



Video playback

Theora or WebM only (must be patent-free). Preferable if it is 100% Java without native code. Should render the result into a texture so it can be applied onto any object of my choice.



Loading mesh animation from OgreXML

This includes morph and pose animations. Our animation system is very flexible so no API changes should be neccessary



Light-weight GUI alternative to NiftyGUI

NiftyGUI runs slowly on Android due to XML parsing. The system should also support touchscreens and software keyboard (abstracted out, with hooks to Android API provided)



Android

Audio fixes, Renderer fixes, performance improvements. Android support is quite flaky, this will require testing of various parts of the engine to make sure they work correctly.



Blender

Better compatibility, more features imported. For example, more reliable animation import since right now it requires the planets to align to work correctly.



Tutorial

For proper importing of OgreXML or Blender models (no code required for this one)





Or something of your choice from the issue tracker:

http://code.google.com/p/jmonkeyengine/issues/list?can=2&q=label%3AProduct-jME3

@Momoko_Fan said:
-snip-


We really need all of those. I would help, but I have almost no coding skills that would be of use :(

Cool, we’ve got some exciting ideas at hand. I’ll start putting together the pages in the next day or two so we can start fleshing out the ideas. Keep the ideas and the discussion going!

I don’t know if it is too late but here is my idea. Rework of Jmp editor.

I tried to use it in the past but after 10 minutes i gave up on it, so i don’t know what features it has or not.


  1. Rework based on :

    a) user accessibility

    b) workflow: minimize number of clicks needed to get something done.

    Currently it is something like blender, you have to press 5-10 buttons to get a simple thing done.

    Examples of engines done right unity, warcraft3 editor.

    2)Things able to be done on simpleInit(), should be able to be done in the editor. For example particles to follow a specific mesh, GeometryBatchFactory, etc.
  2. Prefabs: nodes to be able to be stored as prefabs to be able to be reused later. Something like “brushes”. For example i could store a table with chairs and plates as a prefab to be able to repeat it later. Maybe later jme (in another version) will be able to take advantage of their similarity for better performance, disk space used, etc.
  3. Support for randomized variables in prefabs, an example is torchlight editor.

    For instance i could say “chance for this object” to appear, or “number of random times it can appear” e.g In the table chance to have between 0-5 plates. Chance a dining room to have 0-3 tables. Chance a dungeon to have 0-1 dining rooms.

    Why is this useful? for a dungeon creation designer will be able to customize its look and feel. For example every wall has 1-3 torches, every wall has a mini river near it, every wall has chance to have cracks (destroyed texture).