Ideas for GSoC (& jMESoC) 2014
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? Follow this template and post it to User Code & Projects
Project Name (e.g. Shader Nodes extension: Drag & drop Goblarks)
Project Description (brief summary of project merit, goals and level of complexity.¨
Requirements (outline of skills required)
Further Reading (links to code, docs and conversations)
JME3 engine has a built in cinematic system. For now, all can be controlled by code, but it can become quite complicated for complex cut scenes with many cameras and models to interact.
Making a cinematic editor in JME sdk, would ease up the process of making cutscenes, and offer a much more wysiwyg experience to our users.
The cinematic editor would look like a compositor with a timeline and optionally several tracks.
One would create and place cinematic events on the timeline and could see the result in real time.
Several animation systems are available in JME3, Bone animation, Spatial animation and they can be combined with sound tracks and effect tracks (based on particle emitters). The cinematic editor should be should act as a conductor for all these animations.
Features needed :
- interactive editing of cinematics with cinematic events creation, and drag and drop over a timeline.
- saving cinematics in a binary file (same as J3o, but only for cinematics). This should already work, all cinematics classes implements the Savable interface.
- Being able to bake the cinematic in a video format, and be able to play it back at runtime (this can be tied to a new project : video playback in JME3)
jME3 Video PlayBack
In early alpha, Jme3 had a video playback system. but it was very unstable so it was removed from core.
Video playback is quite the feature for a game engine, and having a dedicated project to tackle this feature would be great.
The Shader Nodes system in JME3 is not used a lot. It comes with an editor in the SDK but unfortunately, it’s kind of unstable and needs a lot more work.
Here are the fixes/enhancements that it needs :
- removing a Mat param from a complex condition makes an invalid condition
- Condition custom editor or at least a check from the matparam
- Material property set : remove material parameters (clear button maybe?), display at least texture path in textureEditor (the image if possible) (inplace editor for flip, repeat and so on?)
- Big preview
- Add technique
- Add RenderState?
- Material property set additional render state
- remove output
- default diagram should have at least 1 output for vertex and fragment shader
- Handle MRT in the preview.
- Synchronize previews
- mat param should be explorer nodes and should be editable in the property set (for default value and fixed func binging)
- enable to collapse unmapped material parameters (and save state to metadata)
- possibility to see the shaderNode code
- possibility to edit a shader node code? (if it’s local to the project)
- shaderNodeDefinition wizard
- shaderNodeDefinition editor
- better handling of rendering errors
- test adding node with a sn def local to the project
Integrate with Google Play game services
Especially for mobile/web games there are a lot of common social features like tracking scores on a leaderboard, comparing achievements, inviting friends to play a game and starting a multiplayer game through match-making. Google Play game services provides all of these features, and it is cross-platform (Android, iOS and Web), so it would be a good place to start.
Primary goal: Create a demo for fully functional achievements working across Android and iOS.
- http://playtomic.org/ – “No strings attached” alternative, but appears unmaintained.
- https://developer.apple.com/game-center/ Apple’s version, which seems restricted to iOS only.
Integrate with SmartBody
SmartBody is an advanced animation system for humanoid characters. We could integrate it with Blender/jME3
“The Chromium Embedded Framework (CEF) is a simple framework for embedding Chromium-based browsers in other applications.” There are many uses for an embedded browser inside of a game, such as news updates and store frontends (see Valve’s DOTA2 for instance).
Agent System, AI
Generic agent system for all game actors, with flexible and reusable AI component system, that will be base for adding different implementations of AI algorithms. This should decouple AI and game logic from drawing and other JME systems. Include implementations of typical game tasks like weapon selection, path finding, etc. Use some existing game for prototyping. This system should allow creation of the tools for simply adding AI algorithms to game characters by simply drag n’ dropping from the palette. In addition this will turn jME into a simulation virtual environment, which can be used as a testbed for various AI algorithms.
Requirements: JME, agent systems, game AI
Further Reading: http://hub.jmonkeyengine.org/forum/topic/ai-engine/
Bindings for Recast navigation
Recast is state of the art navigation mesh construction toolset for games. We’d like to have bindings created for it, similar to how we’ve incorporated the native Bullet physics library into jME3.
Steer AI port
Steer is an open source C++ library for steering behaviors. It provides game characters the ability to navigate around their world in a life-like and improvisational manner. These “steering behaviors” are largely independent of the particulars of the character’s means of locomotion. Combinations of steering behaviors can be used to achieve higher level goals (For example: get from here to there while avoiding obstacles, follow this corridor, join that group of characters…).
The library is no longer actively developed, so there will not be new features to backport, and the Java library could be developed further.
Realistic wave behaviour
Advanced ocean simulation with a realistic wave behaviour and a proper collision detection to allow “swimming”.
The basic simulation should be independent from the jME so that other graphic engines can use it as well.
Would allow awesome ship battles like in Assassins Creed 4.
Only above surface simulation (so no underwater effects. The current goal is complicated enough)
existing prototype with oceanmonkey (http://sourceforge.net/projects/oceanmonkey/) based on the theoretical work from tessendorf (see link below) and keith lantz (wrote a c++-implementation)
- very good understanding in math
- good understanding of complex algorithms
Getdown SDK integration
“GetDown aims to provide a system for downloading and installing a collection of files on a user’s machine and upgrading those files as needed. Though just any collection of files would do, Getdown is mainly intended for the distribution and maintenance of the collection of files that make up a Java application.”
An SDK integration with Getdown should make it super easy to distribute updates for PC games.
Add animation retargeting for humanoid animations (e.g. BHV) to the animation system. At the same time the animation system should be extended to support easier sharing of animations. Retargeting involves changing the animation so that a different skeleton from another model can play back the animation without distorting.
We’d like to establish a proper plugin repository based on GitHub. This would be a place for developers to find proper SDK plugins as well as stand-alone libraries and snippets. Every project should be hosted in its own self-contained repository.
- Experienced with web development
- Familiar with Git and GitHub API
- No Java or jME3 experience required!
http://www.jekyll-plugins.com/ – Covers practically all of our design goals. This is pretty much what we want.
http://directory.middlemanapp.com/ – More lightweight example.
Extend ScriptMonkey – Groovy
ScriptMonkey is a Groovy shell window that can be used to control a jME scene. So the app starts up with a standard jME window with a few boxes in it, some default lights, etc… but it also opens up a separate Groovy Console window.
- Saving scenes/models. That’s the big one… no point in tweaking stuff if you can save it out again for later.
- HUD-related scripting. Add the ability to hook scripts on buttons in the hud and mouse events, etc… with another set of buttons to switch modes.
Mobile Demos (iPhone & Android)
We have a demo app for Android, but its test scenes are outdated and we’ve now added iOS to our supported platforms.
There should be a common “Mobile Demos” app with:
- Tests optimized for mobile.
- Apps made for both Android and iOS
Create a means for FBX models to be imported into jMonkeyEngine.
Approach #1: Modify converter tool
Approach #2: Write an importer for the FBX format.
search for it
search for it
search for it