Defold 1.14.0 BETA

Defold 1.14.0

Disclaimer

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

Access to the beta

Download the editor or bob.jar from GitHub: Release v1.14.0 - beta · defold/defold · GitHub

Beta notes:

This version contains a number of breaking changes:

Generational game object handles

This is a breaking change for extension developers with code to manipulate game objects in C++. Game object and collection handles are now generational. Native extensions can retain these opaque handles; Defold rejects handles to deleted objects or collections instead of allowing them to resolve to reused storage. This is a native ABI change.

MIGRATION: Prebuilt dmSDK libraries must be rebuilt, and code that treated opaque handles as pointers must use handle-sized storage instead.

Always use a shared Lua state

This will likely only affect really old projects. The option to use a shared Lua state between .script, .gui_script and .render_script has been the default for a very long time. With this change the option to disable a shared Lua state has been removed.

MIGRATION: Refactor any project where the shared Lua state is disabled.

Remove win32 support

Defold no longer builds or distributes 32-bit Windows runtime, editor, Bob, native-extension, or dependency artifacts. Windows development and bundling now consistently use x86_64, while Bob’s legacy win32 lookup remains as a compatibility alias for x86_64-win32.

MIGRATION: Review any build scripts which uses x86-win32 and change them to use x86_64-win32 instead.

Support cubemap aware render targets

The function void SetRenderTarget(HContext context, HRenderTarget render_target, uint32_t transient_buffer_types); has been deprecated.

MIGRATION: Use the new cubemap aware SetRenderTarget() function:

struct RenderTargetBindingParamsExpand
{
    uint32_t    m_TransientBufferTypes;
    CubeMapFace m_CubeMapFace;
};
void SetRenderTarget(HContext context, HRenderTarget render_target, const RenderTargetBindingParams& params);

Summary

  • BREAKING CHANGE: (#12701) Add generational game object handles (by JCash)
  • BREAKING CHANGE: (#12432) Always use a shared Lua state (by AGulev)
  • BREAKING CHANGE: (#13109) Remove win32 support (windows 32-bit) (by AGulev)
  • BREAKING CHANGE: (#11042) Support iOS links with the UIScene lifecycle (by AGulev)
  • BREAKING CHANGE: (#12815) Support creating cubemap render targets (by Jhonnyg)
  • BREAKING CHANGE: (#13257) Editor plugin API changes for resource-types (by matgis)
  • NEW: (#13205) Remove usage of GL_QUADS and GL_POLYGON (by Jhonnyg)
  • NEW: (#12685) Added b2d.get_gameobject_id() / bullet3d.get_gameobject_id() (by JCash)
  • NEW: (#12608) Metal default on osx (by Jhonnyg)
  • NEW: (#13102) Shrink Android resources alongside Java code (by AGulev)
  • NEW: (#13297) Update XCode to 27.1, MacOS SDK to 27.0, iOS SDK to 27.1 (by AGulev)
  • NEW: (#13315) Storage buffers support in dmSDK (by Jhonnyg)
  • NEW: (#12853) Support wildcards in .defignore and .defunload patterns (by ekharkunov)
  • NEW: (#4863) Add “New Window” option to the macOS Dock menu (by AGulev)
  • NEW: (#13093) Updates for the single-graph editor (by vlaaad)
  • NEW: (#12948) Implement configurable shortcuts for switching and reordering tabs (by vlaaad)
  • NEW: (#13231) Implement strict connection rules in the editor (by matgis)
  • NEW: (#13072) Establish outbound connections from editor resource nodes prior to loading (by matgis)
  • NEW: (#13175,#13100,#12705) Update JDK to 25.0.4 and JavaFX to 27 (by vlaaad)
  • FIX: (#12863) Support more than 8k images/animations in a GUI component (by Jhonnyg)
  • FIX: (#13094) Improve using go.get/go.set together with matrix types in custom vertex formats (by Jhonnyg)
  • FIX: (#12331) Support using 0 samplers for sprites (by Jhonnyg)
  • FIX: (#13156) Fix normalized depth texture uploads on OpenGL ES (by criccomini)
  • FIX: (#12352,#10406) Fix Apple API deprecations and iOS cold-start links (by AGulev)
  • FIX: (#11566) Fix compressed cubemap face order in OpenGL (by AGulev)
  • FIX: (#13202) Choose Bob’s build server by release channel (by AGulev)
  • FIX: (#13262) Update archive compressor to LZ4 1.10.0 (by JCash)
  • FIX: (#13260) Upgrade Basis Universal to 2.50 (by JCash)
  • FIX: (#13283) Disable “Lint Code on Build” by default (by AGulev)
  • FIX: (#12144) Fix Chrome’s HTML5 web app metadata warning (by AGulev)
  • FIX: (#13274) Use Metal as the default graphics adapter for the iOS simulator (by Jhonnyg)
  • FIX: (#13311) Improved Material Editor UX (by JosephFerano)
  • FIX: (#13312) Fix PVRTC texture uploads on Apple graphics backends (by JCash)
  • FIX: (#13314) Fix for supporting ASTC on older Apple devices (by JCash)
  • FIX: (#13331) Fix GUI safe-area anchoring and rotation updates (by AGulev)
  • FIX: (#12627) Fix resource descriptor versions on creation (by AGulev)
  • FIX: (#13206) Fix attribute cache lifetime counter (by Jhonnyg)
  • FIX: (#13185) Fix macOS launcher showing “Not Responding” (by AGulev)
  • FIX: (#13246) Fix atlas image hashes to follow geometry order (by JCash)
  • FIX: (#12928) Support text shaping for complex scripts, emojis, and bidi (by JosephFerano)
  • FIX: (#13227) Reduce editor CPU usage with multiple open tabs (by AGulev, matgis)
  • FIX: (#13289) Fix camera preview errors with large aspect ratios (by vlaaad)

Engine

BREAKING CHANGE: (#12701) ‘Add generational game object handles’ by JCash
Game object and collection handles are now generational. Native extensions can retain these opaque handles; Defold rejects handles to deleted objects or collections instead of allowing them to resolve to reused storage.

Collections can now contain up to 1,048,576 game objects. HGameObject is the preferred C++ type; HInstance remains as a source-compatibility alias.

This is a native ABI change. Prebuilt dmSDK libraries must be rebuilt, and code that treated opaque handles as pointers must use handle-sized storage instead.

Added public API:

  • dmGameObject::HGameObject.
  • dmGameObject::CollectionResource and dmGameObject::ResCollectionGetCollection().
  • DM_DEPRECATED(message) from <dmsdk/dlib/deprecated.h>.

Deprecated public API:

  • dmGameObject::GetGeneration(); the encoded generation is an implementation detail.

BREAKING CHANGE: (#12432) ‘Always use a shared Lua state’ by AGulev
Defold now always shares one Lua state between game object, GUI, and render scripts. The obsolete Shared State project setting and its debugger warning have been removed. Projects that previously disabled the setting will now share globals and loaded-module caches after upgrading.

BREAKING CHANGE: (#13109) ‘Remove win32 support (windows 32-bit)’ by AGulev
:warning: Defold no longer builds or distributes 32-bit Windows runtime, editor, Bob, native-extension, or dependency artifacts. Windows development and bundling now consistently use x86_64, while Bob’s legacy win32 lookup remains as a compatibility alias for x86_64-win32.

MIGRATION: Review any build scripts which uses x86-win32 and change them to use x86_64-win32 instead.

BREAKING CHANGE: (#11042) ‘Support iOS links with the UIScene lifecycle’ by AGulev
Update IAC for Defold’s UIScene lifecycle so custom-scheme URLs and universal links continue to reach Lua, including links that launch the app before its listener is registered. Requires Defold/Bob 1.14.0 or later.

Fix needed for comptability after these braking changes Adopt UIScene lifecycle for iOS · Issue #11042 · defold/defold · GitHub

BREAKING CHANGE: (#12815) ‘Support creating cubemap render targets’ by Jhonnyg
Added support for rendering into cubemap render targets.

Screen Recording 2026-08-26 at 10 40 48

:warning: BREAKING CHANGE :warning:

The dmSDK function to bind a render target has been removed:
void SetRenderTarget(HContext context, HRenderTarget render_target, uint32_t transient_buffer_types);

In favor of using the new cubemap aware params+function:

struct RenderTargetBindingParamsExpand
{
    uint32_t    m_TransientBufferTypes;
    CubeMapFace m_CubeMapFace;
};
void SetRenderTarget(HContext context, HRenderTarget render_target, const RenderTargetBindingParams& params);

Overview

Cubemap render targets can be created dynamically from render scripts or configured as .render_target resources in the editor. Individual cubemap faces are selected when binding the render target, allowing applications to render the six views required for realtime reflections, environment capture, point-light shadows, and similar effects. The resulting color attachment is a regular cubemap texture and can be bound to materials/shaders using a samplerCube.

Creating a cubemap backed render target from a render script:

self.environment = render.render_target("environment", {
    type = graphics.TEXTURE_TYPE_CUBE_MAP,
    [graphics.BUFFER_TYPE_COLOR0_BIT] = {
        format = graphics.TEXTURE_FORMAT_RGBA,
        width = size,
        height = size,
    },
    [graphics.BUFFER_TYPE_DEPTH_BIT] = {
        format = graphics.TEXTURE_FORMAT_DEPTH,
        width = size,
        height = size,
    },
})

Once created, the render target can be used for drawing by binding a single face of the cubemap:

local faces = {
    graphics.CUBEMAP_FACE_POSITIVE_X,
    graphics.CUBEMAP_FACE_NEGATIVE_X,
    graphics.CUBEMAP_FACE_POSITIVE_Y,
    graphics.CUBEMAP_FACE_NEGATIVE_Y,
    graphics.CUBEMAP_FACE_POSITIVE_Z,
    graphics.CUBEMAP_FACE_NEGATIVE_Z,
}

for i, face in ipairs(faces) do
    -- NEW: This enables drawing to a cubemap side!
    render.set_render_target(self.environment, { face = face })

    render.clear({
        [graphics.BUFFER_TYPE_COLOR0_BIT] = vmath.vector4(0, 0, 0, 1),
        [graphics.BUFFER_TYPE_DEPTH_BIT] = 1,
    })
    render.set_view(self.cubemap_views[i])
    render.set_projection(self.cubemap_projection)
    render.draw(self.scene_predicate)
end

-- Reset to backbuffer drawing
render.set_render_target(render.RENDER_TARGET_DEFAULT)

-- The cubemap can now be bound globally to any shader that has a cube sampler called "reflection_map"
render.enable_texture("reflection_map", self.environment)

:warning: NOTE: Cubemap attachments must be square, non-zero, and equally sized.
:warning: NOTE: Cubemap multisampling is not included in the MVP1 of this feature. Requests above one sample are normalized to an effective sample count of one.

Demo: cubemap-render-targets.zip

NEW: (#13205) ‘Remove usage of GL_QUADS and GL_POLYGON’ by Jhonnyg
Modernizes the editor graphics backend by replacing the remaining uses of the legacy GL_QUADS and GL_POLYGON primitive modes. These modes are unavailable in the OpenGL 3.3 core profile.

Rendering behavior should remain unchanged.

NEW: (#12685) ‘Added b2d.get_gameobject_id() / bullet3d.get_gameobject_id()’ by JCash
These new script functions allow you to get the assigned gameobject of a physics body.
The functions return the game object id.
They return nil for bodies that are dynamically created via scripts.

Example:

local body = b2d.get_body("#collisionobject")
local id = b2d.get_gameobject_id(body)

NEW: (#12608) ‘Metal default on osx’ by Jhonnyg
Metal is now the default graphics backend for OSX. To change backend to OpenGL or Vulkan (which uses Metal internally), create an app manifest, open the file and then make your selection in the properties panel on the right.

NEW: (#13102) ‘Shrink Android resources alongside Java code’ by AGulev
Extender can now remove unused Android resources during R8 builds and return the optimized resources for bundling. Older SDKs retain their existing code-only optimization behavior, and D8 builds retain their original resources.

NEW: (#13297) ‘Update XCode to 27.1, MacOS SDK to 27.0, iOS SDK to 27.1’ by AGulev
Extender can build native extensions for iOS 27.1 when its Apple silicon host has Xcode 27.1 and the matching packaged toolchain and SDKs. The setup guide now documents those requirements and how to route builds to that host.

NEW: (#13315) ‘Storage buffers support in dmSDK’ by Jhonnyg
Added shader storage buffers (commonly called SSBO’s in graphics terminology) to the dmGraphics SDK, allowing native extensions to create, update, and bind buffers for graphics and compute shaders. Includes implementations for Vulkan, Metal, DirectX 12, WebGPU, OpenGL/OpenGL ES where supported, and the null adapter.

API

// Create a buffer with optional initial data. Returns 0 when unsupported or invalid.
HStorageBuffer NewStorageBuffer(HContext context, uint32_t size, const void* data, BufferUsage buffer_usage);

// Delete a buffer.
void DeleteStorageBuffer(HContext context, HStorageBuffer storage_buffer);

// Replace the complete contents and resize the buffer.
void SetStorageBufferData(HContext context, HStorageBuffer storage_buffer, uint32_t size, const void* data, BufferUsage buffer_usage);

// Update a byte range without resizing.
void SetStorageBufferSubData(HContext context, HStorageBuffer storage_buffer, uint32_t offset, uint32_t size, const void* data);

// Query the logical size in bytes.
uint32_t GetStorageBufferSize(HContext context, HStorageBuffer storage_buffer);

// Bind to the descriptor set and binding declared by the shader.
void EnableStorageBuffer(HContext context, HStorageBuffer storage_buffer, uint32_t set, uint32_t binding);

// Remove all bindings of this buffer from the context.
void DisableStorageBuffer(HContext context, HStorageBuffer storage_buffer);

Shader declaration:

layout(set = 0, binding = 0, std430) readonly buffer Values {
    vec4 values[];
};

Native extension:

if (dmGraphics::IsContextFeatureSupported(context, dmGraphics::CONTEXT_FEATURE_STORAGE_BUFFER))
{
    // Create the storage buffer
    float values[] = { 1.0f, 2.0f, 3.0f, 4.0f };
    dmGraphics::HStorageBuffer buffer = dmGraphics::NewStorageBuffer(context,
        sizeof(values), values, dmGraphics::BUFFER_USAGE_DYNAMIC_DRAW);

    dmGraphics::EnableStorageBuffer(context, buffer, 0, 0);
    // Draw or dispatch here with a shader using the declaration above.
    dmGraphics::DisableStorageBuffer(context, buffer);
    dmGraphics::DeleteStorageBuffer(context, buffer);
}

FIX: (#12863) ‘Support more than 8k images/animations in a GUI component’ by Jhonnyg
Fixed an issue where the GUI component would play the incorrect frame in a large atlas (more than 8k images/animations).

FIX: (#13094) ‘Improve using go.get/go.set together with matrix types in custom vertex formats’ by Jhonnyg
Fixed an issue where using custom vertex attributes with matrix types did not work correctly with the go.get() and go.set() functions. The dynamic attribute implementation only had storage for four floats and converted properties based on element count, which caused several issues. Now, matrix attributes consistently use vmath.matrix4 types instead:

  • go.set() accepts a vmath.matrix4 for mat2, mat3, and mat4 attributes.
  • Mat2 and mat3 attributes extract the upper-left 2×2 or 3×3 portion.
  • go.get() returns a vmath.matrix4 for every matrix attribute.
  • Mat2 and mat3 values are expanded onto an identity matrix.
  • Flattened vector values such as vmath.vector4 are rejected for matrix attributes.
-- Setting matrix values requires a matrix type as the data container
go.set("#model", "custom_mat4", vmath.matrix4())
go.set("#model", "custom_mat3", vmath.matrix4())
go.set("#model", "custom_mat2", vmath.matrix4())

-- Getting matrix values will return a vmath.matrix4, regardless of the source data size
go.get("#model", "custom_mat4")
go.get("#model", "custom_mat3")
go.get("#model", "custom_mat2")

Furthermore, 2x2 matrices could previously be set/get via vmath.vector4 types, but this is no longer supported - you need to use a matrix container for this. Note that this is NOT a breaking change, but merely a bug fix. A matrix type is a matrix type and should be treated as such!

FIX: (#12331) ‘Support using 0 samplers for sprites’ by Jhonnyg
Fixed an engine crash when using sprite components without textures/samplers.

FIX: (#13156) ‘Fix normalized depth texture uploads on OpenGL ES’ by criccomini
Fixes a native OpenGL ES depth-texture allocation failure that can abort the engine with GL_INVALID_OPERATION, including on Raspberry Pi 5. Normalized depth textures now use an unsigned integer upload type. No API or render-script changes are required.

FIX: (#12352,#10406) ‘Fix Apple API deprecations and iOS cold-start links’ by AGulev
Removes native deprecation warnings from the active macOS and iOS engine build paths and restores forwarding of custom URL links when they launch an iOS app.

FIX: (#11566) ‘Fix compressed cubemap face order in OpenGL’ by AGulev
Compressed cubemaps now display their front and back faces correctly with OpenGL. Previously, enabling texture compression swapped these two faces.

FIX: (#13202) ‘Choose Bob’s build server by release channel’ by AGulev
Bob now defaults to the production build server only for stable releases and staging for every other channel. This prevents alpha and beta SDKs from reaching an incompatible production server. Explicit --build-server overrides continue to work.

FIX: (#13262) ‘Update archive compressor to LZ4 1.10.0’ by JCash
Bob now uses the same LZ4 compressor as the runtime engine.
Also it brings a performance boost of ~21% when compressing our game archive.
The runtime decompression performance remains unaffected.

We did this to more easily keep code up-to-date, and in the future, we want to support custom compressor algorithms for platforms that support it.

FIX: (#13260) ‘Upgrade Basis Universal to 2.50’ by JCash
Updated Basis Universal to version 2.50. Defold continues to use UASTC textures to keep engine size down.

FIX: (#13283) ‘Disable “Lint Code on Build” by default’ by AGulev
Code linting during builds is now disabled by default. Users can enable “Lint Code on Build” in Preferences.

FIX: (#12144) ‘Fix Chrome’s HTML5 web app metadata warning’ by AGulev
Removes Chrome’s deprecation warning from HTML5 bundles and build time reports while preserving standalone launch from the Home Screen on older iOS versions.

FIX: (#13274) ‘Use Metal as the default graphics adapter for the iOS simulator’ by Jhonnyg
Metal is now the default graphics adapter for the iOS simulator.

FIX: (#13311) ‘Improved Material Editor UX’ by JosephFerano
Material Editor got a redesign to improve the user experience and visual appearance. It now has header to clearly mark the different sections and shows a read-only table with an editable form for the current selection. Also reduced the width of choice boxes found throughout the editor.

image

FIX: (#13312) ‘Fix PVRTC texture uploads on Apple graphics backends’ by JCash
This fixes an issue when uploading swizzled PVRTC textures on Metal/Vulkan backend on macOS/iOS.

FIX: (#13314) ‘Fix for supporting ASTC on older Apple devices’ by JCash
This fix enables ASTC textures on Apple2 Metal devices

FIX: (#13331) ‘Fix GUI safe-area anchoring and rotation updates’ by AGulev
Anchored root GUI nodes now respect the safe-area origin, keeping their positions clear of screen cutouts. GUI layout also refreshes when insets change without a window resize, including 180° rotations on iOS and Android.

FIX: (#12627) ‘Fix resource descriptor versions on creation’ by AGulev
Newly created resources now store their assigned version. Previously, every new descriptor kept version 0 in the factory map, allowing a stale Lua buffer wrapper to release a replacement resource if its path and memory address were reused.

FIX: (#13206) ‘Fix attribute cache lifetime counter’ by Jhonnyg
Fix unbounded cache growth and incorrect expiration of model custom vertex attribute render data. Active entries now survive frame counter wraparound, unused entries expire correctly, and released cache slots are reused.

Editor

BREAKING CHANGE: (#13257) ‘Editor plugin API changes for resource-types’ by matgis
Resource readers and loaders previously queried the graph to resolve resource types, dependencies, and templates. The function signatures have been updated to take shared context that is prepared once before we start loading anything, avoiding repeat work during the load process.

This is a breaking editor plugin API change necessitating updates to all extensions with editor plugins. If your project has extensions based on defold/extension-simpledata, the necessary changes can be seen here: Update resource-type fn signatures in the editor plugin by matgis · Pull Request #23 · defold/extension-simpledata · GitHub

NEW: (#12853) ‘Support wildcards in .defignore and .defunload patterns’ by ekharkunov
Now .defignore and .defunload files supports expressions with wildcard patterns.
Examples:

Pattern Matches Does not match
/levels /levels, /levels/1/map.tilemap /levelsX, /Levels
/a.b /a.b, /a.b/m.txt /aXb
/levels/*/tiled /levels/1/tiled, /levels/1/tiled/a.txt /levels/tiled, /levels/1/tiledX, /levels/1/other.txt
/levels/* /levels/a.txt, /levels/a/b.txt /levels
/assets/temp_??.png /assets/temp_01.png /assets/temp_1.png, /assets/temp_001.png
/dir(1)/*.png /dir(1)/a.png /dir1/a.png, /dir(1)/b.txt
/**/generated /generated, /a/b/generated/n.txt /a/b/ungenerated
/levels/** /levels, /levels/a/b/c.txt /levelsX
/a/**/b /a/b, /a/x/y/b /a/xb

NEW: (#4863) ‘Add “New Window” option to the macOS Dock menu’ by AGulev
Adds a New Window action to Defold’s macOS Dock menu. It opens another editor at the welcome screen, allowing users to open or create a project while keeping their current project open.

NEW: (#13093) ‘Updates for the single-graph editor’ by vlaaad

NEW: (#12948) ‘Implement configurable shortcuts for switching and reordering tabs’ by vlaaad
The editor now has configurable shortcuts for switching between tabs. The tabs can now also be reordered using keyboard shortcuts.

New shortcuts:

Command macOS Windows / Linux
Select next tab ⌃ Tab
or ⇧⌘]
Ctrl + Tab
or Ctrl + Page Down
Select previous tab ⌃⇧ Tab
or ⇧⌘[
Ctrl + Shift + Tab
or Ctrl + Page Up
Move tab left ⌥⌘[ Ctrl + Shift + Page Up
Move tab right ⌥⌘] Ctrl + Shift + Page Down

NEW: (#13231) ‘Implement strict connection rules in the editor’ by matgis
The graph connections established when loading resource nodes have been cleaned up in order to avoid undesirable cross-resource effects.

Part of #10166

NEW: (#13072) ‘Establish outbound connections from editor resource nodes prior to loading’ by matgis
Editor resource nodes now establish outbound connections to global systems before they are loaded. This change is intended to enable partial project loading in the future.

Part of #10166

NEW: (#13175,#13100,#12705) ‘Update JDK to 25.0.4 and JavaFX to 27’ by vlaaad
Updates the editor’s bundled JDK to 25.0.4.1+1 and JavaFX to 27, fixing reported excessive memory usage on Windows and high background CPU and energy usage on macOS.

FIX: (#13185) ‘Fix macOS launcher showing “Not Responding”’ by AGulev
Removes the extra Defold process that remained in Activity Monitor as “Not Responding” while the editor was running. Also prevents restart failures when the exiting editor closes the new launcher’s output pipes.

FIX: (#13246) ‘Fix atlas image hashes to follow geometry order’ by JCash
Fixes incorrect normal maps on multi-textured sprites when their atlases list images in different orders.

The editor now generates image-name hashes from the sorted geometry list, keeping hashes aligned with frame indices. Rename patterns, animation metadata, and geometry variants are preserved.

FIX: (#12928) ‘Support text shaping for complex scripts, emojis, and bidi’ by JosephFerano
image

FIX: (#13227) ‘Reduce editor CPU usage with multiple open tabs’ by AGulev, matgis
Reduce unnecessary CPU work while resizing the editor, focusing property fields, and leaving a GUI scene idle.

FIX: (#13289) ‘Fix camera preview errors with large aspect ratios’ by vlaaad
The editor now keeps camera previews within their display bounds and skips previews that cannot be rendered.

15 Likes

:heart_eyes: so thank you!

here you go!


--- Pick a gameobject based on aabb collision.
---@param world_position vector3 world position to test
---@param aabb_half? vector3 semi-size of aabb box: x = w/2, y = h/2. 
---@return userdata|nil obj_id, table|nil hits Return the first gameobject hash, and the hits table from overlap_aabb() call
function M.pick_object(world_position,aabb_half)
	aabb_half = aabb_half or vmath.vector3(1,1,0)
	aabb_half.z = 0
	local hits = b2d.world.overlap_aabb(b2d.get_world(), { lower = world_position - aabb_half, upper = world_position + aabb_half })
	if #hits > 0 then 
		local obj_id = b2d.get_gameobject_id(b2d.shape.get_body(hits[1].shape_id))
		return obj_id, hits
	end
	return nil, hits
end

--- Pick a gameobject based on aabb collision from screen position (based on action.screen_x and action.screen_y)
---@param screen_x number  x screen position to test
---@param screen_y number y screen position to test
---@param aabb_half? vector3 semi-size of aabb box: x = w/2, y = h/2. 
---@camera_id? url|number|nil  optional camera id to use
---@return userdata|nil obj_id, table|nil hits Return the first gameobject hash, and the hits table from overlap_aabb() call
function M.pick_object_screen(screen_x, screen_y, aabb_half, camera_id)
 return M.pick_object(camera.screen_xy_to_world(screen_x, screen_y,camera_id),aabb_half) 
end
3 Likes

With model_lit.material, the model is not visible.


The automation bridge is broken.

2 Likes

fixed in Release Defold 1.14.0 Compatibility and Metal Screenshots · defold/extension-automation-bridge · GitHub

2 Likes

could you please open an issue for that with a minimal repro?

This is massive update. Thank you everyone involved!

I have noticed that from 1.13.2, opening Defold seems slower, taking roughly twice longer. While I haven’t measured this properly, I base my observation on the loading bar of the splash screen, that needs more travel than before.

Not a lot and definitely not an issue, but I know you guys are always looking for things feeling snappy.

The time get to the splash screen (recent projects list), appears to be dependant on internet connection speed. It always checks for updates prior to launching. This takes ~15 seconds, for me.
Launch from a terminal window to observe timing.

This is not an issue for me either (I am not looking a gift horse in the mouth :laughing: )

That is not expected. We’re collecting tool metrics every night from a large synthetic project and the collected data does not support this (not sure what that spike was about but project open time is in general stable):