Defold 1.4.2
Summary
- CHANGE: (#7234) Introduce VertexStreamDeclaration concept
- CHANGE: (#7250) Use uniform scale for the particle fx in gui
- NEW: (#7196) Create atlas resource in runtime
- NEW: (#7206) resource.set_texture transcode support
- NEW: (#7093) Added mesh frustum culling
- NEW: (#5989) Improved on the error message when reaching the max number of possible draw calls
- FIX: (#7171) Fix crash when max sound instances is 0
- FIX: (#7251) Make sure to invert initial mouse y position on macOS
- FIX: (#7257) Fix issues with missing default values when getting config values
- FIX: (#7259) Vulkan bugfixes
- FIX: (#6977) Track in profiler if thread was attached to JVM and wasnât detached
- FIX: (#7265) Use alpha propagation in GUI text nodes
- FIX: (#7244) Conform âbuffer is fullâ error messages
- FIX: (#7271) Cut down time Bob needed to create a build size report
- FIX: (#7260) Get CPU usage on Android 8+ devices
- FIX: (#7252) Do not run build hooks when attaching debugger or hot-reloading
- FIX: (#7200) Make the search for resource links more efficient
- FIX: (#7112) Non-editable resource variants
- FIX: (#7254) Increase connection timeout during update
- FIX: (#7262) Show informative error message on cyclic resource dependencies
- FIX: (#7278) Show tile index in tilemap palette view
Engine
CHANGE: (#7234) Introduce VertexStreamDeclaration concept
Removed dmGraphics::VertexElement from dmSdk in favor of new API functions to create vertex declarations from.
NEW: (#7196) Create atlas resource in runtime
Added new function resource.create_atlas(path, args) to create an atlas resource in runtime. The resource is almost the same as an atlas generated during build time except for a few caveats. Please consult the API reference for how to use this feature.
NEW: (#7206) resource.set_texture transcode support
Added support for setting compressed and transcoded texture data in the resource.set_texture function. This can be used to decrease the runtime memory for dynamically created texture resources. The function now accepts binary data from .basis files and will pick a compressed GPU format for the client platform.
NEW: (#7093) Added mesh frustum culling
Frustum culling support for mesh component (sphere algorithm)
NEW: (#5989) Improved on the error message when reaching the max number of possible draw calls
FIX: (#7244) Conform âbuffer is fullâ error messages
When a component cannot be created we show an error message on where in the project that can be modified, but previously the messages had different wording. This change tries to conform most of these cases into the same format.
FIX: (#7171) Fix crash when max sound instances is 0
Fixed a crash when max sound instances is 0 in game.project
FIX: (#7251) Make sure to invert initial mouse y position on macOS
The initial mouse y position on macOS uses inverted y coordinates with 0 starting at the top of the screen. This fix inverts the y position of the initial mouse position.
FIX: (#7257) Fix issues with missing default values when getting config values
The recently added functionality to get config values as strings, ints and numbers takes an optional second argument as the default value if the config value does not exist. In the case of getting an int or a number the code incorrectly required a default value or nil, but not the complete lack of a second argument. In addition to this the API reference also states that in the absence of a default value that nil should be returned when in fact a 0 is returned. Both of these issues are now fixed and it is now possible to call the function without a second argument, in which case 0 is returned if the config value doesnât exist.
Assuming a game.project with the following:
[test]
foo = 123
print(sys.get_config_int("test.foo")) --123
print(sys.get_config_int("test.bar")) -- 0
print(sys.get_config_int("test.bar", 345)) -- 345
print(sys.get_config_number("test.foo")) --123
print(sys.get_config_number("test.bar")) -- 0
print(sys.get_config_number("test.bar", 345.5)) -- 345.5
FIX: (#7259) Vulkan bugfixes
Fixed two issues with the Vulkan renderer:
- Set binding base 1 for shader bindings (uniforms & samplers) - this means that we can detect unused bindings and still produce valid spir-v which previously did not work
- Clearing render targets (also applies to backbuffer) always cleared color buffers as well, the clear flags should now be respected
FIX: (#6977) Track in profiler if thread was attached to JVM and wasnât detached
It detects only cases when thread attached and wasnât detached between frames.
FIX: (#7260) Get CPU usage on Android 8+ devices
Alternative CPU usage algorithm for android 8+. Fixes profiler.get_cpu_usage report as 0 on late android versions.
Editor
CHANGE: (#7250) Use uniform scale for the particle fx in gui
The editor preview of particle effects in gui scenes did not show an accurate representation of the particle effect at runtime. After some investigation it turns out that it was in fact the runtime which was inaccurate and picked the x component of the scale at all times instead of the minimum scale value from a non-uniform scale. This means that a particle effect with scale [5.0 1.0 1.0] used scale 5.0 while a pfx with scale [1.0 5.0 1.0] used scale 1.0. The correct scale should be 1.0 in both cases since the smallest scale value should always be chosen.
This is likely a regression from a change introduced in #2540 back in 2018. This is now fixed and particle effects both on game objects and in gui scenes will use the uniform minimum scale value in both the editor and engine.
FIX: (#7265) Use alpha propagation in GUI text nodes
Bugfix for GUI text nodes in editor when using inherit-alpha.
FIX: (#7252) Do not run build hooks when attaching debugger or hot-reloading
The pre- and post-build hooks were incorrectly run also when attaching the debugger and hot-reloading resources. This fix only runs the pre- and post-build hooks when building the project using the âProject->Buildâ and âDebug->Start with debuggerâ options.
FIX: (#7200) Make the search for resource links more efficient
On big projects with a lot of resources, it might take a lot of time to show output in the console because for every potential resource link we have to filter through all tracked resources. We now try to be smarter about it, both by limiting the candidates for search only to ellipsis-prefixed ones and by building a suffix map for the added lines batch so we have to go through all the resources less frequently.
FIX: (#7112) Non-editable resource variants
Added a Non-editable Directories field to Shared Editor Settings. After a restart, resources below these directories will be loaded in a non-editable mode that will be more efficient to load and manage, at the cost of not being editable. In addition, these resources will not be overwritten when saving in the editor.
Known limitations
- It is not possible to override properties on objects inside non-editable collections or game objects from an editable collection.
FIX: (#7254) Increase connection timeout during update
The editor update sometimes fails due to connection timeouts when the update is downloaded on a slow or low quality network. This change increases the connection timeout to 5000ms and the read timeout to 10000ms.
FIX: (#7262) Show informative error message on cyclic resource dependencies
Cyclic resource dependencies in the editor did not show a user friendly error message. The message did in fact seem to indicate an error with the editor rather than with the project structure. This change detect cyclic dependencies and shows a popup with an improved error message to clearly indicate the problem to the developer.