Defold 1.10.1 BETA
Disclaimer
This is a BETA release, and it might have issues that could potentially be disruptive for you and your teams 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.10.1 - beta · defold/defold · GitHub
Summary
- BREAKING CHANGE: (#10454) Throw a Lua error if
nil
passed intogo.delete()
function (by AGulev) - NEW: (#10430) Faster LU archive creation + Added option for compression level. (by AGulev)
- NEW: (#10442) Added dynamic profiling scope for extensions (by britzl)
- NEW: (#10464) Resume HTML5 audio on “mouse down” and “touch start” events (by aglitchman)
- NEW: (#9946) Added API to get AABB for models. (by ekharkunov)
- NEW: (#10554) Added missing API docs to dmHashTable (by britzl)
- NEW: (#10555) Added missing Gamepad API docs to dmHID (by britzl)
- NEW: (#10576) Add a fallback if globalThis is missing (by britzl)
- NEW: (#10378) Auto-insert closing parens in the code editor (by vlaaad)
- NEW: (#10380) Add build server username/password prefs fields (by vlaaad)
- NEW: (#10433) Introduce global console filtering toggle (by sprocketc)
- NEW: (#10490) Do not autocomplete Lua code in comments (by AGulev)
- NEW: (#10494) Add Project and Debug locations for editor script commands (by vlaaad)
- NEW: (#10505) Option to hide the Changed File panel (by AGulev)
- NEW: (#10512) Add editor shortcut keymap configuration (by vlaaad)
- NEW: (#10537) Make it clear that some resources cannot be edited (by AGulev)
- NEW: (#10560) Add LSP rename support (by vlaaad)
- NEW: (#10570) Transform top selected nodes only (by sprocketc)
- FIX: (#10307) Added support for .opus sound format (by JCash)
- FIX: (#10243) Sound system mixer rework (down sampling enablement and general optimizations) (by thengel01)
- FIX: (#10394) Fontc now uses the ttf font input to determine if it’s monospaced (by JCash)
- FIX: (#10544) Make sure the engine picks the best GPU (by AGulev)
- FIX: (#10462) Use unique identifiers for factory-spawned game objects (by AGulev)
- FIX: (#10496) Log error when vertex declaration doesn’t match the vertex data in Vulkan (by JCash)
- FIX: (#10541) Use raw input for gamepads even if no gamepad is specified in the gamepad mappings (by AGulev)
- FIX: (#10563) Faster way to unpack tools in Bob (by AGulev)
- FIX: (#10558) Cleanup the input action table (by britzl)
- FIX: (#10580) Fixed models not rendering in the editor in some situations (by matgis)
- FIX: (#10556) Fix label drag issues (by sprocketc)
- FIX: (#10495) Increased text contrast in diff view (by britzl)
- FIX: (#10422) Consume the mouse event when clicking outside of the color popup (by sprocketc)
- FIX: (#10373) Introduce code zoom on scroll preference (by sprocketc)
- FIX: (#10363) Fix menu bar visibility on toolbar refresh (by sprocketc)
- FIX: (#10469) Hide toolbars of inactive tabs (by sprocketc)
- FIX: (#10476) Fix state when closing the inactive tab on split configurations (by sprocketc)
- FIX: (#10492) Make it clear when a collision object shape is unnamed (by AGulev)
- FIX: (#10491) Fixed the issue where horizontal scrolling in the text editor doesn’t account for changes in code font size (by AGulev)
- FIX: (#10488) Fix the scale tool for rotated objects in the editor (by AGulev)
- FIX: (#10533) Fixed the issue where transformation gizmos for models disappeared when “Component Guides” was turned off (by AGulev)
- FIX: (#10561) Fix initial document-width calculation for tab-indented code files (by matgis)
- FIX: (#10581) Hide reset button if some of the props are not overridable (by sprocketc)
- FIX: (#10461) Create GUI dependencies on drop (by sprocketc)
- FIX: (#10584) Correctly apply model material overrides in editor scene view (by matgis)
Engine
BREAKING CHANGE: (#10454) ‘Throw a Lua error if nil
passed into go.delete()
function’ by AGulev
Passing
nil
to go.delete()
results in a Lua error, as this aligns with expected behavior and helps catch logical issues in the code.
NEW: (#10430) 'Faster LU archive creation + Added option for compression level. ’ by AGulev
A new option was added to the LiveUpdate settings: ZIP archive compression level, with levels ranging from 0 to 9.
The default level is 1 (the same as before the changes).
This option is useful in cases where compression is not needed at all—e.g., when Poki repacks the archive and applies their own compression. In such cases, using level 0 will significantly speed up archive creation and the bundling process.
Additionally, the archive writer itself was improved, making archive creation at least twice as fast (regardless of whether compression is used or not).
On a test suite with 172,296 files, which were used for benchmarking on a Mac M1 Pro Max:
- Archive creation before changes (level 1 compression): 56 seconds
- With performance improvements and default level 1 compression: 28 seconds
- With performance improvements and level 0 compression: 1.8 seconds
NEW: (#10442) ‘Added dynamic profiling scope for extensions’ by britzl
Added per profiling scopes per extension update.
Example using profiler.dump_frame() shows the Extension
scope and WebView
, LiveUpdate
and Profiler
extensions:
INFO:PROFILER: Profiler threads:
INFO:PROFILER: Thread 'sound': 0.000001
INFO:PROFILER: 'UpdateInternal': time: 0.001 ms self: 0.001 ms count: 1
INFO:PROFILER: Thread 'Main': 0.006706
INFO:PROFILER: 'Step': time: 6.706 ms self: 0.007 ms count: 1
INFO:PROFILER: 'Frame': time: 6.699 ms self: 0.328 ms count: 1
INFO:PROFILER: 'Sim': time: 0.563 ms self: 0.050 ms count: 1
INFO:PROFILER: 'Resource': time: 0.001 ms self: 0.001 ms count: 1
INFO:PROFILER: 'UpdateFactory': time: 0.000 ms self: 0.000 ms count: 1
INFO:PROFILER: 'JobThreadUpdate': time: 0.000 ms self: 0.000 ms count: 1
INFO:PROFILER: 'Hid': time: 0.207 ms self: 0.207 ms count: 1
INFO:PROFILER: 'JobThreadUpdate': time: 0.000 ms self: 0.000 ms count: 1
INFO:PROFILER: 'Extension': time: 0.082 ms self: 0.003 ms count: 1
INFO:PROFILER: 'WebView': time: 0.000 ms self: 0.000 ms count: 1
INFO:PROFILER: 'LiveUpdate': time: 0.001 ms self: 0.000 ms count: 1
INFO:PROFILER: 'LiveUpdate': time: 0.001 ms self: 0.001 ms count: 1
INFO:PROFILER: 'JobThreadUpdate': time: 0.000 ms self: 0.000 ms count: 1
INFO:PROFILER: 'Profiler': time: 0.078 ms self: 0.078 ms count: 1
INFO:PROFILER: 'Sound': time: 0.000 ms self: 0.000 ms count: 1
NEW: (#10464) ‘Resume HTML5 audio on “mouse down” and “touch start” events’ by aglitchman
AudioContext now resumes on events ‘mouse down’ and ‘touch start’. Previously it was resuming on ‘mouse up’ and ‘touch end’ event and users hear the first sound with delay, i.e. only when they take their finger off the screen or mouse.
NEW: (#9946) ‘Added API to get AABB for models.’ by ekharkunov
Added new API to get AABB information from models:
model.get_aabb()
model.get_mesh_aabb()
AABB information return in form of table with two fieldsmin
andmax
. Both of them has typevector3
.
Functions take 1 argument: url of the model component.
model.get_aabb()
returns AABB information for the whole model in local coordinate space.
model.get_mesh_aabb()
function returns a dictionary of AABB information for all meshes in the following form:
<hashed_mesh_id> = <aabb_information>
Usage example:
model.get_aabb()
model.get_aabb("#model") -> { min = vmath.vector3(-2.5, -3.0, 0), max = vmath.vector3(1.5, 5.5, 0) }
model.get_mesh_aabb()
model.get_mesh_aabb("#model") -> { hash("Sword") = { min = vmath.vector3(-0.5, -0.5, 0), max = vmath.vector3(0.5, 0.5, 0) }, hash("Shield") = { min = vmath.vector3(-0.5, -0.5, -0.5), max = vmath.vector3(0.5, 0.5, 0.5) } }
NEW: (#10554) ‘Added missing API docs to dmHashTable’ by britzl
Added missing API documentation for dmHashTable
constructor, Clear
, Capacity
, Swap
, Empty
, Put
, Erase
and Iterate
.
NEW: (#10555) ‘Added missing Gamepad API docs to dmHID’ by britzl
Added API documentation for GetGamepadPacket
, GetGamepadButton
and GetGamepadHat
.
NEW: (#10576) ‘Add a fallback if globalThis is missing’ by britzl
The global object (ie globalThis
) is not set in old browsers and code in dmLoader.js etc rely on it being present. This change makes sure the Window
object is set as globalThis
according to the specification.
FIX: (#10307) ‘Added support for .opus sound format’ by JCash
We’ve added support for the .opus audio format.
It is a very effective compression, and is suitable for both music and sound effects.
As we are very conservative of the engine build size, we chose to add this support as an opt-in.
In order to add support for .opus files at runtime, you need to create an App Manifest and chose Include Sound Decoder Opus
.
Similarly, it is now also possible to exclude the other decoders (.wav and .ogg) allowing you to slim down the engine size even further.
FIX: (#10243) ‘Sound system mixer rework (down sampling enablement and general optimizations)’ by thengel01
We’ve changed our sound resampler to support any sample rate.
The resampler now also supports SIMD code (SSE2 and wasm simd128) for better performance. It is currently enabled on platforms that support it , i.e. Windows, Linux, HTML5 and macOS (x64)
The change also reduces memory footprint than before.
FIX: (#10394) ‘Fontc now uses the ttf font input to determine if it’s monospaced’ by JCash
Previously, it was determined based on the output, but if the output was a single glyph, it was always determined as monospaced.
FIX: (#10544) ‘Make sure the engine picks the best GPU’ by AGulev
GLFW for Windows is now built with GLFW_USE_HYBRID_HPG
enabled to export the NvOptimusEnablement and AmdPowerXpressRequestHighPerformance symbols, which force the use of the high-performance GPU on Nvidia Optimus and AMD PowerXpress systems.
FIX: (#10462) ‘Use unique identifiers for factory-spawned game objects’ by AGulev
All objects spawned with factories now have unique identifiers, which helps to avoid hidden issues
FIX: (#10496) ‘Log error when vertex declaration doesn’t match the vertex data in Vulkan’ by JCash
FIX: (#10541) ‘Use raw input for gamepads even if no gamepad is specified in the gamepad mappings’ by AGulev
Games which use only raw gamepad data will now receive input events even if the gamepad bindings file is empty.
FIX: (#10563) ‘Faster way to unpack tools in Bob’ by AGulev
This change speeds up unpacking of external tools and makes their use thread safe when using more than one thread.
FIX: (#10558) ‘Cleanup the input action table’ by britzl
If a mouse is connected the input action table always contains mouse position data even for input actions which are not related to the mouse. This change cleans up the input action table so that only values relevant to the input action is included:
- Text Triggers will only include
text
- Key Triggers will include
pressed
,released
,repeated
andvalue
- Mouse Triggers will include
pressed
,released
,repeated
,value
,x
,y
,dx
,dy
,screen_x
, screen_y,
screen_dxand
screen_dy` - As always mouse movement is implicitly sent if a Mouse Trigger is set. It will include
x
,y
,dx
,dy
,screen_x
, screen_y,
screen_dx,
screen_dy` and accelerometer data if on mobile - Touch Triggers will include
pressed
,released
,repeated
,value
,x
,y
,dx
,dy
,screen_x
, screen_y,
screen_dx,
screen_dyand
touch` - Gamepad Triggers will include
pressed
,released
,repeated
,value
,gamepad
Editor
NEW: (#10378) ‘Auto-insert closing parens in the code editor’ by vlaaad
NEW: (#10380) ‘Add build server username/password prefs fields’ by vlaaad
This changeset also adds a new prefs schema type in editor scripts: password, e.g.
function M.get_prefs_schema()
return {["my-extension.third-party-api-key"] = editor.prefs.schema.password()}
end
Password schema behaves as a string schema, but the value is encrypted in the prefs file.
NEW: (#10433) 'Introduce global console filtering toggle ’ by sprocketc
A global filter toggle button was introduced to the console tab.
NEW: (#10490) ‘Do not autocomplete Lua code in comments’ by AGulev
The code editor will no longer try to auto-complete Lua code in comments.
NEW: (#10494) ‘Add Project and Debug locations for editor script commands’ by vlaaad
Now this editor script will work:
local M = {}
function M.get_commands()
return {
{
label = "Project command",
locations = {"Project"},
run = function()
print("Run project command")
end
},
{
label = "Debug command",
locations = {"Debug"},
run = function()
print("Run debug command")
end
}
}
end
return M
NEW: (#10505) ‘Option to hide the Changed File panel’ by AGulev
New option View -> Toggle Changed Files Pane
that hides the Changed Files
panel.
NEW: (#10512) ‘Add editor shortcut keymap configuration’ by vlaaad
We added the Keymap tab to the Preferences dialog — now it’s possible to configure editor command shortcuts from within the editor:
Assigning shortcuts to commands defined in editor scripts is now also possible. If a command defines an id, it will appear in the Keymap configuration table. Example editor script:
local M = {}
function M.get_commands()
return {
editor.command({
label = "Print Git Status",
locations = {"Project"},
id = "vcs.print-git-status",
run = function(opts)
editor.execute("git", "status", {reload_resources=false})
end
})
}
end
return M
Now you can assign a shortcut:
NEW: (#10537) ‘Make it clear that some resources cannot be edited’ by AGulev
The editor now displays a message indicating that changes to files from libraries cannot be saved.
NEW: (#10560) ‘Add LSP rename support’ by vlaaad
Now you can rename symbols in the code editor:
NEW: (#10570) ‘Transform top selected nodes only’ by sprocketc
Selected children of already selected parents should not be transformed.
FIX: (#10580) ‘Fixed models not rendering in the editor in some situations’ by matgis
- Fixed an issue where model materials whose texture samplers were configured to use the project default filtering setting would not render in the editor viewport.
- Fixed an issue where model materials whose shaders used attributes that were not declared in the material or present in the mesh data would not render in the editor viewport.
FIX: (#10556) ‘Fix label drag issues’ by sprocketc
Handle various label drag issues.
FIX: (#10495) ‘Increased text contrast in diff view’ by britzl
Increased text contrast on green background when showing change diffs.
Old:
New:
FIX: (#10422) ‘Consume the mouse event when clicking outside of the color popup’ by sprocketc
Clicking outside of a color picker popup should not propagate.
FIX: (#10373) ‘Introduce code zoom on scroll preference’ by sprocketc
FIX: (#10363) ‘Fix menu bar visibility on toolbar refresh’ by sprocketc
This fixes an occasional menu bar visibility issue, triggered by a toolbar refresh.
FIX: (#10469) ‘Hide toolbars of inactive tabs’ by sprocketc
This should hide all toolbars of inactive tabs.
FIX: (#10476) ‘Fix state when closing the inactive tab on split configurations’ by sprocketc
FIX: (#10492) ‘Make it clear when a collision object shape is unnamed’ by AGulev
Make sure it’s clear from the outline when physics shapes are unnamed (names are only needed for runtime operations):
FIX: (#10491) ‘Fixed the issue where horizontal scrolling in the text editor doesn’t account for changes in code font size’ by AGulev
FIX: (#10488) ‘Fix the scale tool for rotated objects in the editor’ by AGulev
The scale tool in the scene editor will now work regardless of how the object was initially rotated. Previously an object rotated exactly 90 degrees along any axis would not be possible to rotate using the scale tool.
FIX: (#10533) ‘Fixed the issue where transformation gizmos for models disappeared when “Component Guides” was turned off’ by AGulev
FIX: (#10561) ‘Fix initial document-width calculation for tab-indented code files’ by matgis
Fixed an issue where you could not scroll the code editor far enough horizontally to view the whole document in code files indented using tabs.
FIX: (#10581) ‘Hide reset button if some of the props are not overridable’ by sprocketc
Check if all props of on a multi-selection are overridable in order to display the reset button.
FIX: (#10461) 'Create GUI dependencies on drop ’ by sprocketc
Allow dropping assets to GUI scenes to create dependencies.
FIX: (#10584) ‘Correctly apply model material overrides in editor scene view’ by matgis
Fixed an issue where model material overrides were not being correctly applied in when viewed in the editor Scene View.