GSoC 2015 - Ideas List

Continuing the discussion from GSoC 2015 is here - Should we participate?:

Ideas for Google Summer of Code 2015

Unfamiliar with GSoC? Considering applying?

Please read our Application Guide.

General requirements

Unless otherwise specified, all projects require some hands-on experience and general familiarity with jME3 as well as intermediate to high level of Java knowledge.

Wanna add an idea?

This is a wiki-post, which means it’s editable by anyone. Click the edit button at the bottom to add your idea at the bottom (moderators will reorganise periodically).

Idea Template:

  • Project Headline (e.g. Shader Nodes extension: Drag & drop FooBars)
  • Project Description (brief summary of project merit, goals and level of complexity.¨
  • Further Reading (links to code, docs and conversations)
  • Mentor suggestions

Make an Example Game

jMonkeyEngine needs more example games to showcase its capabilities. The student would make an open source game that heavily utilises one or some of jME’s core features, e.g. networking, PBR, physics etc.

Mentors: @nehon, @Sploreg

Further Reading

FBX import

jMonkeyEngine 3 has a functional FBX importer in the works. To become widely applicable, it needs improved usability (e.g. an SDK plugin) and many more test cases.

There is also an alternative route worth exploring, which is to add support for jME’s native 3D format to libgdx/fbx-conv.

Mentors: @Momoko_Fan, @nehon

Further Reading

OpenGEX import

The Open Game Engine Exchange (OpenGEX) format is a text-based file format designed to facilitate the transfer of complex scene data between applications such as modeling tools and game engines.

OpenGEX is essentially an open source alternative to FBX, and proper support for it would be a significant improvement to our import pipeline via closed & proprietary 3D editors.

There is already jogex, a general purpose parser for OGEX files. Next would be to write an OpenGEX importer/loader for jME3.

Mentors: @pspeed, @Momoko_Fan

xbuf import

WIP - @david_bernard_31 Please make a proposal here if you’d like.

Collision Prediction

The aim of this project is to develop a library that computes when and which objects collide. For instance, this information can be used in:

★ more intelligent AI algorithms
★ lag reduction between server and clients by sending collision information beforehand

The complexity of this project lies in developing a user-friendly and effective implementation which uses mathematics to compute collisions.

Further Reading:
[Dev. blog] Accelerated: Linear Prediction Collision Detection

Please comment with your ideas below. We have two main categories so far, which are “Example Games” and “Asset Import Pipeline”. Do we need more? nvm categories.

##Improved LOD

There is an lod system in jme3, but it lacks features that most other game engines have, such as using a different mesh as an lod level. Soon there will be geometry and tessellation shader support in the engine, so it would be possible to do this on the gpu, maybe even seamless transitions with tessellation.

http://rastergrid.com/blog/2010/10/gpu-based-dynamic-geometry-lod/
http://www.gametools.org/archives/publications/UJI_DGCI2006.pdf

Something around a MaterialUtil class that would:

  • allow easy listing of parameters + setting their values
  • make parameters more understandable
  • make parameter dependencies visible
  • allow writing a new material (on disk) from code

Ideally, would come with a more flexible material UI inside the sdk, that would use that materialUtil to make it easier to test stuff and get a grip on what does what, what requires what and so on.

NB: I really like the material editor in the sdk. Just think it could maybe be even better, if it could harness the powers of such an util class.

As already mentioned,

If some student would like to go into more advanced opengl stuff, like sparse textures,deferred rendering, Direct state access,tessellation it would also benefit most of the engine. So category name “next gen grafic”.

3 Likes

A plugin for destructible items would be nice:


Animations:

*Shared animations between similar skeletons.
*Inverse kinematics. I would say that for most stuff a two bone IK would be enough. (Grabbing stuff, placing the foot correctly)
*Realtime switchable mode for the bones (IK/Animation controled)

2 Likes

This is great.
In General some .j3o Editor for “decompiling” them back into the .j3m to make them editable would be really nice (I think this could be a project outside of GSoC as it’s just wrapping the BinaryImporter and Exporter)

Also I would love to see SceneComposer get more advanced (Like in Blender), where you can rotate/move around an axis by a certain amount of degrees or even set fixed values (Would be simple calls to .setRotation(), I assume).
I think those two editors are stuff which commercial engines do better.
Other than that the BlenderImporter does not implement several things (Like planes, linked objects (Even though JME has Links as well)).

But coming back to GSoC

A Project I have lengthy thought about is, what Sony’s AR-Plugins (On the Xperia Z2 Cam) do:
Basically it analyses the Image to add some Spatials on the floor and such.
With that, you could mount a Webcam onto your Oculus Rift and take a virtual tour through your flat. You could manipulate it in a way, that suddenly you have to fight Darth Vader in Your Bedroom.

Unfortunately that is not really JME related anymore, but maybe somebody get’s inspired to do something similar :slight_smile:

You can already set fixed rotation amounts via the properties window in the SDK, I guess adding a syntax like “x+10” would easily be possible. You can also generate j3m files from geometries by selecting “create j3m” in the “Material” dropdown in the properties window.

Edit: Actually have this working in my local version now (x+10 syntax), I don’t know if its making too much sense though, simply adding the values in your head and setting them seems easy enough ^^)

Ah you are right, I saw your tutorial about the Material-Generation and Batching and stuff :slight_smile:

As for the fixed amount, I did not know about it and whilst simply adding may make sence, but let’s say, You want to rotate the whole world (or basically your castle) around 90°, You would need to recalculate for every single Geometry used. It would simply be a nicer workflow if your press “r” (rotate) “x” (axis) “f” (fixed) and a InputBox appears where you can enter the value and simply press enter.

Now that I know of the way to do in Properties tho, it get’s a lot better. I messed up a map as I rotated the terrain oddly and couldn’t fix it 100% certain :confused:

Another rather stupid question maybe: Character’s Hair or Grass is a Particle Emission in Blender and hence won’t be imported. Is it manually possible to do with a simple Emitter? If not that would be another fancy project, extending Blender Importer by Hair/Particle in General.

I guess he was referring to blender’s way of handling rotation/translation or scale with keyboard shortcut.
like g+x+10 moves the selected geom from 10 units on the positive x axis.
It’s particularly handy for rotation actually : r+x+45 rotates the geom from 45 degrees around the x axis.
right now I think we only have the axis restriction.

Theres a lot of features in 3D editors that simply don’t translate to live 3d rendering, hair/particles is one of them.

Well at least in my SDK I can type in g+x+10+Enter and it moves the spatial; it also works with rotation and stuff. The only difference to Blender is that it is not “real time”, but you have to hit Enter first.

lol…maybe that’s the reason I never managed to have it to work!

animation blending would be really realllllllyyy nice… :wink:

2 Likes

copy/paste to group in single place:

Anyways, I’m ok to help or to mentor any student (or non-student) to work on :

2 Likes

I am currently developing collision prediction support to use for upcoming game ( [Dev. blog] Accelerated: Linear Prediction Collision Detection ).

First of all what is collision prediction and why is it useful?

  • There are cases where one would want to know beforehand which objects
    would collide and when.
  • This can be very helpful to make more intelligent AI characters
  • This can be used to reduce lag for client/server apps as collision can be reported from server to client before it actually happens
  • In certain cases, it may perform faster than traditional collision detection(reason: computations are not done at every frame)

After searching the internet I have not found any existing implementation. Thus, it is safe to assume, jme3 would be one of the first, if not, the first engine to support this feature.

To give an example where one would use this. Imagine a sword fighting game, where player sword can collide with ai character’s enemy sword. With collision prediction, the ai character will know wheter it will be hit or wheter it will sucessfully block before the event happened. Thus it can try to dodge or block with its sword. In other words, this information is very helpful for making a strong ai opponent.

I believe this is a creative and innovative idea. How do you guys think it goes with the GSoC? I believe Google likes new ideas.

6 Likes

If you’ve ever played Metal Gear Solid - in the game you place as Solid Snake and at one stage in the game you’ll have to fight with a boss named Psycho Mantis. All of the bosses have their quirks, this was one special in a sense that it would react as such it knows what you are going to do against him.

The trick was - the boss had access to the raw data your controller is sending to the game console(PlayStation 2). So there is no way to defeat the boss, unless you unplug your controller and plug it to a different slot.

Pretty crazy! huh?

http://img4.wikia.nocookie.net/__cb20060802225149/metalgear/images/thumb/6/6a/Psycho_Mantis.jpg/180px-Psycho_Mantis.webp

Sounds like a really novel concept to me. Looking forward to your application for this :smile:

2 Likes

Sounds funny, but i would probably hate a game that tried that, feels like cheating for me.

There was another boss - an age old sniper. You will have to fight him in a very large forest. It’s hard to find him in that dense forest, and players sometimes have to spend hours to find him. But that’s one option.

The other option is to stop playing. Start playing after one week and you’ll find the old sniper has died in this one week. :stuck_out_tongue:

MGS series is famous for it’s boss fights. The other one is the ico series.

@Empire_Phoenix : Are there any specific recommendations to learn in the remaining month before student application period starts if I’m interested? or you think this period is too little to get enough prepared ?
I’m a computer engineering student by the way .