Defold 1.10.3 BETA
Important notes
- CHANGE TO SYS.SAVE() and SYS.LOAD() - When using
sys.load()
to read from a corrupt file or from a file which wasn’t created usingsys.save()
the engine would treat the file as using the legacy save file format from more than 11 years ago. This fallback to loading legacy format files would actually mostly result in engine crashes on corrupt files and cause more problems than it solved. The engine will now ignore such files and throw a Lua error.
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.3 - beta · defold/defold · GitHub
Summary
- BREAKING CHANGE: (#10765) Fix crashes in
sys.load()
when trying to load corrupt files (by britzl) - NEW: (#10598) Make sure the viewport is scaled to fill the device display (by britzl)
- NEW: (#10472) The textures that were set using
go.set()/gui.set()
for the GUI component are internally used as dynamic textures. (by AGulev) - NEW: (#7220) Added IsURL(), ToURL(), PushURL() and 2 variants of CheckURL() to dmsdk. (by Gert-Jan)
- NEW: (#8304,#8304) Introduce code view context menu (by sprocketc)
- NEW: (#10708) Adjusted default max time step of the engine to 1/30 of a second (by britzl)
- FIX: (#10811) Make the browser performance timeline optional and default it to off (by smagnuso)
- FIX: (#10671) Fix issue where profiler doesn’t work after reboot (by AGulev)
- FIX: (#10691,#10690) Sanitize float values and escape strings for valid JSON output in scene graph dump (by deurell)
- FIX: (#10174) Removed modifier from RTRIGGER on Linux (by britzl)
- FIX: (#10796) Collision physics messages should be still sent when collision events are disabled in only one of the collision objects (by aglitchman)
- FIX: (#10872) Fix false positive physics overflow warning logs when physics.max_collision/physics.max_contacts are set to 0 (by deurell)
- FIX: (#10815) Fix sys.get_sys_info() returning junk
system_version
on web platform (by aglitchman) - FIX: (#7461) Fixed Android debug symbols for vanilla engine (by ekharkunov)
- FIX: (#10650) Deduplicate resource data blobs in the ARCD archive. (by AGulev)
- FIX: (#10846) Update GLFW gamepad functions for the latest version of Emscripten (by aglitchman)
- FIX: (#10735) Improved gamepad detection on engine startup (by britzl)
- FIX: (#10788) Moved GetCollectionByHash() to dmsdk. (by Gert-Jan)
- FIX: (#10800) Moved PropertyContainerCreateFromLua() to dmsdk (by Gert-Jan)
- FIX: (#10223) Fix crash in HTML5 build when using HTTP request with the progress flag ON (by AGulev)
- FIX: (#10870) Fix example for resource.create_atlas() (by HalfstarDev)
- FIX: (#10856) Improved gamepad connect handling (by britzl)
- FIX: (#10832) Display tile attributes error on scene (by sprocketc)
- FIX: (#10829) Fixed issue where
drag handle
interrupted the Tab key from moving to the next field (by AGulev) - FIX: (#10670) Fix issue where rebuilding the game from the Editor doesn’t keep the simulated resolution (by AGulev)
- FIX: (#10770,#8815,#10595) Fix StackOverflow issue when pasting a too long string in the Editor (by AGulev)
- FIX: (#10790) Edit GUI particlefx resources using editor scripts (by vlaaad)
- FIX: (#10733) Edit collision shapes using editor scripts (by vlaaad)
- FIX: (#10774) Edit GUI layers using editor scripts (by vlaaad)
- FIX: (#10810) Edit GUI layouts using editor scripts (by vlaaad)
- FIX: (#10801) Edit GUI fonts using editor scripts (by vlaaad)
- FIX: (#10822) Add collections and game objects to root on drop (by sprocketc)
- FIX: (#10858) Edit GUI nodes using editor scripts (by vlaaad)
Engine
BREAKING CHANGE: (#10765) ‘Fix crashes in sys.load()
when trying to load corrupt files’ by britzl
When using sys.load()
to read from a corrupt file or from a file which wasn’t created using sys.save()
the engine would treat the file as using the legacy save file format from more than 11 years ago. This fallback to loading legacy format files would actually mostly result in engine crashes on corrupt files and cause more problems than it solved. The engine will now ignore such files and throw a Lua error.
NEW: (#10598) ‘Make sure the viewport is scaled to fill the device display’ by britzl
Added viewport-fit=cover
to the viewport
meta tag in index.html for web builds. This setting will make sure the viewport is scaled to fill the device display, even when the device has a camera notch or similar.
Keep in mind that not all device displays are rectangular. A display may have a notch, hole or rounded corners. Ensure that important content doesn’t end up outside the display.
NEW: (#10472) ‘The textures that were set using go.set()/gui.set()
for the GUI component are internally used as dynamic textures.’ by AGulev
Now, all the textures that were set to a GUI
component from outside are internally considered dynamic GUI textures in the engine.
Pay attention: if you set textures into the GUI this way, you may need to increase
Max Dynamic Textures
(default is 128) in the GUI component.
NEW: (#7220) ‘Added IsURL(), ToURL(), PushURL() and 2 variants of CheckURL() to dmsdk.’ by Gert-Jan
Allows native extensions to have better control over URLs in the lua state.
FIX: (#10811) ‘Make the browser performance timeline optional and default it to off’ by smagnuso
In game one can enable the performance timeline if desired
FIX: (#10671) ‘Fix issue where profiler doesn’t work after reboot’ by AGulev
Make sure that the profiler shows the correct scope and property names after the engine reboot.
FIX: (#10691,#10690) ‘Sanitize float values and escape strings for valid JSON output in scene graph dump’ by deurell
Fix for non-finite floats and unescaped strings generating invalid JSON output in scene graph dumps.
FIX: (#10174) ‘Removed modifier from RTRIGGER on Linux’ by britzl
Tentative fix for broken RTRIGGER mapping on Linux since upgrade to GLFW3. Removed GAMEPAD_MODIFIER_NEGATE.
FIX: (#10796) ‘Collision physics messages should be still sent when collision events are disabled in only one of the collision objects’ by aglitchman
Fixed a bug where disabling Generate Collision Events
or Generate Contact Events
in a collision object could cause collision physics messages to stop being sent in 3D physics for objects where this was not disabled.
FIX: (#10872) ‘Fix false positive physics overflow warning logs when physics.max_collision/physics.max_contacts are set to 0’ by deurell
Fix false positive physics overflow warning logs when physics.max_collision/physics.max_contacts are set to 0
FIX: (#10815) ‘Fix sys.get_sys_info() returning junk system_version
on web platform’ by aglitchman
The sys.get_sys_info()
function may have returned junk in the system_version
field for the web platform because it used an uninitialised structure as a source of data.
FIX: (#7461) ‘Fixed Android debug symbols for vanilla engine’ by ekharkunov
Fixed vanilla engine symbols downloading for Android. Added linker flag to generate build uuid for Android
FIX: (#10650) ‘Deduplicate resource data blobs in the ARCD archive.’ by AGulev
Fixes issue where two identical resources would be written into the arcd
archive because they have different paths in the project.
From now on, only one data blob will be written into the archive, and all duplicates will reference this single data blob from the manifest (and arci
) file.
All the duplicates are still shown in the build report but with a size of 0.
Also, the compressed size in the build report now includes alignment paddings for each file, which makes the arcd
archive size equal to the total bytes shown in the report.
FIX: (#10846) ‘Update GLFW gamepad functions for the latest version of Emscripten’ by aglitchman
The gamepad code has been updated in GLFW for web for the latest version of Emscripten.
FIX: (#10735) ‘Improved gamepad detection on engine startup’ by britzl
The engine may crash on startup on windows (possibly also Linux) when detecting connected gamepads.
FIX: (#10788) ‘Moved GetCollectionByHash() to dmsdk.’ by Gert-Jan
Moved GetCollectionByHash() to dmsdk to allow for URLs to be turned into HCollection/HInstance/HComponent.
FIX: (#10800) ‘Moved PropertyContainerCreateFromLua() to dmsdk’ by Gert-Jan
Added dmScript:: PropertyContainerCreateFromLua()
to dmsdk/gameobject/script.h
FIX: (#10223) ‘Fix crash in HTML5 build when using HTTP request with the progress flag ON’ by AGulev
Fixed a crash that happened only in the HTML5 build when an HTTP request was used with { report_progress = true }
.
FIX: (#10870) ‘Fix example for resource.create_atlas()’ by HalfstarDev
FIX: (#10856) ‘Improved gamepad connect handling’ by britzl
If the engine fails to get the name of a connected gamepad a default name will be used to avoid a crash on Windows.
Editor
NEW: (#8304,#8304) ‘Introduce code view context menu’ by sprocketc
NEW: (#10708) ‘Adjusted default max time step of the engine to 1/30 of a second’ by britzl
The default value for max time step was set to 0.5 seconds. Under normal use the engine will have a much lower time step and very rarely exceed 0.5 seconds, but when the game returns from an iconified state it is almost guaranteed to happen. The problem when this happens is that a value of 0.5 will be much too high and have a negative impact on physics simulations and other calculations where a lower time step is expected. This change sets the default value to 0.03333 seconds (ie 30 frames per second).
FIX: (#10832) ‘Display tile attributes error on scene’ by sprocketc
Display tile attributes error on the scene view, instead of throwing an exception.
FIX: (#10829) ‘Fixed issue where drag handle
interrupted the Tab key from moving to the next field’ by AGulev
FIX: (#10670) ‘Fix issue where rebuilding the game from the Editor doesn’t keep the simulated resolution’ by AGulev
If the window resolution has been set in the Editor, it will be applied again when the engine is restarted from the Editor using Build To Target.
FIX: (#10770,#8815,#10595) ‘Fix StackOverflow issue when pasting a too long string in the Editor’ by AGulev
FIX: (#10790) ‘Edit GUI particlefx resources using editor scripts’ by vlaaad
Now it’s possible to edit particlefx resources in the GUI using editor scripts, e.g.:
editor.transact({
editor.tx.add("/main.gui", "particlefxs", {
particlefx = "/confetti.particlefx"
})
})
FIX: (#10733) ‘Edit collision shapes using editor scripts’ by vlaaad
It is now possible to edit collision shapes using editor scripts! To support this, we added new "shapes"
node list property to collision objects. For example, adding a new shape is done like this:
editor.transact({
editor.tx.add("/hero.collisionobject", "shapes", {
type = "shape-type-box" -- or "shape-type-sphere", "shape-type-capsule"
})
})
To create a new collision shape, it is necessary to specify the type of the shape. The available types are:
shape-type-box
- box shape withdimensions
propertyshape-type-sphere
- sphere shape withdiameter
propertyshape-type-capsule
- capsule shape withdiameter
andheight
properties
FIX: (#10774) ‘Edit GUI layers using editor scripts’ by vlaaad
Now it’s possible to edit GUI layers using editor scripts, e.g.:
editor.transact({
editor.tx.add("/main.gui", "layers", {name = "foreground"}),
editor.tx.add("/main.gui", "layers", {name = "background"})
})
Additionally, it’s possible to reorder layers:
local fg, bg = table.unpack(editor.get("/main.gui", "layers"))
editor.transact({
editor.tx.reorder("/main.gui", "layers", {bg, fg})
})
FIX: (#10810) ‘Edit GUI layouts using editor scripts’ by vlaaad
Now you can edit a list of GUI layouts using editor scripts, e.g.:
editor.transact({
editor.tx.add("/main.gui", layouts, {name = "Landscape"}),
editor.tx.add("/main.gui", layouts, {name = "Portrait"})
})
FIX: (#10801) ‘Edit GUI fonts using editor scripts’ by vlaaad
You can now edit GUI fonts using editor scripts, e.g.:
editor.transact({
editor.tx.add("/main.gui", "fonts", {
name = "font",
font = "/main.font"
})
})
FIX: (#10822) ‘Add collections and game objects to root on drop’ by sprocketc
FIX: (#10858) ‘Edit GUI nodes using editor scripts’ by vlaaad
Now you can edit GUI nodes using editor scripts, e.g.:
editor.transact({
editor.tx.add("/main.gui", "nodes", {
type = "gui-node-type-box",
position = {20, 20, 20}
}),
editor.tx.add("/main.gui", "nodes", {
type = "gui-node-type-template",
template = "/button.gui"
}),
})
If the GUI file defines layouts, you can get and set the values from layouts using layout:property
syntax, e.g.:
local node = editor.get("/main.gui", "nodes")[1]
-- GET:
local position = editor.get(node, "position")
pprint(position) -- {20, 20, 20}
local landscape_position = editor.get(node, "Landscape:position")
pprint(landscape_position) -- {20, 20, 20}
-- SET:
editor.transact({
editor.tx.set(node, "Landscape:position", {30, 30, 30})
})
pprint(editor.get(node, "Landscape:position")) -- {30, 30, 30}
Layout properties that were set can be reset to their default values using editor.tx.reset
:
print(editor.can_reset(node, "Landscape:position")) -- true
editor.transact({
editor.tx.reset(node, "Landscape:position")
})
Template nodes can be read, but not edited: you can only set the properties of the template node tree:
local template = editor.get("/main.gui", "nodes")[2]
print(editor.can_add(template, "nodes")) -- false
local node_in_template = editor.get(template, "nodes")[1]
editor.transact({
editor.tx.set(node_in_template, "text", "Button text")
})
print(editor.can_reset(node_in_template, "text")) -- true (overrides a value in the template)