Release notes
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.