Defold 1.4.0
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 ingame.project
-
BREAKING CHANGE: (#7095) Use lua-cjson for both json.encode/json.decode. We’ve also removed the C++
dmJson
namespace andjson.h
. - BREAKING CHANGE: (#6963) Improved GUI clipping with layers
- BREAKING CHANGE: (#7054) Made dmObjectPool into a class, with new access function GetRawObjects()
Release notes
Summary
-
BREAKING CHANGE: (#7081) Added
physics.max_collision_object_count
field ingame.project
- BREAKING CHANGE: (#7095) Use lua-cjson for both json.encode/json.decode
- BREAKING CHANGE: (#6963) Improved GUI clipping with layers
- BREAKING CHANGE: (#7054) Made dmObjectPool into a class, with new access function GetRawObjects()
- NEW: (#7002) Added option to pass additional headers to the build server
- NEW: (#7036) Option for bundling without resources to use as a build target.
- FIX: (#7091) Fix issue when bundling projects with models
- FIX: (#7114) Fix bug on iOS when profiler doesn’t show CPU and Memory usage
- FIX: (#7064) Remove partially cached HTTP response on timeout
- FIX: (#7097) Crash when using sound resource properties
- FIX: (#7105) Close application when stop debugging
- FIX: (#7049) Fix editor exception during build if a referenced collection overrides a resource script property
- FIX: (#7100) Fix atlas image deduplication
- FIX: (#7027) Make editor more resilient when opening files
- FIX: (#7062) Fix slow loading of sprite data in the editor
- FIX: (#7074) Copied collision 3d box doesn’t show properly in the editor
- FIX: (#7044) Updated to stb_vorbis.c 1.22
Engine
BREAKING CHANGE: (#7081) Added physics.max_collision_object_count
field in game.project
Details
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
Details
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 supportnull
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
Details
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()
Details
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
Details
Fixes an issue when bundling projects with model components.
FIX: (#7114) Fix bug on iOS when profiler doesn’t show CPU and Memory usage
Details
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
Details
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
Details
Fix crash that happening when set a sound resource for a sound component that has playing sounds.
FIX: (#7105) Close application when stop debugging
Details
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
Details
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.
Details
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
Details
Fixed an editor exception during build if a referenced collection overrides a resource script property.
FIX: (#7100) Fix atlas image deduplication
Details
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
Details
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
Details
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
Details
Collision objects are correctly copy-pasted in projects with 3D physics.