NEW: (#5265) Added option to instantly clear spawned particles when stopping particlefx
When particlefx.stop()
is called all emitters immediately stop spawning new particles but already spawned particles will continue to live until they reach their end of life. Clearing/removing already spawned particles is only possible by either unloading the collection the particles belong to or by setting the tint alpha in the particlefx material to 0.0.
To give developers a better alternative to clearing spawned particles It is now possible to specify this when the particle effect is stopped:
particlefx.stop(url, { clear = true })
gui.stop_particlefx(node, { clear = true })
NEW: (#3232) New properties for nodes : enabled
and visible
New properties for GUI nodes: enabled
and visible
.
enabled
is a property that toggles a node tree. This value was available in the runtime using gui.is_enabled()
and gui.set_enabled()
and now it’s avaliable from the editor as well.
visible
is a property that toggles rendering for a node. This option may be useful when a node should be used for anchoring or as a click zone, but shouldn’t affect rendering at all. New methods added for work with the property: gui.get_visible()
and gui.set_visible()
.
NEW: (#6628) Add support for drawing to multiple render targets Many graphical effects (e.g Many-light pipelines / deferred rendering, ssao, temporal antialiasing) operate on several components of a frame such as position, normals and albedo color. These are usually generated by drawing the scene once into several render targets that can be used in other parts of the rendering pipeline.
MRT is available from OpenGL 3 / ES3 / WebGL2 (and baseline vulkan) and support is now available in the Defold render.* API when creating a new render target:
function init(self)
-- render target buffer parameters
local color_params_rgba = { format = render.FORMAT_RGBA,
width = render.get_window_width(),
height = render.get_window_height(),
min_filter = render.FILTER_LINEAR,
mag_filter = render.FILTER_LINEAR,
u_wrap = render.WRAP_CLAMP_TO_EDGE,
v_wrap = render.WRAP_CLAMP_TO_EDGE }
local color_params_float = { format = render.FORMAT_RG32F,
width = render.get_window_width(),
height = render.get_window_height(),
min_filter = render.FILTER_LINEAR,
mag_filter = render.FILTER_LINEAR,
u_wrap = render.WRAP_CLAMP_TO_EDGE,
v_wrap = render.WRAP_CLAMP_TO_EDGE }
-- Create a render target with three color attachments
-- Note: No depth buffer is attached here
self.my_render_target = render.render_target({
[render.BUFFER_COLOR0_BIT] = color_params_rgba,
[render.BUFFER_COLOR1_BIT] = color_params_rgba,
[render.BUFFER_COLOR2_BIT] = color_params_float, })
end
function update(self, dt)
-- enable target so all drawing is done to it
render.enable_render_target(self.my_render_target)
-- draw a predicate to the render target
render.draw(self.my_pred)
end
NEW: (#6488) Sign iOS app extensions while preserving entitlements An App Extension lets you extend custom functionality and content beyond your app and make it available to users while they’re interacting with other apps or the system. Examples are app specific stickers in iMessage or extensions to the sharing dialog.
App Extensions must be included in the PlugIns folder and they must be signed. It is easy to include extensions in a PlugIns
folder by adding the PlugIns
folder as a bundle resource to be included in the application bundle.
This change automatically signs any files in PlugIns
with the .appex
file extension when the application is bundled while at the same time preserving the app extension entitlements.
FIX: (#6767) Updated to LZ4 1.9.4 (63df16d) Updated internal LZ4 compression to 1.9.4. The update LZ4 implementation results in faster decompression compare to old versions.
FIX: (#5454) Migrate build system to python3 The Defold build system has been migrated from Python 2 to Python 3.
FIX: (#6757) Added collectionproxy.get_resources() Returns a list of all the resources that the collection proxy is dependent on:
local resources = collectionproxy.get_resources(proxy_url)
for _, v in ipairs(resources) do
print("Resource: " .. v)
end
This functionality will later be used for removing old live update content from disk.
FIX: (#6766) Make sure game.arcd
isn’t compressed in apk
/aab
Keep the main resource archive game.arcd
in the Android bundle uncompressed to prevent unnecessary memory allocations in runtime.
FIX: (#6742) Exclude unnecessary information from html build report.
Exclude game.project
information and build options related to authorisation from the generated build report.
FIX: #6788 GUI text doesn’t render if render script has previously early-outed This fixes an issue with text not always rendering when skipping a frame, for instance during an early out in the render script.
FIX: #6816 Fix issue when engine can’t play more than 32 sounds simultaneously
Use sound.max_sound_instances
as maximum count of simultaneously played sounds.
NEW: (#6269) Read authentication token for dependencies from system environment When using project dependencies hosted in private repositories on GitHub or behind basic authentication on a private server the authentication token has to be part of the userinfo portion of the URL:
https://user:password@github.com/defold/defold/archive/refs/heads/dev.zip
This is not recommended as it may result in developers accidentally leaking their access token when sharing a list of their dependencies in a support ticket or in the Defold forum.
To avoid this it is now also possible to store the authentication token in a system environment variable and let Defold read this when resolving dependencies. Defold will inspect the dependency URLs and replace any userinfo password field starting and ending with __
(two underscore characters) with the value from the system variable specified by the string enclosed within the __
prefix and suffix:
https://user:__MY_GITHUB_TOKEN__@github.com/defold/defold/archive/refs/heads/dev.zip
In the above URL the __MY_GITHUB_TOKEN__
will be replaced by the value of the system variable MY_GITHUB_TOKEN
.
FIX: (#6666) Ignore empty lines in .defignore
FIX: (#6400) Report defignored files as non-existent
Additionally, this changeset makes the editor sync resources after save if .defignore
file was modified.
FIX: (#6753) Improve editor behavior with legacy Spine projects
extension-spine
has been added as a dependency.FIX: (#6732) [DEFEDIT] Safeguard against IOExceptions when generating convex hulls
IOExceptions
were not being caught correctly for image reads associated with .atlas
and .tilesource
files.CHANGE: (#6760) Redesign game.project form #6760 This changeset alters the UI of forms that requested navigation (currently only game.project form) in a following way: