Please pay attention to the scale_along_z
-related changes.
Also, this version includes deep refactoring of how the extender collects dependencies and builds Cocoapods. If you have custom extensions that use Cocoapods (have a Podfile
in the extension folder), make sure they build well using the stage server, and let us know otherwise.
scale_along_z
from the engine (by AGulev)camera.*
module useful (by AGulev)game.project
→ Box2D
(by AGulev)go.exists()
to query the existence of game objects across collections (by AGulev)zip.unpack
editor script function (by vlaaad)/game.properties
and ext.properties
(by vlaaad)sys.*
module on iOS and macOS (by AGulev)b2d.body
functions that always throw vector3 expected, got userdata
. (by AGulev)PANIC: unprotected error...
in some rare cases in Lua (by AGulev)sys.open_url()
reports false when a url is opened on Windows (by AGulev)BREAKING CHANGE: (#9529,#7441,#6165,#5679,#5631) ‘⚠️ Removed scale_along_z
from the engine’ by AGulev
scale_along_z
has been fully removed from the engine. Read the following information to understand how to migrate your projects.
scale_along_z
?
scale_along_z
was a hidden option in *.collection
files, set to 0
by default.
When set to 0
, scaling on objects and collections did not affect their z-position.
For example, if your sprite has a position x: 0.0, y: 0.0, z: 0.1
, and its GameObject has a scale x: 1.0, y: 1.0, z: 2.0
:
scale_along_z = 0
, the transform of the sprite remains x: 0.0, y: 0.0, z: 0.1
scale_along_z = 1
, the transform becomes x: 0.0, y: 0.0, z: 0.2
This was a legacy feature that introduced special-case logic and added complexity to the engine. While it had utility in some 2D projects, it was often a source of confusion in 3D projects. To unify 2D and 3D workflows, we’ve made the difficult decision to remove it, even though it’s a breaking change.
If you are unfamiliar with scale_along_z
, or you never explicitly set it to 1
, you need to update your project. If your project consistently used scale_along_z: 1
across all collections, no action is required.
To avoid unexpected behavior now that scaling affects Z-position:
go.set_scale(number|vector3)
with go.set_scale_xy(number|vector3)
scale
property via go.get()
, go.set()
, or go.animate()
, use the scale.xy
property insteadReview your GameObjects and Collections and check for use of the Z component in the scale
property.
If you find a non 1.0 Z scale in your project, investigate why it’s there. In most of 2D cases, the Z scale should always be 1.0 because it doesn’t affect anything. However, in some cases—such as pseudo-3D effects, perspective cameras, particles, 3D models, etc. Z-scaling may be intentional. These situations require manual review.
If all children of such an object have position.z == 0
, then behavior will not change.
But if position.z
is non-zero, then the scale will now affect it, and you’ll need to decide case by case how to proceed based on your game’s requirements.
For example:
scale.z
now affecting the children’s positions.scale.z
to 1.0 and instead scale all children individually (adjusting positions accordingly).Automatic migration is not possible due to the variety of use cases. Please review and adjust your project accordingly.
We apologize for the inconvenience and hope that this change leads to a more consistent and understandable workflow for all users.
NEW: (#10632) ‘Make aspect ratio–related function in the camera.*
module useful’ by AGulev
Changes in APIs:
camera.get_aspect_ratio()
– Now returns the effective aspect ratio (auto-calculated if auto is enabled, manual value if disabled)
camera.set_aspect_ratio()
– Sets the manual aspect ratio value, which is used only if auto is disabled
camera.get_auto_aspect_ratio()
– Returns whether auto-calculation is enabled
camera.set_auto_aspect_ratio()
– Controls whether to use auto-calculation or the manual value
NEW: (#10692) ‘Added physics solver parameters into game.project
→ Box2D
’ by AGulev
Added new [box2d]
section in game.project:
velocity_iterations
(default: 10) - Box2D 2.2 velocity solver iterationsposition_iterations
(default: 10) - Box2D 2.2 position solver iterationssub_step_count
(default: 4) - Box2D 3.x sub-stepping countUsing these new parameters, users can reduce iterations for better performance or increase for higher precision.
NEW: (#10795) ‘Enable go.exists()
to query the existence of game objects across collections’ by AGulev
With this fix, it will be possible to use the go.exists()
function to check if a game object exists in another collection.
FIX: (#10404) ‘Fixed an issue where a 16k x 16k atlas couldn’t be unpacked if the file size was bigger than 1 GB’ by AGulev The 1 GB limitation for compressed files was doubled to make it possible to work with 16k x 16k atlases.
FIX: (#11011) ‘Fixed crash when a material constant was used in a cloned node but the prototype node had been removed’ by AGulev This fix creates a separate material constant buffer for cloned nodes. This not only fixes the crash when the prototype node is removed, but also makes it possible to use independent values per cloned node.
FIX: (#11010) ‘Fix leaks in sys.*
module on iOS and macOS’ by AGulev
Fixed a couple of leaks in the sys.*
module, and freed memory allocated for a mount name upon unmount.
FIX: (#11017) ‘Fix few b2d.body
functions that always throw vector3 expected, got userdata
.’ by AGulev
FIX: (#11009) ‘Fix multipage atlas issue on HTML5 target running on Chrome on Android’ by AGulev Fixed an issue where multipage atlas can’t be transcoded and used in HTML5 on Chrome on Android. In such cases, the ASTC format will be marked as unsupported, and the next suitable format will be used (ETC2 in most cases).
FIX: (#11034) ‘An attempt to create an atlas bigger than 16384x16384 throws an error’ by AGulev Most modern GPUs don’t support textures larger than 16384x16384. Defold doesn’t support it either, and this fix simply adds a proper error to notify the user about the issue if they try to create such a texture.
FIX: (#10840,#8784) ‘Make it possible to work with rotated images in runtime-created atlases’ by AGulev
With this fix, resource.get_atlas()
returns the rotated
flag for geometries, and it’s now necessary to add the rotated
flag for geometries in resource.set_atlas()
.
This resolves issues with rotated images in some GUI cases.
FIX: (#8728) ‘Fix precision issue with multipage atlas’ by AGulev Fixed an issue where, in a paged atlas, textures were taken from the wrong page. This occurred in rare cases on devices using the WebGL1/OpenGL ES 2.0 graphics backend.
FIX: (#9392,#8540,#10453) ‘Fix PANIC: unprotected error...
in some rare cases in Lua’ by AGulev
Fixed PANIC: unprotected error...
that occurs in cases like assert(nil, nil)
or error(hash("something"))
.
FIX: (#5549) ‘Fixed issue when sys.open_url()
reports false when a url is opened on Windows’ by AGulev
FIX: (#11060) ‘Fixed an issue where files larger than 2GB couldn’t be read on windows’ by AGulev
This PR fixes the issue where having an arcd
archive larger than 2 GB on Windows results in a runtime error:
ERROR:RESOURCE: Path to small to fit into buffer: game.arcd
ERROR:RESOURCE: Failed to mount base archive: -1000 for mount archive://game.dmanifest
WARNING:RESOURCE: No resource loaders mounted that could match uri archive:game.dmanifest
FIX: (#11066) ‘Added sdk test for macos, ios, linux and android when running check_sdk’ by JCash This will help when new contributors setup their environment, to see if their compiler can build and possibly run a test executable.
FIX: (#6577) ‘Fix multi-contour artifacts in DF font generator’ by AGulev
Fixed DF font artifacts that occur in some fonts with vector shapes overlapping each other:
FIX: (#11069) ‘Show an error message if the decoder for a used sound isn’t included in the App Manifest’ by AGulev
Fixes an issue where the engine crashes if an opus
file is used without including the OPUS decoder in the App Manifest. Now the engine shows an error to help figure out what’s going on.
FIX: (#11099) ‘Fix issue with duplicated meshes in models with hierarchies’ by jixingcn Make sure the final mesh set doesn’t contain duplicated meshes.
FIX: (#9603) ‘Fix issue where some non-skinned GLTF/GLB models were rendered incorrectly’ by jixingcn Fixed an issue where flattening of the GLTF/GLB model didn’t take the model hierarchy into account.
NEW: (#10781) ‘Add a preference to disable auto-closing parens in the editor.’ by vlaaad New preference Code → Auto-insert closing parens allows turning off the auto-closing of parens in the editor.
NEW: (#8737) ‘Make editor server port more accessible’ by vlaaad
When the editor opens a project, it will start a web server on a random port. This port is now written to the .internal/editor.port
file.
Additionally, we added a command line option --port
(or -p
) to the editor executable, which allows specifying the port during launch.
Example use:
# on Windows
.\Defold.exe --port 8181
# on Linux:
./Defold --port 8181
# on macOS:
./Defold.app/Contents/MacOS/Defold --port 8181
NEW: (#10407) ‘Add zip.unpack
editor script function’ by vlaaad
Now it’s possible to unpack ZIP files using editor scripts, e.g.:
-- simply unpack
zip.unpack("build/dev/archive.zip")
-- unpack to another directory
zip.unpack("build/dev/archive.zip", "build/dev/tmp")
-- overwrite on conflict
zip.unpack("build/dev/archive.zip", {on_conflict = zip.ON_CONFLICT.OVERWRITE})
-- unpack a subset of files
zip.unpack("build/dev/archive.zip", {"config.json", "src"})
NEW: (#3157) ‘Show settings from /game.properties
and ext.properties
’ by vlaaad
Now, /game.project
form will show settings from /game.properties
, as well as from ext.properties
files coming from extensions.
FIX: (#11020,#11020) ‘Set center panel minimum width’ by sprocketc Set a minimum width for the center panel.
FIX: (#11067) ‘Fix drag and drop NullPointerException’ by sprocketc
FIX: (#11074,#11076) ‘Fix selection context on outline label double click, and no selection npe’ by sprocketc
FIX: (#11117) ‘Cancel outline rename on drag’ by sprocketc
FIX: (#11112) ‘Use custom markdown/HTML viewer instead of a web view’ by vlaaad Improvements:
See [setup.md](setup.md)
See [license](#license) section
Regressions:
FIX: (#11110) ‘Fix template property flattening regression when building’ by matgis Fixed a regression when building GUI scenes that would cause certain properties (such as transform-related ones) to not be correctly applied to the imported nodes unless they had layout overrides.