Defold Roadmap for 2020

This roadmap outlines our long-term plans for Defold. Keep in mind that ehe list contains our current plans for Defold and while we do our best to plan for and work towards long-term goals the priorities may change over time and what we end up with at the end of the year may not be exactly what we had planned at the beginning of the year.

The Roadmap is also visible as a GitHub Project.

:white_check_mark: = Done
:construction: = In progress

iOS

We will continue to keep the iOS platform support up to date with the latest iOS versions and requirements. Specific iOS tasks in no particular order:

Metal :white_check_mark:

Apple has announced that OpenGL will be deprecated on iOS and macOS, but no date has been announced. We have worked during 2019 to add a new Vulkan based graphics backend. This work is nearing completion and it will allow us to use MoltenVK on iOS and macOS. MoltenVK is a Vulkan Portability implementation. It layers a subset of the high-performance, industry-standard Vulkan graphics and compute API over Apple’s Metal graphics framework, enabling Vulkan applications to run on iOS and macOS. We have worked together with members of the Khronos Group to benchmark our implementation and have received only a few points of improvement.

Sign in with Apple :white_check_mark:

Apple will require that apps that authenticate or set up user accounts must support Sign in with Apple (SIWA). The deadline is June 30, 2020. We will release SIWA support as a native extension through a native extension in Q2 of 2020.

Storyboard launch screens :white_check_mark:

Apple will require that apps use Xcode storyboards as the app’s launch screen. The deadline is June 30, 2020. We will automatically create a launch screen storyboard from the launch images set in game.project.

Android

We will continue to keep the Android platform support up to date with the latest Android requirements. We are collaborating with the Android and Google Play partnership teams to identify important tasks. The top four tasks in order of priority are:

Billing :white_check_mark:

Google Play Billing is a service that lets you sell digital content on Android. We will add support for the new Billing API via the existing IAP extension.

Google Play Game Services :white_check_mark:

We will continue to improve on the existing Google Play Game Services extension to ensure that it supports all of the latest features of Google Play Game Services.

Android App Bundles :white_check_mark:

Android App Bundle is a publishing format that includes all your app’s compiled code and resources, and defers APK generation and signing to Google Play. Google Play uses your app bundle to generate and serve optimized APKs for each device configuration, so only the code and resources that are needed for a specific device are downloaded to run your app. We will initially add support for basic bundling of applications using Android App Bundles and then expand upon the feature as needed.

Play Asset Delivery

Implement support for Play Asset Delivery and make sure this is compatible with the existing Live Update feature.

Google Play Instant :white_check_mark:

Google Play Instant enables native games to launch on devices running Android 5.0 (API level 21) or higher without being installed. By allowing users to run an instant game, known as providing an instant experience, you improve your game’s discovery, which helps drive more active users or installations.

HTML5 :white_check_mark:

We will focus on increased performance and reduced application size on HTML5. We will when possible update to newer versions of Emscripten and WebAssembly to achieve this.

Desktop :white_check_mark:

On desktop our only identified focus area is to add the ability to run the engine loop while the window is in the background.

Editor

We will mainly focus on performance and stability improvements in the editor. In terms of new features we have identified the following (in no particular order):

Improved 3D support

In 2019 we added support for perspective cameras and made some improvements to how collision shapes were visualised. These changes made it easier to work with and place 3D models in a collection, but there are still many improvements to be made to scene navigation when working in a 3D.

Auto-tiling

While we did some minor improvements to the tilemap system in 2019 (better tile palette and interleaved layers) we have so far left out auto-tiling. Auto-tiling can really speed up tilemap editing and it is the next big feature to add for the tilemap editor.

Editor extensions

We plan to expand the existing system for editor scripts to allow for more complex operations and we will look at how to customize the UI and/or add new UI widgets using editor scripts.

GUI layouts and templates

The system with GUI layouts and templates where one or both involve value overrides is fairly complex and hard to work with from a code maintenance perspective. We plan to review the system and possibly simplify it.

Engine

In 2019 we made several changes to improve editor stability. Two examples of this were reduced ANRs on Android and a standardized application loop on iOS. In 2020 we will continue to identify and fix stability issues in the engine. Besides stability improvements we will also work on the following features (in no particular order):

Sound threading :white_check_mark:

Sound playback is currently done on the main thread together with the rest of the game loop. This can become a problem if loading large resources while playing sound, resulting in playback stutter. The solution is to do sound playback on a separate thread to avoid stutter when loading content.

Physics decoupling

Physics is currently running at the same rate as the rest of the game loop. We will try to decouple the physics simulation from the game loop by running the simulation on a separate thread and optionally with a different number of updates per second.

Spine as an extension

We will look into the possibility of using the official Spine runtime as an extension and a replacement for the existing custom made native Spine support. This will allow the use of newer versions of Spine, something that currently is not possible with the existing and custom Spine runtime.

Physics as an extension

We will look into the possibility of moving the Box2D and Bullet3D physics engines to a native extension. This will allow the community to update or replace the physics simulation with an update version or completely different implementation.

Live update :white_check_mark:

We’re very happy to see that the live update functionality is used in several different scenarios (from Android Expansion Files to Steam DLCs). We have with the help of the community identified several improvements and we plan to deliver the most critical improvements in 2020.

Mesh component :white_check_mark:

The custom mesh component will be released in Q2 of 2020.

Vulkan :white_check_mark:

We will release support for Vulkan on all systems where it is supported. On Android it will be used by default on newer devices. On iOS it will be used under the hood to be able to use MoltenVK (see iOS above).

Build server :white_check_mark:

The Defold build server for native extensions will be open sourced in Q2 of 2020 to allow developers to build locally or set up their own build servers to cut the dependency to the Defold provided build service.

49 Likes

in short: awesome!

6 Likes

a82fd4314a946f76

3 Likes

@britzl It is possible for me to edit your post.

The post is tagged as a wiki? Which trusted members can edit?

Also awesome roadmap!!

3 Likes

TIL we can mark post as wiki! Will go back and do that for relevant posts

3 Likes

2020-03-30%2007_33_56-Big%20List%20of%20Lua%20Resources!%20-%20The%20Defoldmine%20-%20Defold%20game%20engine%20forum

2 Likes

That was unintentional! Not sure how that happened…

4 Likes

The editor extension really got me excited. I want to be able to add workflows and interactions to it!
Still working on my point & click framework and being able to add things to the editor too would be fun!

3 Likes

We do not yet know how far we will get with this, but it is something we want to do this year.

2 Likes

https://dragonbones.github.io/en/download.html

About Spine system: dragonbones as an extension.
It is no doubt that esotericsoftware’s Spine is the most professional tool on 2D skeletal animation, but it cost around $299 per user. Would you consider to support the dragonbones runtime instead of Spine, which is free and also powerful tool for 2D skeletal animation.

4 Likes

The mesh component could probably be used to create a Dragon bones extension.

2 Likes

Wow wow wow! :smiley: Excited about a roadmap!
I hope every feature on the list will be easy to accomplish and release! :wink:

Auto-tiling - excited! don’t forget to add a feature to select more than one tile from a tile pallete (like you can in a tilemap)!
Sound threading - yeah! Finally loading screens would be possible!
Every other feature - yeah!
The Defold development has a clear vision of increasing stability, simplicity and modularity
I’m not using Defold for 3D, but anyway I’m also excited about these features, because I’m planning also to create 3D games in the feature and I want to stay with Defold :smiley:

:defold:

7 Likes

Btw, using Launch Storyboard is already possible, even without official support. Defold is a pretty flexible engine and it is possible to use many platform-specific features without official support.

Thanks for the video-instruction @sergey.lerg

One more example is Android Adaptive Icons:

5 Likes

I’m in china,and the network speed is very slow, so the excellent work!:wink:

6 Likes

Hi @britzl

I saw that Multi-texturing was on the roadmap for 2019, but as far as I can see (unless I’ve missed some docs) - it’s not yet available.

I’m just wondering if the feature was postponed indefinitely, or whether it’s still in the backlog?

Thanks for all your hard work on this engine btw, its become my default for 2D work!!!

1 Like

Correct. This has been put on hold for a while. Sorry about that.

@britzl Thanks for the prompt response!

Currently working on an example of using multiple textures for a sprite material (one sprite image and one render target texture) - Will post here (Using multiple textures in materials ) when it’s done

3 Likes

Really,

local my_note = [[ wow, it is great job, And I am proud to be a defolder..... :smile: ]]

print(my_note)

:star_struck::star_struck::star_struck::heart_eyes:

4 Likes

When are you planning to add Sound threading?

1 Like