⇠ More posts

Defold release 1.4.4

By Björn Ritzl on Mar 28, 2023

Tagged as: Release notes


Defold 1.4.4

Summary

  • BREAKING CHANGE: (#7431) Refactor textures as resource
  • NEW: (#7457) Show self values in debugger for *.render_script, *.script and *.gui_script
  • NEW: (#7413) Improved gamepad support for the Windows platform
  • NEW: (#6845) Paged texture atlas support
  • NEW: (#7378) Added frustum culling support for model component
  • NEW: (#7415) Added go.exists()
  • FIX: (#7437) Fix bug when some of embeded GOs maybe ignored by component counter
  • FIX: (#7429) Removed duplicate Size property on Gui Text objects
  • FIX: (#7353) Fixed index buffer lookup in headless graphics backend
  • FIX: (#7406) Use locale-insensitive conversion from lower to upper case in bob
  • FIX: (#7400) Show an error message when an added collection file is missing
  • FIX: (#7444) Updated sprite size property documentation
  • FIX: (#7395) Improve error message when Android build is too large
  • FIX: (#7401) URL decode Bob resource path before attempting file operations
  • FIX: (#7446) Bugfix for using basis transcoding since paged atlas feature
  • FIX: (#7430) Produce uv bounds for dynamic atlases
  • FIX: (#7410) Some font glyphs are not rendering correctly
  • FIX: (#7388) Identical names require the same values in templates
  • FIX: (#7419) Set resource name based on filename
  • FIX: (#7435) Add support for external buffers from the .gltf/.glb formats
  • FIX: (#7396) Validate Android package name and iOS bundle identifier
  • FIX: (#7451) Update JavaFX (Fix issue with freezes when using AMD GPUs on Linux system)

Engine

BREAKING CHANGE: (#7431) Refactor textures as resource As a first step in representing textures as actual handles that can be passed around between the render scripts and the rest of the engine, we need to separate between the actual texture handles and the resources that hold them. A HTexture is currently a pointer to the asset created by the graphics adapter which is then stored in the resource system. Instead, a wrapper around the graphics handle is stored, which means that we can change the way we represent the handle.

Technical note: This is a breaking change in the public dmSDK part of the engine. Several resources now store TextureResource pointers instead of the HTexture objects, and any native extension that use these APIs will have to update their code to make sure the types are correct.

NEW: (#7457) Show self values in debugger for *.render_script, *.script and *.gui_script Show values from self table in debuggerfor *.render_script, *.script and *.gui_script .

NEW: (#7413) Improved gamepad support for the Windows platform Added support for various controllers on the Windows platform by implementing a Direct Input layer that can support a wider range of devices natively. This means that you no longer need to use a translation layer between XInput and Direct Input via external tools such as DS4Windows to be able to use gamepads with Defold.

NEW: (#6845) Paged texture atlas support Added support for generating atlases with multiple pages of texture data. Enable this feature by setting the max page size value in the atlas files to non-zero. To use the paged atlas in the materials, the material shaders require a “sampler2DArray” uniform in order to sample from the texture.

NEW: (#7378) Added frustum culling support for model component

NEW: (#7415) Added go.exists() Added a go.exists() function to check if a game object exists. Usage:

if go.exists("/my_game_object") then
    print("The game object exists!")
end

FIX: (#7437) Fix bug when some of embeded GOs maybe ignored by component counter In a case when embedded GOs in a few different collections are the same, component counter didn’t count the second and the following GOs.

FIX: (#7429) Removed duplicate Size property on Gui Text objects Gui Text nodes no longer show two Size properties.

FIX: (#7353) Fixed index buffer lookup in headless graphics backend This fixes a buffer overrun issue when using index buffers with the headless graphics backend.

FIX: (#7406) Use locale-insensitive conversion from lower to upper case in bob This fixes an issue when using the bob command line tool to bundle a Defold project on an operating system with a locale which is does not have a standard lower to upper case mapping, such as Turkish (where a lower case i becomes İ, ie a capital I with a dot).

FIX: (#7400) Show an error message when an added collection file is missing Show a better error message when a collection file which has been added to a collection does not exist. Previously a NullPointerException error was shown with no reference to the missing file.

FIX: (#7444) Updated sprite size property documentation The sprite size property was marked as read-only even though it is possible to change the size of a sprite if the size-mode is set to manual.

FIX: (#7395) Improve error message when Android build is too large It is not possible to create an APK larger than 2Gb using the Android bundletool, but the error message when bundling a very large APK using the command line tools or editor is not very informative. This fix detects the case when the APK is too large and outputs additional information in the error message.

FIX: (#7401) URL decode Bob resource path before attempting file operations Bob now URL decodes the file:// URL that references the Bob jar file before attempting file operations.

FIX: (#7446) Bugfix for using basis transcoding since paged atlas feature Fixed an issue with using basis compression together with cubemap generation, where the output of the texture encoding produced an empty result. To fix this issue, we have separated the transcoding into two passes - a preprocessing pass for memory allocation of the result, and one to do the actual transcoding.

FIX: (#7430) Produce uv bounds for dynamic atlases Added support for using dynamic atlases in GUI.

FIX: (#7452 Updated build toolchain with XCode 14.2, macOS 13.1 and iOS 16.2 We’ve updated our toolchain to support latest XCode plus macOS and iOS sdks.

Editor

FIX: (#7410) Some font glyphs are not rendering correctly Small glyphs, such as the dot (.) character, are not rendered correctly when the uncompressed size of the glyph is smaller than the compressed size. When this happens the first byte of the glyph is ignored and the glyph is rendered skewed or shifted one pixel in the font texture.

FIX: (#7388) Identical names require the same values in templates User-facing changes: when multiple templates used in the same GUI define resources with clashing names, we now require them to refer to the same values. For instance, suppose a GUI file named A.gui contains two templates: B.gui and C.gui. If both templates define a font named “main_font” and the actual fonts used in each template are not the same, A.gui will not know which one to use and will randomly choose one. To prevent this issue, we will now display a build error when such clashes occur.

FIX: (#7419) Set resource name based on filename A common source of problems when working with collection proxies is the fact that all collections are given the name “default”, and if you are not careful and remember to change this name you will run into issues such as The collection ‘default’ could not be created since there is already a socket with the same name.. This change will give a created Collection, Material, or Model resources the same name as the filename.

FIX: (#7435) Add support for external buffers from the .gltf/.glb formats

FIX: (#7396) Validate Android package name and iOS bundle identifier An Android package name and Apple bundle identifier follows strict rules, but there are no checks in place to verify that the package name and bundle identifiers in game.project actually follow the rules. This fix adds a check when bundling for Android, iOS and macOS that these values follow their respective formats.

Android: Must consist of two or more segments separated by a dot. Each segment must start with a letter. Each segment must only consist of alphanumeric letters or the underscore character.

iOS and macOS: Must consist of two or more segments separated by a dot. Each segment must start with a letter. Each segment must only consist of alphanumeric letters, the underscore or hypen (-) character.

FIX: (#7451) Update JavaFX (Fix issue with freezes when using AMD GPUs on Linux system) JavaFX updates to the latest at the moment 19.0.2.1 version. It will help with stability and performance, especially on Linux.