Defold 1.3.0 has been released

Defold 1.3.0

:warning: Official Spine runtime

In this version, we are fully removing the Spine component from the engine itself and moving to the official spine runtime. If you use Spine animations in your project then extra migration steps are needed.

Migration steps are available here : Spine animation in Defold

Engine

  • Issue-5886 - Fixed: New functions gui.set_screen_position() and gui.screen_to_local()
Details

Two new function added to make it easier to operate nodes in GUI component:

  • gui.set_screen_position(node, screen_position) - set screen position for the node;
  • local local_position = gui.screen_to_local(node, screen_position) - convert screen position to a local position of the supplied node.

Also, it fixed a bug when the returned value of gui.get_screen_position() might be affected by pivot value.

Fixes #5886

  • Issue-6112 - Fixed: Add game.project field for SSL keys to verify the certificate chain during SSL handshake
Details

To verify server SSL certificate a developer should provide a pem file that contains public keys that should be used for verification.
This file may contain public CA-root certificate keys or a self-signed certificate public keys.

This fix adds a new field networkssl_certificates in game.project where this pem file may be specified. If any file is specified in this field the engine turns on verification by default for all requests.

The list of CA-root certificates is included in builtins/ca-certificates, but we don’t recommend using this file directly. Create a new pem file and copy-paste the needed CA-root certificates depending on the services you make HTTP requests to.

Fixes #6112

  • Issue-6297 - Fixed: Include debugger scripts in builtins and include the files in bundled debug builds
Details

This change adds the Lua files required by the debugger to builtins. The files are always included in debug builds (ie variant set to debug). This makes it possible to attach the debugger to a previously bundled and already running build.

Fixes #6297

  • Issue-6347 - Fixed: Make sure file path comparisons are done without any initial slash for excluded folders
Details

Fixes issues when bob doesn’t ignore files specified in .defignore

Fixes #6345

  • Issue-6354 - Fixed: Use Application Support folder for game logs if ./log.txt is unavailable
Details

Fixes path to the log.txt file for macOS bundle where the creation of the file in app is impossible.

If project.wrile_log checkbox is ON in game.project, engine writes logs in log.txt file.
The path to the file depends on the platform (see manual).

From now on macOS the file path will be /Users/user_name/Library/Application Support/projectname/log.txt

Fixes #6354

  • Issue-6355 - Fixed: Fixed: New field enabled for properties iterator.
Details

Adds new field enabled in properties iterator for Gui nodes and components that support enable/disable messages. This functionality used in extension-poco for tests automation.

Fix defold/extension-poco#4

  • Issue-6370 - Fixed: Removed support for 32-bit iPhoneOS (armv7-darwin)
Details

Defold doesn’t support armv7 platform on iOS anymore.
info.plist in builtins/manifests/ios has changed (UIRequiredDeviceCapabilities) make sure you have these changes in your custom info.plist` if you use one.

If your game is already released with armv7 then you have to change MinimumOSVersion to 11.0 in your info.plist to be able to update it on AppStore.

The platform sent to bob is now “–platform=arm64-darwin”.
The bundle output folder from Editor is now arm64-darwin.

Fixes #6369

  • Issue-6376 - Fixed: Added instantiateStreaming support for HTML5 bundles
Details

Using WebAssembly.instantiateStreaming() is the fastest way to load the engine on HTML5 since you no longer have to first load the full engine into an array buffer and then instantiate it.

The feature is enabled by default but can be disabled by setting EngineLoader.stream_wasm = false;

Closes #6324

  • Issue-6406 - Fixed: Add override for onNewIntent (#6404)
Details

Some SDKs (for example AppsFlyer) save data in intent ( in case with Appsflyer it’s deep links data).
To be able to get this data app should be in singleTop mode or manually override onNewIntent and call setIntent.

But changing activity mode to singleTop is a bit risky and maybe a reason for regression when working with native extensions.

  • Issue-6423 - Fixed: Release pressed keys when regaining focus in HTML5 builds
Details

If a key is pressed while the game lost focus and that key is released while not in focus the event will not be received for the key release. This will result in the key remaining in the pressed state when the game regains focus. To fix this we set all pressed keys to released before regaining focus.

Fixes #3186

  • Issue-6214 - Fixed: Removed Spine nodes from gui
  • Issue-6341 - Fixed: Added first iteration of ddf unpack script
  • Issue-6360 - Fixed: Updated to support Linux builds on WSL
  • Issue-6361 - Fixed: Enable Linux builds to use local compiler
  • Issue-6363 - Fixed: Added notes for how to use Terminal and chocolatey to setup on Windows
  • Issue-6364 - Fixed: Bump copyright notice
  • Issue-6367 - Fixed: Added support for using local install of Visual Studio and Windows SDK
  • Issue-6378 - Fixed: Added more dmGui::DeleteNode et al to dmsdk for use with extension-spine
  • Issue-6379 - Fixed: Make sure bash finds the binaries in the repository
  • Issue-6383 - Fixed: Added dmGui::GetParent, dmGui::GetFirstChildNode and dmGui::GetNextNode to dmsdk
  • Issue-6409 - Fixed: Detect M1 CPU and run x86 shell
  • Issue-6419 - Fixed: Always provide the stripped/unstripped versions from the build server for linux budle

Editor

  • Issue-6316 - Fixed: Add custom project templates
Details

It adds support for user defined templates in the welcome screen:

  • Create a .defold folder in your user home folder. This is the same location as any custom editor css files should be located.
  • Create a welcome.edn file with the following content:
{:new-project
	{:categories [
		{:label "From Custom Template" :templates [
			{
				:name "LowRez"
				:description "Defold template project for creation of low-res pixel art games."
				:image "empty.svg"
				:zip-url "https://github.com/britzl/lowrezjam-template/archive/refs/heads/master.zip"
				:skip-root? true
			},
			{
				:name "MyProject"
				:description "Template with everything set up my way!."
				:image "empty.svg"
				:zip-url "https://github.com/britzl/lowrezjam-template/archive/refs/heads/master.zip"
				:skip-root? true
			},
		]}
	]}
}

Notes:

  • You can create as many categories as you want.
  • For now the :image has to be one of the images in editor/resources/welcome/images.
  • The :zip-url has to be hosted on a server and downloaded using HTTP GET.
28 Likes

This is great. I’ve used the extension in all my projects, so it’s nice to make this functionality “official”. Also, 1.3, woop!

8 Likes

New field enabled for properties iterator.

Maybe I don’t understand what this is referring to. I don’t see any new checkbox for my box or text nodes titled “enabled.” Am I missing something? This would be a nice feature in place of sending disable messages in init().

This is an addition to the extension API when iterating over the properties of components. It’s not related to the feature request to have a checkbox to disable components.

3 Likes

Trying to make HTML5 build of Druid on this version via bob builder.

On run got next error:

wasm streaming instantiation failed! TypeError: Failed to execute 'compile' on 'WebAssembly': Incorrect response MIME type. Expected 'application/wasm'.

Build command:

java -jar bob.jar --archive --output ./build/default --bundle-output ./dist --variant release --platform js-web --strip-executable -tc true build bundle distclean

Also tried to build with different architectures (wasm-web/js-web). No effect

The HTML5 build from editor is work as expected. Any idea how to solve this?

The server doesn’t seem to return the correct MIME type for the wasm file. How are you testing your project? You can disable streaming like this:

"The feature is enabled by default but can be disabled by setting EngineLoader.stream_wasm = false"

We may need to change the default for this feature if it is a common problem.

1 Like

Yea, it’s good point about the server :smile:
I’ve tested with python SimpleHTTPServer. With the other one all is ok, thanks!

I’ve tried disable this via stream_wasm, but don’t get success.

I’ll check later today!

All is good, you can don’t check :slight_smile:
If directly change this value in dmloader.js the game is loading too

1 Like

Hi, for me all my HTML5 projects stop working in 1.3.0 with error

wasm streaming instantiation failed! TypeError: WebAssembly: Response has unsupported MIME type 'application/wasm; charset=utf-8' expected 'application/wasm' dmloader.js:142:25
Uncaught (in promise) TypeError: WebAssembly: Response has unsupported MIME type 'application/wasm; charset=utf-8' expected 'application/wasm'

but working after change in dmloader

stream_wasm: false
1 Like

What web server are you using? It seems like your server isn’t sending the .wasm file with the right Content-Type (‘application/wasm’)

Yeah, I think we need to change the default, and perhaps also make it a per-project option.

I use apache 2.2 , but it’s not my server, this is virtual hosting, so I cant change server config

You probably can, using .htaccess. I don’t know exactly how to set Content-Type in Apache, but you can probably find some docs on the web.