Defold 1.2.165 BETA

Defold 1.2.165 BETA

The latest beta is now released, and we invite those interested in beta testing the new features in the editor and engine.
The beta period will be 2 weeks and the next planned stable release is February 3nd.

Please report any issues here.

We hope this new workflow will highlight any issues earlier, and also get valuable feedback from our users. And please comment if you come up with ideas on improving on this new workflow.

Thx for helping out!

Disclaimer

This is a BETA release, and it might have issues that could potentially be disruptive for you and your teams’ workflow. Use with caution. Use of source control for your projects is strongly recommended.

Access to the beta

Release Notes

This sprint we’ve added initial support for Sprite trimming, an often requested feature.
With it, you can minimize the polygon area of a sprite, leading to less overdraw of pixels.

We also fixed a potential issue with respect to ANRs (Android Not Responding) during shutdown of the sound engine. The end users might not have noticed the issue, but our developers have seen these issues in the Google console.

Another big step forward is our shift towards using Gradle for the dependency resolving for native extensions on Android phones. This will lead to easier maintenance and development going forward.

Engine

Engine

  • Issue-3153 - Added: Get the window size using window.get_size()
  • Issue-4577 - Added: Add engine licenses to builtins.zip
  • Issue-4350 - Added: Sprite trimming for atlases (Overdraw)
  • Issue-4585 - Fixed: HTTP request crash on Windows when offline
  • Issue-4566 - Fixed: Doing a msg.post() with nil as message generates an error
  • Issue-3119 - Fixed: Possible ANR caused by playing sounds on exit - Don’t wait for sound buffers on shutdown
  • Issue-4594 - Fixed: The project settings are now read before the library resolve is done in bob.jar
  • Issue-4591 - Fixed: Added new launch images for iPad Pro and iPhone XR+XS Max

Sprite trimming (pt 1)

In this first part of the sprite trimming feature, we have added internal support for
sprites made up of more than 2 triangles.

This first step is done in order to reduce sprite overdraw.
The feature allows you to configure an (auto generated) convex hull for atlas images.
You can choose between 4-8 vertices in the hull.

Due to batching, this feature affects the collection the sprite is in: If you enable trimming for one sprite in the collection, all other sprites are using it as well.

To disable the feature, set all images to SPRITE_TRIM_MODE_OFF (default).

Gui

This feature is implemented for Gui as well, but only for box nodes.
Also if the node has 9-slice enabled, the sprite trimming is disabled for that node.

Future

In the future, we will also use this info to pack the textures better into the atlas, greatly reducing the download sizes for the projects. We can then also support external 3rd party file formats.

Gradle dependency resolving

To ease the extension development for the Android platform, we’ve added support for Gradle dependency resolving.

To use this, add a file in your extension: <extension>/manifests/android/build.gradle
and add your dependencies in it. E.g.:

dependencies {
  // https://developers.google.com/android/guides/setup
  implementation 'com.google.android.gms:play-services-base:16.+'

  // https://developer.android.com/topic/libraries/support-library/packages
  implementation 'com.android.support:support-compat:26.+'
}

We’re currently using Gradle 6.

Examples:

Android resources

Since we don’t want to download all android resources from the build server to the client, we instead upload any client resources to the server.

Manifest merging

We now perform the manifest merging on the server due to the fact that each android dependency can contain a manifest stub.

Build result

In the build folder, after a successful cloud build, we now unpack the entire build.zip, making it easier for you to find the resulting files: executable, symbols, manifest files, resources files and the log file.

Build server

Note that the beta builds should use the beta server: https://build-stage.defold.com

10 Likes

What does this mean? Say I have sprite A with Trim Mode set to “Off” and sprite B set to “4 Vertices” in the same collection. Will sprite A be rendered any differently than it would in 1.2.164? Or does it just mean that they will use the new codepath?

P.S.: Sprite trimming crashes for me in Interrogation: https://github.com/defold/editor2-issues/issues/2891

1 Like

It’s not the first time I have this problem, but sometimes I don’t understand at the first glance what was done here, if I’m not following the issue. The link is broken (404) and I can’t figure out what is changed now - is it that this message was an issue and it is now not displayed, that there can’t be nil or is it that there was an error when using nil message and now you can use it and it sends nil? I mean, sometimes I understand that when there was an error described in issue name and you say it is fixed it means that it is not happening anymore, but sometimes, like here, I don’t know what is changed - it would be good to describe in one sentence also what is the current behavior in Change Logs - then the logs would be way easier to read :wink:

1 Like

Correct, in that scenario the the sprite A should use the original quad, but using the new code path.

Thx for the bug report!

2 Likes

Yeah, we try to keep the messages as clear as possible, but that is usually also within the context in which it was created, in this case a bug report from a user.

The link points to our internal issue tracker, and I forgot to remove it, for this reason.
In this particular case, it originally came from here and I should have used that link instead. This is basically exactly why we wish to use only 1 bug tracker, not two.

2 Likes

Gradle! Awesome!

Do I have to set it somewhere?


File -> Preferences -> Extensions -> Build Server

3 Likes

Thank you for your response! Then would the choice be internal or external? :slight_smile:

In this particular case we have changed so that it is no longer possible to pass nil as receiver when doing a msg.post. Doing so will generate a Lua error.

2 Likes

There is now a new beta with sha1: 8e1e063abbb201c8faf419942fe56d728babeced with a fix for the atlas+trimming issue.

1 Like

Still crashing with 8e1e063abbb201c8faf419942fe56d728babeced. Same callstack.

1 Like

Ok, silly mistake by me. Please try b3ce15a30f88531b060534217b109c309f84e066 instead.
I’ve updated the download links in the top post.

1 Like

Awesome! It doesn’t crash now, but the coordinates are not correct either: https://github.com/defold/editor2-issues/issues/2893

1 Like

Great!

I’d like to use Admob and Firebase together.

Can I help with some tests in my project, or do I just have to wait for new extensions?

Firebase Analytics already has a gradle file:

(Note that you do not need to add the base extensions anymore. The read me file will be updated to reflect this once 1.2.165 is released)
We need @sergey.lerg to update his extension with a gradle file as well (or if you fork it, test it and submit a pull request yourself).

2 Likes

I am getting an error when trying to build for iOS.

Directory 'build/default/manifests' could not be created

Creating the directory manually doesn’t help. What to do?

I’ve updated the download links with the newest version: 4f15d336c3ef1b3123fd1ceaae04813d2b7ae86e

3 Likes

Yup. Can confirm it works great now. :+1:

2 Likes

I’ve updated the download links with the latest version, which fixes this bundling issue: a404b463128a6eecf3d5cce4916180b222488123

2 Likes

I’ve tried to modify @sergey.lerg’s admob-extension, but it is not clear to me what dependencies to add in build.gradle to make it work properly :frowning:
:sweat_smile::sweat_smile::sweat_smile::sweat_smile: