⇠ More posts

Defold release 1.4.0

By Björn Ritzl on Nov 14, 2022

Tagged as: Release notes


ATTENTION: This release contains breaking changes!

Please pay extra attention to the release notes and the four breaking changes, as one or more of them may affect your projects. The breaking changes (listed in more detail further down) are:

  • BREAKING CHANGE: (#7081) Added physics.max_collision_object_count field in game.project
  • BREAKING CHANGE: (#7095) Use lua-cjson for both json.encode/json.decode. We’ve also removed the C++ dmJson namespace and json.h.
  • BREAKING CHANGE: (#6963) Improved GUI clipping with layers
  • BREAKING CHANGE: (#7054) Made dmObjectPool into a class, with new access function GetRawObjects()

Engine

BREAKING CHANGE: (#7081) Added physics.max_collision_object_count field in game.project

Added physics.max_collision_object_count field in game.project to set maximum count of collision objects per physics world. This prevents a crash which would happen in earlier versions when using more than 1024 collision objects in a physics world.

IMPORTANT: This is a breaking change. The default value for physics.max_collision_object_count is 128. Make sure you adjust the value to suit the needs of your project.

BREAKING CHANGE: (#7095) Use lua-cjson for both json.encode/json.decode

The internal library used in Defold for json encoding and decoding is lua-cjson. The decoding performance improvement is about 10x faster than before (when using jsmn). With this change a number of changes have been introduced, one of which is considered a breaking change:

  • BREAKING: The dmJson namespace and functionality has been removed from our C++ dmSdk due to its poor performance and lack of features.
  • NEW: Added the keyword json.null in order to support null values in a Lua table.
  • NEW: Added dmScript::LuaToJson(lua_State* L, char** json, size_t* length) as a new function in the C++dmSdk.

BREAKING CHANGE: (#6963) Improved GUI clipping with layers

The behaviour regarding how clipping interacts with layers in GUI scenes has been modified. Instead of treating each clipping node as its own isolated node tree, where the layers only affect the child nodes, using layers can now change the ordering of the nodes freely.

BREAKING CHANGE: (#7054) Made dmObjectPool into a class, with new access function GetRawObjects()

In order to make it clearer that the access to the internal objects is volatile, we put them in a class and only allowing access to them using the function dmObjectPool::GetRawObjects()

FIX: (#7091) Fix issue when bundling projects with models

Fixes an issue when bundling projects with model components.

FIX: (#7114) Fix bug on iOS when profiler doesn’t show CPU and Memory usage

Fix a regression bug introduced in 1.3.7 when profiler doesn’t show CPU and Memory usage on iOS.

FIX: (#7064) Remove partially cached HTTP response on timeout

This fixes an issue where a network request is interrupted due to a network error or timeout still left a partial response stored in the HTTP cache. Subsequent requests for the same resource would in such a case return the partial and most likely corrupted response stored in the cache. The cache will now remove any partial response on error.

FIX: (#7097) Crash when using sound resource properties

Fix crash that happening when set a sound resource for a sound component that has playing sounds.

FIX: (#7105) Close application when stop debugging

Fix issue introduced in 1.3.7 (regression) when Debugger stop button doesn’t close the application.

Editor

NEW: (#7002) Added option to pass additional headers to the build server

It is now possible to pass additional headers to the build server when building native extensions using command line tools and the editor. The editor has a new Build Server Headers field in the Extensions tab of the Preferences menu. The bob.jar command line tool has a new --build-server-header option.

In the editor headers are added line by line in a multi-line text text area. In bob.jar headers are added one by one using multiple --build-server-header options.

Example:

java -jar bob.jar `--build-server-header="x-my-header1: header1_value" --build-server-header="x-my-header2: My name is Bob"

Will set two headers:

x-my-header1: header1_value
x-my-header2: My name is Bob

NEW: (#7036) Option for bundling without resources to use as a build target.

New option for Bob --exclude-archive and a checkbox in the Bundle popup for bundling without resources. This bundle may be used as a build target.

FIX: (#7049) Fix editor exception during build if a referenced collection overrides a resource script property

Fixed an editor exception during build if a referenced collection overrides a resource script property.

FIX: (#7100) Fix atlas image deduplication

Atlases with duplicate images in different animations will no longer have the images duplicated in the atlas image.

FIX: (#7027) Make editor more resilient when opening files

We used to save all recent files of all projects in a single user preference key. Since preference keys have a size limit, this is clearly a problem. This commit makes the editor use a different preference key per every project root, and also decreases the history limit just to be extra safe.

User-facing changes: Hopefully none 😅 . If no files in the editor could be opened before, they will now.

FIX: (#7062) Fix slow loading of sprite data in the editor

Fixed slow project load times introduced by the addition of slice-9 support for sprites.

FIX: (#7074) Copied collision 3d box doesn’t show properly in the editor

Collision objects are correctly copy-pasted in projects with 3D physics.