Defold 1.13.2
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.13.2 - beta · defold/defold · GitHub
Beta notes:
This version includes support for Rich Text labels and GUI nodes. The new functionality allows developers to add markup to text in order to change font color, add gradients, outlines and much more. Visit the Rich Text manual to learn more.
Summary
- BREAKING CHANGE: (#8716) Improve HTML loading time (by ekharkunov)
- BREAKING CHANGE: (#12910) Deprecated misspelled event constant
window.WINDOW_EVENT_ICONFIED(by britzl) - NEW: (#12806) Speed up LiveUpdate archive creation (by britzl)
- NEW: (#12870,#12869,#10721) Add App Manifest options to exclude GUI, Particle FX, and Tilemaps (by AGulev)
- NEW: (#12842) Bob performance improvements (by britzl)
- NEW: (#12397) Added graphics.webgl_version_hint (by britzl)
- NEW: (#12765,#12764,#12763,#12762,#12761,#12760) Added support for Rich Text (by JCash, defold-services)
- NEW: (#12663,#8854,#8718) Fix GUI flipbook cursor behavior (by AGulev)
- NEW: (#12054,#12004) Update to Protobuf 35.1 (by JCash, defold-services)
- NEW: (#12979) Optimized physics messages sent to Lua (by JCash)
- NEW: (#12525,#9656,#8686) Add Bullet3D Lua API (by AGulev)
- NEW: (#11654) Fix Protobuf warning on Java 25 (by AGulev)
- NEW: (#11036) Add sample count setting for multisampled render target attachments (by Jhonnyg)
- NEW: (#12816) Create a constant buffer snapshot when issuing render.draw (by Jhonnyg)
- NEW: (#7186) Show release notes during update process and bundle with the editor (by JosephFerano)
- NEW: (#12708) Add
/command/compileand/command/runendpoints to editor server (by vlaaad) - NEW: (#8297) Improve property view and form tooltips (by vlaaad)
- NEW: (#12707) Allow running games without taking focus (by AGulev)
- NEW: (#12727) Show multiple notifications at once (by vlaaad)
- NEW: (#10913) Quit Defold if the project folder was removed or moved (by vlaaad)
- NEW: (#12472) Remember scene settings and camera state, better camera and grid defaults (by JosephFerano)
- NEW: (#12671,#8919) Support text shaping preview in Editor (by JCash)
- NEW: (#12841) Format document LSP call with command shortcuts (by JosephFerano)
- NEW: (#12918) Add editor script API to open code resources at a particular line (by vlaaad)
- NEW: (#12611) Editor uses the latest Basic 3D template (by Jhonnyg)
- NEW: (#8420) Add new text property type (by Jhonnyg)
- NEW: (#6895) Add validated Lua API type annotations to the editor (by AGulev, vlaaad)
- NEW: (#12867) Added support for 3D collision meshes (by JCash)
- NEW: (#12916,#12829) Make editor endpoints await command completion (by vlaaad, matgis)
- NEW: (#13024) Return target URL when launching a game using editor HTTP API (by vlaaad)
- NEW: (#11527,#12993) Format on save with option (by JosephFerano)
- FIX: (#12743) Fix how data size calculated for block compressed textures (by ekharkunov)
- FIX: (#12780) Do not reverse hash generated gui node ids (by AGulev, britzl)
- FIX: (#12614) Accept uppercase file extensions for referenced resources (by britzl)
- FIX: (#12036) Updated to Clang 20 for Linux builds (by JCash, ekharkunov)
- FIX: (#12844) Fix issue with compressed ETC1 texture in mobile Safari (by ekharkunov)
- FIX: (#12846) Fix collapsed canvas on reboot (by ekharkunov)
- FIX: (#12850) Fix issue with fullscreen window size and display scale other than 100% (by britzl)
- FIX: (#12877) Fix crash when add font glyph to cache (by ekharkunov)
- FIX: (#12868) Fix transcoding of non-RGBA uncompressed texture arrays (by ekharkunov)
- FIX: (#12896) Fix sound exhaustion when Web Audio is unavailable (by AGulev)
- FIX: (#12758) Normalize the gamepad name in dmHID::GetGamepadDeviceName() (by JCash)
- FIX: (#12264) Add OpenType CFF font support (by JCash, defold-services)
- FIX: (#12901) Fix for font glyph ascent being a negative value (by JCash)
- FIX: (#12680) Fix Linux territory detection for encoded locales (by AGulev)
- FIX: (#3247) Report locale data consistently across platforms (by AGulev)
- FIX: (#12602) Changed Host header of the http request to use URI’s authority component (by CodeForBeauty)
- FIX: (#12773) Improve OpenGL shader compilation error reporting (by AGulev)
- FIX: (#12977) Improved DDF encode/decode performance (by JCash)
- FIX: (#12973) Added support for cross repo source builds (by JCash)
- FIX: (#12976,#9941) Replace Android ProGuard configuration with R8 (by AGulev)
- FIX: (#9102) Fix slice 9 vertical and horizontally flipping sprites and GUI nodes (by Jhonnyg)
- FIX: (#12988) Merge custom resources from extensions (by Jhonnyg)
- FIX: (#12677) Use active override material to calculate correct vertex buffer capacity (by Jhonnyg)
- FIX: (#12997) Update to Bullet 3D v3.25 (by JCash, defold-services)
- FIX: (#13027) Added dmArray::EnsureSize() to dmSDK (by JCash)
- FIX: (#13016) Refactor VkQuality integration to skip the java glue code (by Jhonnyg)
- FIX: (#9043) Fix HTML5 size verification (by ekharkunov)
- FIX: (#13038) Fix Android bundling for the x86_64 architecture when stripping executables (by ekharkunov)
- FIX: (#12552) Fix exception that sometimes pops up when using the editor (by vlaaad)
- FIX: (#12698) Fix exception when zooming in on an animation preview too much (by vlaaad)
- FIX: (#11299) Notification when editor behavior is disabled after error (by JosephFerano)
- FIX: (#5875) Fix infrequent exception when dragging items into editor on macOS (by vlaaad)
- FIX: (#12726) Reject invalid characters in resource inputs (by vlaaad)
- FIX: (#11509) Validate that welcome project files are actually game.project files (by vlaaad)
- FIX: (#11794) Filtered “Search in Files” search speed improvement (by JosephFerano)
- FIX: (#12887) Add “skip this release” button (by JosephFerano)
- FIX: (#12889) Per-channel update bundle directories (by JosephFerano)
- FIX: (#12670) Fix right click context menu not showing selected object in scene (by JosephFerano)
- FIX: (#11928,#11492,#7618) Improve material resource view UX (by JosephFerano)
- FIX: (#12927) Fix markdown performance degradation with very large images (by JosephFerano)
- FIX: (#12951) Fix LSP document symbols race condition when starting editor (by JosephFerano)
Engine
BREAKING CHANGE: (#8716) ‘Improve HTML loading time’ by ekharkunov
engine_template.html was changed. If you have custom template file - please update it.
![]()
Added browser resource hints for json/js/wasm files.
BREAKING CHANGE: (#12910) ‘Deprecated misspelled event constant window.WINDOW_EVENT_ICONFIED’ by britzl
The event constant window.WINDOW_EVENT_ICONFIED was misspelled. The correctly spelled event constant window.WINDOW_EVENT_ICONIFIED has been added. The old constant still works but will be removed in a future version. Please migrate any code using the old constant.
NEW: (#12806) ‘Speed up LiveUpdate archive creation’ by britzl
This change significantly speeds up live update archive creation by changing the underlying data structure holding the excluded files.
NEW: (#12870,#12869,#10721) ‘Add App Manifest options to exclude GUI, Particle FX, and Tilemaps’ by AGulev
Projects can now exclude the built-in GUI, Particle FX, and Tilemap subsystems from custom engines using new App Manifest settings. Each option removes the associated resources, components, and Lua module while preserving existing behavior for projects that do not enable the exclusions. Default engine configurations remain unchanged.
Release engine sizes with each option enabled independently:
| Platform | Configuration | Size (bytes) | Saved (bytes) | Reduction |
|---|---|---|---|---|
| arm64-macos | Regular | 6,673,480 | — | — |
| arm64-macos | Without GUI | 6,523,528 | 149,952 | 2.247% |
| arm64-macos | Without Particle FX | 6,623,544 | 49,936 | 0.748% |
| arm64-macos | Without Tilemaps | 6,656,856 | 16,624 | 0.249% |
| wasm-web | Regular | 2,397,812 | — | — |
| wasm-web | Without GUI | 2,223,893 | 173,919 | 7.253% |
| wasm-web | Without Particle FX | 2,325,652 | 72,160 | 3.009% |
| wasm-web | Without Tilemaps | 2,380,879 | 16,933 | 0.706% |
The macOS measurements use an arm64 release engine stripped with strip -x. The web measurements use the optimized, uncompressed release .wasm output before gzip or Brotli compression.
NEW: (#12842) ‘Bob performance improvements’ by britzl
Performance improvements when building large projects using Bob.
NEW: (#12397) ‘Added graphics.webgl_version_hint’ by britzl
Added graphics.webgl_version_hint to be able to select a WebGL 1 context even when the device supports WebGL 2. This may be useful in scenarios when the WebGL 2 implementation or reported extensions contain bugs or inconsistencies.
NEW: (#12765,#12764,#12763,#12762,#12761,#12760) 'Added support for Rich Text ’ by JCash, defold-services
This feature allows you to modify the displayed text with colors, styles, images and animations.
We support a first set of tags:
- color
- size
- gradient
- underline / strike
- outline / shadow
- shake / wave
- sprite
- link
- style
Notes
- Rich Text is supported by default. If you do not need it, you can remove it via an App Manifest.
- Soon, we’ll also support font modifiers like font family, italic, bold
- The
spriteandlinktags aren’t handled by the label/gui, but can be retrieved via Lua
NEW: (#12663,#8854,#8718) ‘Fix GUI flipbook cursor behavior’ by AGulev
GUI flipbook animations now respect the requested offset when playback is set to None, allowing static animations to display the selected frame consistently with sprites. Backward animations also start on the correct frame immediately, including when chained from a completion callback, and cloned GUI nodes preserve the current backward-animation position.
NEW: (#12054,#12004) ‘Update to Protobuf 35.1’ by JCash, defold-services
Updated the Protobuf library to 35.1. It is used in our content pipeline for loading/saving content.
NEW: (#12979) ‘Optimized physics messages sent to Lua’ by JCash
We improved the physics message dispatch performance from the engine to Lua.
It improves regular per-message callbacks as well as batches sent to the physics listener.
Fixes: Improve physics message dispatch performance · Issue #12979 · defold/defold · GitHub
NEW: (#12525,#9656,#8686) ‘Add Bullet3D Lua API’ by AGulev
Adds a bullet3d Lua API for accessing and controlling Defold’s 3D physics worlds, collision objects, rigid bodies, shapes, and constraints. Scripts can now create hinge and other 3D joints, modify body and shape properties, inspect contacts and overlaps, and perform immediate or deferred ray and convex-shape casts, including closest-hit queries.
bullet3d— retrieve the current world, collision objects, rigid bodies, and bundled Bullet version.bullet3d.world— configure gravity, enumerate objects, perform overlap and contact queries, and run immediate or deferred ray and convex-shape casts.bullet3d.collision_object— control transforms, activation, friction, restitution, CCD, flags, and collision filters.bullet3d.rigid_body— control mass, inertia, velocity, damping, gravity, factors, sleeping, forces, impulses, and AABBs.bullet3d.shape— inspect and modify sphere, box, capsule, and convex-hull geometry and local transforms.bullet3d.constraint— create, configure, query, and destroy 3D constraints, including limits, motors, and springs.
NEW: (#11654) ’ Fix Protobuf warning on Java 25’ by AGulev
Bob no longer reports terminally deprecated sun.misc.Unsafe usage when building projects with Java 25.
NEW: (#11036) ‘Add sample count setting for multisampled render target attachments’ by Jhonnyg
Added configurable FSAA sample counts to render targets and implemented multisampled render targets with automatic color resolving. The sample count applies to all color, depth, and stencil attachments in the render target.
Example
local target = render.render_target({
sample_count = 4,
[graphics.BUFFER_TYPE_COLOR0_BIT] = {
format = graphics.TEXTURE_FORMAT_RGBA,
width = 1280,
height = 720
},
[graphics.BUFFER_TYPE_DEPTH_BIT] = {
format = graphics.TEXTURE_FORMAT_DEPTH,
width = 1280,
height = 720
}
})
The same render-target-level sample_count setting is available for .render_target resources in the editor.
Requested sample counts are normalized to a value supported by the active graphics adapter. The effective value is available through resource.get_render_target_info().
NEW: (#12816) ‘Create a constant buffer snapshot when issuing render.draw’ by Jhonnyg
Fixed an issue where render.draw() and render.dispatch_compute() is reusing and modifying the same buffer between submissions. This caused earlier commands to observe its final values instead of the values present when submitted.
We now generate a snapshot of the constant-buffer data when each command is queued. Every draw or compute dispatch now uses the constants supplied at submission time and not the “last seen” constant values.
FIX: (#12743) ‘Fix how data size calculated for block compressed textures’ by ekharkunov
This fixes an issue with how the bits per pixels are calculated for compressed textures to avoid runtime errors when transcoding textures.
FIX: (#12780) ‘Do not reverse hash generated gui node ids’ by AGulev, britzl
It is possible to run out of memory during long debug sessions if the game is cloning and deleting large amounts of gui nodes. The reverse hash table will in this case constantly grow and run out of memory when SetCapacity() is called. To avoid this situation generated node ids are no longer stored in the reverse hash lookup table.
FIX: (#12614) ‘Accept uppercase file extensions for referenced resources’ by britzl
This change makes sure that the build process can successfully build referenced resources with uppercase file extensions such as image.PNG.
FIX: (#12036) ‘Updated to Clang 20 for Linux builds’ by JCash, ekharkunov
This change updates to Clang 20 for Linux builds. The version matches the version we use on our cloud build server (note that the supported Linux version is still Ubuntu 22.04).
FIX: (#12844) ‘Fix issue with compressed ETC1 texture in mobile Safari’ by ekharkunov
This fix checks if device supports ETC2 and upload texture as ETC2 instead of ETC1.
FIX: (#12846) ‘Fix collapsed canvas on reboot’ by ekharkunov
This fixes an issue when a call to sys.reboot() in a web build caused the screen to become empty until first window resize event.
FIX: (#12850) ‘Fix issue with fullscreen window size and display scale other than 100%’ by britzl
This fixes an issue on Windows and Linux with the recently introduced new windowed fullscreen mode. The engine would size the window to the physical monitor and then on top of that apply display scale causing the fullscreen window to become larger (or smaller) than the monitor size depending on the OS display scale setting.
FIX: (#12877) ‘Fix crash when add font glyph to cache’ by ekharkunov
This fixes a crash when the font glyph cache is updated.
FIX: (#12868) ‘Fix transcoding of non-RGBA uncompressed texture arrays’ by ekharkunov
Fix how graphical transcoder pass non-RGBA data to the consumers
FIX: (#12896) ‘Fix sound exhaustion when Web Audio is unavailable’ by AGulev
HTML5 games now continue advancing sounds silently when the browser cannot create or run a Web Audio context. This prevents completed sounds from occupying all configured sound instances. When audio becomes available, output recovers automatically and active sounds continue from their current logical position.
FIX: (#12758) ‘Normalize the gamepad name in dmHID::GetGamepadDeviceName()’ by JCash
The user facing gamepad name now is trimmed of whitespace:
E.g. 'USB Joystick ' will now show as 'USB Joystick'.
FIX: (#12264) ‘Add OpenType CFF font support’ by JCash, defold-services
This change adds .otf font support as well as TrueType glyf and OpenType CFF1/CFF2 outlines in both legacy and full-shaping engines. The TrueType SDF generation has been optimized by 3.6x-5.9x. Full text shaping speed has improved by 17-18%
Fixes: Weird font displaying while using font generation · Issue #12264 · defold/defold · GitHub
Fixes: Runtime-generated 96 px distance-field IBM Plex Mono font crashes the OpenGL renderer · Issue #12901 · defold/defold · GitHub
FIX: (#12901) ‘Fix for font glyph ascent being a negative value’ by JCash
This fixes a crash when the font glyph ascent is a negative value.
FIX: (#12680) ‘Fix Linux territory detection for encoded locales’ by AGulev
Linux builds now report the correct territory when the system locale includes a character encoding or modifier. For example, LANG=en_GB.UTF-8 now produces sys.get_sys_info().territory == "GB" instead of "8".
FIX: (#3247) ‘Report locale data consistently across platforms’ by AGulev
sys.get_sys_info() now consistently separates locale identifiers into language, device_language, and territory. For example, zh-Hans-AU produces zh, zh-Hans, and AU, while platform-specific locale metadata no longer leaks into these fields.
FIX: (#12602) ‘Changed Host header of the http request to use URI’s authority component’ by CodeForBeauty
The HTTP implementation had an issue with Host header. The header didn’t include the target port. Per RFC 9110 the header Host should include the target host and optionally target port. RFC 9112 §3.2 further specifies that the header Host should include the authority component of the uri excluding the userinfo.
FIX: (#12773) ‘Improve OpenGL shader compilation error reporting’ by AGulev
Shader compilation and linking failures on OpenGL and WebGL now produce actionable resource errors containing the shader stage, source path, and graphics-driver diagnostics. Invalid shader handles are no longer passed to WebGL, preventing misleading attachShader JavaScript exceptions.
FIX: (#12977) ‘Improved DDF encode/decode performance’ by JCash
Improved DDF (our internal message format) encoding and decoding performance, including up to 4.7× faster small-message decoding and 17% faster repeated-field decoding. Recursive message encoding is significantly faster: up to 95× in deep-message benchmarks.
FIX: (#12973) ‘Added support for cross repo source builds’ by JCash
Added support for cross repo builds for Switch and Playstation as well.
How to add a private repo side-by-side:
$ cd ./path/to/defold
defold$ ./scripts/build.py shell
defold$ ./scripts/build.py add_private_repo \
--platform=<platform> \
--private-repo=/absolute/path/to/private-repo
defold$ ./scripts/build.py install_ext --platform=<platform>
defold$ ./scripts/build.py build_engine --platform=<platform>
The config file for the mappings is .defold-platforms.
FIX: (#12976,#9941) ‘Replace Android ProGuard configuration with R8’ by AGulev
Android projects can now enable Java shrinking, optimization, and obfuscation with R8 by selecting a .keep rules file. Projects without one continue using D8, while the new built-in dmengine.keep provides safe defaults without the errors caused by the obsolete ProGuard configuration.
FIX: (#9102) ‘Fix slice 9 vertical and horizontally flipping sprites and GUI nodes’ by Jhonnyg
Vertically and horizontally flipping sprites and GUI nodes has now been fixed when slice-9 is being used.
FIX: (#12988) ‘Merge custom resources from extensions’ by Jhonnyg
Added support for allowing native extensions to contribute custom resources through their ext.properties files:
[project]
custom_resources.default = /extension_assets
These resources are automatically merged with custom resources declared by the project and by other extensions. They are then copied and included in Bob archives and Editor builds. This removes the need for users to manually duplicate an extension’s required custom-resource paths in game.project.
FIX: (#12677) ‘Use active override material to calculate correct vertex buffer capacity’ by Jhonnyg
Fixed an issue where the vertex memory for sprites were allocated based on the sprite’s own material. When the render script overrides the material that has a different vertex layout, this could cause the vertex attribute write functions to write past the buffer limits, causing an engine crash. This has now been addressed by taking the layout of the override material into account.
FIX: (#12997) ‘Update to Bullet 3D v3.25’ by JCash, defold-services
This is an internal update of Bullet 3D v3.25 The new version includes stability and performance fixes.
FIX: (#13027) ‘Added dmArray::EnsureSize() to dmSDK’ by JCash
This function helps with the common pattern:
if (array.Capacity() < size)
{
array.SetCapacity(size);
}
array.SetSize(size);
FIX: (#13016) ‘Refactor VkQuality integration to skip the java glue code’ by Jhonnyg
Fixed a crash happening inside the VkQuality library (which automatically picks OpenGL or Vulkan) on some devices. This has been fixed by running the VkQuality assessment later during the initialisation phase of the application.
FIX: (#9043) ‘Fix HTML5 size verification’ by ekharkunov
This fixes a long standing issue with size verification of downloaded files in an HTML5 build. The engine loader will now also retry downloaded if file verification failed. It is also possible to completely disable size verification by checking html5.verify_downloaded_file_size property in game.project.
FIX: (#13038) ‘Fix Android bundling for the x86_64 architecture when stripping executables’ by ekharkunov
Bundling an Android app for the x86_64 architecture no longer fails when executables are stripped.
Editor
NEW: (#7186) ‘Show release notes during update process and bundle with the editor’ by JosephFerano
After pressing “Update Available”, you will have a list of changes available so you know what you are getting when updating. Release notes can also be viewed now from the editor from Help > Release Notes.
NEW: (#12708) ‘Add /command/compile and /command/run endpoints to editor server’ by vlaaad
Now, third-party IDEs and coding agents can compile the project without running it.
NEW: (#8297) ‘Improve property view and form tooltips’ by vlaaad
The editor now shows more useful information in its tooltips.
NEW: (#12707) ‘Allow running games without taking focus’ by AGulev
The editor’s run HTTP command can now launch or reboot a game without taking focus by passing focus=false. Existing workflows remain unchanged because games continue to start focused by default.
NEW: (#12727) ‘Show multiple notifications at once’ by vlaaad
The editor now has enough useful notifications that many may be emitted at the same time. Previously, we showed only 1 at a time; now we show up to 3, with an indicator if there are more.
NEW: (#10913) ‘Quit Defold if the project folder was removed or moved’ by vlaaad
If a project directory is removed or renamed, the Defold editor can no longer be used. Previously, the editor raised an exception in such cases. Now, we show a dialog informing the user that the editor will quit:
NEW: (#12472) ‘Remember scene settings and camera state, better camera and grid defaults’ by JosephFerano
This change persists scene settings and camera state:
- Camera state (2D/3D, position, rotation, zoom, etc;) is now remembered for every resource. If a resource tab is closed (like collection, atlas, go, etc;) or the editor is restarted, the camera will restored to the state it was in.
- Scene visibility settings are also now per scene and remembered. The visibility for one collection can be different from another.
- 3D resources (such as model, gltf/glb,mesh, etc;) now start in perspective mode
- Grid settings now remember if working in a 2D or 3D scene. When the 2D button is toggled the grid settings will change to whatever was configured for that specific mode.
NEW: (#12671,#8919) ‘Support text shaping preview in Editor’ by JCash
We now use engine runtime to render fonts in editor. This helps us keep the same visuals in both editor and at runtime, e.g. for RTL text (arabic) or similar.
NEW: (#12841) ‘Format document LSP call with command shortcuts’ by JosephFerano
You can now format your whole Lua script with Alt+Shift+F
NEW: (#12918) ‘Add editor script API to open code resources at a particular line’ by vlaaad
We added 2 optional arguments to the editor.ui.open_resource function: view and args.
For example, to open a script at line 10, you can use the following code:
-- 1-indexed line
editor.ui.open_resource("/my/script.lua", "code", { line = 10 })
-- same thing, but with explicit 1-indexed column
editor.ui.open_resource("/my/script.lua", "code", { line = 10, column = 1 })
You can also select a particular range of text by providing from and to cursor positions:
-- select line 10, columns 1 to 12
editor.ui.open_resource("/my/script.lua", "code", {
from = { line = 10, column = 1 },
to = { line = 10, column = 12 }
})
NEW: (#12611) ‘Editor uses the latest Basic 3D template’ by Jhonnyg
The “Basic 3D” template has now been updated to use the new light components.
NEW: (#8420) ‘Add new text property type’ by Jhonnyg
Scripts can now declare text properties with go.property(), edit and override them using a multi-line text field in the editor, and access them like other script properties at runtime.
Text properties support UTF-8 and newline characters:
go.property("greeting", "Hello!\nWelcome to the game.")
function init(self)
print(self.greeting)
-- Label text is now a regular component property.
go.set("#label", "text", self.greeting)
local label_text = go.get("#label", "text")
end
Text property defaults and overrides can be configured on script components in game objects and collections.
label.set_text() and label.get_text() are now deprecated in favor of go.set() and go.get() using the label’s “text” property. The deprecated functions have not been removed and remain available for backward compatibility.
- Adds a multi-line editor control for text script properties.
- Supports text property defaults and overrides in game objects, embedded instances, and collections.
- Preserves UTF-8 and multi-line values through saving and building.
- Rejects embedded NUL characters with a validation error.
- Adds parser and integration coverage for editing, overriding, resetting, saving, and building text properties.
NEW: (#6895) ‘Add validated Lua API type annotations to the editor’ by AGulev, vlaaad
Defold now ships accurate Lua annotations for game and editor scripts and uses them with the upstream Lua Language Server. This enables Defold-aware completions and diagnostics, including editor.* functions and constants, recognizes built-in types such as hash, url, and vectors, and prevents invalid API documentation from being published.
NEW: (#12867) ‘Added support for 3D collision meshes’ by JCash
With this change, the user can select a generic 3D mesh as a collision shape.
It helps when you want detailed collision on buildings and level geometry.
- Added
meshproperty to theModelcomponent - Added
meshcollision shape type
New Lua constants:
- physics.SHAPE_TYPE_MESH
- bullet3d.shape.SHAPE_TYPE_MESH
NEW: (#12916,#12829) ‘Make editor endpoints await command completion’ by vlaaad, matgis
Now, /command/build-html5, /command/debugger-start and /command/hot-reload endpoints return structured results upon completion.
NEW: (#13024) ‘Return target URL when launching a game using editor HTTP API’ by vlaaad
Now, the editor HTTP API returns the engine URL when running a game, allowing agents and third-party tools to find it more easily. Previously, finding the URL required parsing the engine log.
Example:
curl -sS -X POST "http://127.0.0.1:$(cat .internal/editor.port)/command/run" | jq
{
"success": true,
"issues": [],
"target": {
"url": "http://127.0.0.1:58715"
}
}
NEW: (#11527,#12993) ‘Format on save with option’ by JosephFerano
Using the new LSP format document/format region feature Alt + Shift + F, there is now an option in Preferences > Code for running the formatter for all files on save. This option is disabled by default and must be enabled.
FIX: (#12552) ‘Fix exception that sometimes pops up when using the editor’ by vlaaad
Sometimes, using the editor can result in null pointer exceptions. Now we prevent this error from occurring.
FIX: (#12698) ‘Fix exception when zooming in on an animation preview too much’ by vlaaad
Previously, excessive zooming could cause the animation preview in a scene view to become too large, causing GL errors. Now, we limit the size by the viewport.
FIX: (#11299) ‘Notification when editor behavior is disabled after error’ by JosephFerano
On rare occasions whenever the editor encountered an error, the editor might lose functionality. There is now a notification in such a case that will let you attempt to re-enable the disabled parts and optionally restart the editor as well. There’s also a function available for coding agents to attempt the same recovery.
FIX: (#5875) ‘Fix infrequent exception when dragging items into editor on macOS’ by vlaaad
Sometimes, dragging files from Finder into the editor could result in an exception. This should no longer happen.
FIX: (#12726) ‘Reject invalid characters in resource inputs’ by vlaaad
It was never allowed to create resources with invalid characters like “:” in the name, but now it’s also explicitly disallowed by the editor to select such resources in properties views. Previously, using some invalid characters would result in exceptions thrown in the editor.
FIX: (#11509) ‘Validate that welcome project files are actually game.project files’ by vlaaad
It’s possible to attempt to open a non-game.project file in the editor, which poisons the welcome screen and may make it very slow to open. Now the issue is fixed.
FIX: (#11794) ‘Filtered “Search in Files” search speed improvement’ by JosephFerano
When preparing search results, the editor would grab all textual resources without considering excluded file types from the search. Now the search dialog will only prepare the included file types for scanning, improving the speed at which results can start.
FIX: (#12887) ‘Add “skip this release” button’ by JosephFerano
Currently, there’s no way to skip a new release of Defold so the “Update Available” status goes away, instead it will sit there forever until the user decides to upgrade. This PR adds a “skip” button in the release notes dialog as well as a context menu entry in “Help > Check for Updates” to allow the user to upgrade if they change their minds. For stable, this will effectively skip a Defold minor version (unless there’s a patch release), but for alpha/beta, new releases means you will still get prompted for new releases in the same version.
FIX: (#12889) ‘Per-channel update bundle directories’ by JosephFerano
For users with multiple editor installations with different channels (alpha, beta, stable), downloading an update for one channel would clobber another. This PR now saves the bundle per channel so they can be downloaded and installed independently.
FIX: (#12670) ‘Fix right click context menu not showing selected object in scene’ by JosephFerano
This fixes an issue when right clicking on an object in a scene view, the first click does not include the recently selected object it seems, so “Show/Hide Selected Objects” appears disabled.
FIX: (#11928,#11492,#7618) ‘Improve material resource view UX’ by JosephFerano
We now use a different layout for the material vertex/fragment constants and samplers to make it easy to edit values.
FIX: (#12927) ‘Fix markdown performance degradation with very large images’ by JosephFerano
This change improves performance when viewing markdown files containing large images.
FIX: (#12951) ‘Fix LSP document symbols race condition when starting editor’ by JosephFerano
Sometimes script files could load first before Lua LSP had a chance to finish loading so the structure pane and Jump to Symbol would not work until modifying the file.






