Skip to content

Latest commit

 

History

History
208 lines (140 loc) · 8.77 KB

GSOC-2018.md

File metadata and controls

208 lines (140 loc) · 8.77 KB

Google Summer of Code 2018

This is a list of project ideas for students applying to the Google Summer of Code program (GSoC 2018).

It's only an indicative list, and is subject to change as Godot is very actively developed by hundreds of contributors. Use this list as an inspiration source, but feel free to come with your own ideas on what you would like to work on in Godot.

Make sure to discuss your ideas with Godot developers on the #godotengine-devel IRC channel (Freenode server), so that we can help you refine your ideas and ensure that they fit in the Godot roadmap and architecture.

TSCN exporter for Blender

Skills: Python, Blender plugin API, knowledge of 3D assets structure, some familiarity with C++.

The 3D assets pipeline requires importing 3D models, skeletons, animations, etc. from thirdparty 3D modelling software such as the open source Blender, or the proprietary Maya or ZBrush.

This is usually done by exporting the models or scenes using a dedicated asset exchange format supported by the game engine (such as Collada or glTF 2.0), and then import it into Godot. However, this can lead to a few inconsistencies due to the peculiarities of exporter and importer plugins, as well as the feature set of the exchange format itself.

One idea would be to create an export plugin for Blender (priviledged due to its open source nature) that can generate a Godot scene file directly from a Blender scene, bypassing the intermediate step. This would allow to simplify the workflow, ensure great compatibility with the Eevee PBR features, and export Blender shader graphs to Godot's expected scene format.

This would require understanding the Blender API and Python plugin scripting, and the text format of Godot scenes. A proof of concept already exists to export meshes from Blender to Godot, but it needs to be completed to add all features that are shared by Blender and Godot.

Existing WIP: https://github.com/godotengine/blender-exporter Related issues: godotengine/godot#7102

ARCore support and CameraServer improvements

Skills: Android/Java/C++

Augmented Reality (AR) is a new trend in game and application development. Godot 3.0 added initial support for AR via its ARVRServer and CameraServer interfaces, with some support for the ARKit library for iOS AR projects.

The equivalent for Android devices is ARCore, and it should be possible to write an Android module for Godot to expose ARCore features to the Android version of the engine.

The work would also imply ensuring that the ARCore, ARKit and possible future backends all use a shared and consistent API, so that users could create AR games for both Android and iOS using a high level API. Godot already has an initial implementation of such a common interface in the ARVRServer class, and a pending proposal of a CameraServer API which needs to be extended. Improving those classes to ensure a user-friendly design would typically be done in parallel to implementing ARCore support.

An option could also be to explore the open source ARToolKit for iOS, as replacement/alternative to Apple's ARKit.

Existing WIP: godotengine/godot#10643 Related issues: godotengine/godot#12714

Hololens support

Skills: UWP/C++

The Hololens is a very interesting device from Microsoft that is mainly used in business software. Priliminary experimentation has proven that the UWP build of Godot will run on the hololens.

The work here would involve joining Godot to the Holographic SDK in order to obtain tracking information and render stereo scopic output to the Hololens.

We believe this can be build ontop of the existing AR framework and likely implemented as a GDNative plugin. Because the Hololens is a see through device this AR solution is not dependent on the CameraServer implementation.

GearVR and Daydream support

Skills: Android/Java/C++

Another modern topic is virtual reality. The participants of this project would work on support two SDKs for mobile VR: GearVR and Daydream. This would be based on the Godot's VR backend, which is already available.

Oculus Rift support

Skills: C++

Support for Oculus Rift was added to Godot early 2018 however there are a number of improvements that Godot can benefit from that are interesting projects for students to persue.

The Oculus SDK has two modules that are interesting projects in their own right to implement ontop of the existing interface:

  • The Avatar SDK, allows bringing in the users avatar, render models for controllers
  • The Audio SDK, which has a number of interesting functions specific to audio in a VR setting. While Godots own audio system may already cover all the features this may be interesting to include support for.

Other projects of interest are:

  • improving the support for timewarp, Oculus' predictive system to combat latency issues when rendering to the HMD
  • improving the support for touch controllers to reflect hand positions

Existing WIP: https://github.com/BastiaanOlij/godot_oculus

Microsoft Mixed Reality

Skills: UWP/C++

While this has some overlap with the Hololens and anyone who wants to work on this would be smart to team up with whomever picks up Hololens the mixed reality implementation does have a number of differences to the Hololens implementation. For instance one thing that needs to be investigated here is whether MR support can be added to the normal Windows build of Godot and not rely on UWP.

The VR headsets that are part of the MR ecosystem are still under represented in other game engines even though they offer a cheap entry into VR.

Microphone API and audio input

There is a few genres of games that relies on audio input from the player, especially through the device's microphone.

This project is about supporting such input in the many platforms that Godot supports, both desktop and mobile.

godotengine/godot#13268

WebRTC integration

WebRTC is a project that enables real time communication inside the browser with ease. Adding support for it in Godot would allow game developers to make multiplayer games on all platforms using a common protocol.

Related issues: godotengine/godot#12108

Improve i18n support

Godot currenlty uses CSV files for game translations but this format is not widely supported by the translation engines.

This project would consist in providing support for gettext features ( .po and .mo files), which is more capable and easier to make translations using specialized third-party software.

godotengine/godot#9398

Itertools library for GDScript

Python's itertools is a powerfull library to deal with iterators and combinatorics.

This project consists in making most or all of those functions available for GDScript code, to be readily used in game projects.

godotengine/godot#9264

GDScript Code formatter

The integrated script editor of Godot is a great tool for editing GDScript files, with code folding and auto-completion. However, there's nothing yet to make the code look pretty to the human eyes.

Following this idea, the applicant would work on a set of editor features to define code beautifier rules and apply them automatically to the source code.

godotengine/godot#7392

Plugins for video decoding

It's quite common for games to rely on videos for intros and cutscenes. However, supporting all the myriad of formats out-of-the-box is unpractical for Godot's unbloated and open source approach.

The idea is to have multiple official plugins that can be added to each game individually using the GDNative interface, allowing many more video codecs to be supported than what's currently available.

Plugins for MIDI and MOD support

MIDI and MOD are small audio formats that are based on events and musical information, rather than storing the digitalization of a sound.

Supporting this would require the ability for users to set sample libraries and loading the files in editor as resources (by using the import system).

Template builder for Android and iOS

It's common for mobile applications to load extra modules, in particular for ad support (which is a common request). Since Godot won't pick a specific ad provider, all the modules comes from third-party.

To ease the job of users relying on those modules, the template builder would allow game developers to bundle modules in the export process.

Headless version for server applications

Sometimes Godot need to run in a server environment, be it to act as a server for a game, or to be used in a Continuous Integration environment.

The headless version would have no requirement for sound cards nor graphical capabilities, since those are not available on servers. This would require a dummy graphics and audio drivers for Godot.

godotengine/godot#11389 Itertools like class in gdscript godotengine/godot#9264