Defold 1.10.0 BETA

Defold 1.10.0 BETA

Disclaimer

This is a BETA release, and it might have issues that could potentially be disruptive for you and your teams workflow. Use with caution. Use of source control for your projects is strongly recommended.

Access to the beta

Download the editor or bob.jar from GitHub: Release v1.10.0 - beta · defold/defold · GitHub

Defold 1.10.0

Box2D Version 3

This release includes an updated version of Box2D to the latest version 3. While the integration has been built on top of the same data formats as before and should largely behave the same, please be aware that projects can potentially behave slightly differently now. According to the documentation, the new Box2D version is more or less a full rewrite of the physics engine, which means that some settings might need to be tweaked.

The old version is considered deprecated, but if you want to change to the old version you can change this by using an app manifest. To read more about app manifests, please have a look at the app manifest documentation.

Known differences:

  • Trigger vs Trigger collisions - The documentation in Box2D for Triggers (aka Sensor in Box2D terminology) mentions: A sensor shape generates overlap events but never generates a collision response. Sensors do not collide with other sensors and do not have continuous collision.
    • This means that the new version of Box2D will only generate trigger_response events on enter and exit with kinematic and dynamic objects. Two triggers that overlap will not be detected.

Stricter .defignore pattern matching

We’ve updated the implementation of .defignore patterns to more strictly adhere to the rules stated in the documentation. Previously, a pattern like /import would naively match any path that starts with /import. This meant that if you added a file named /important.json to the project, it would be ignored. We’ve updated the rules to now only match the /import directory itself and anything below it.

Summary

  • BREAKING CHANGE: (#10337) Update box2d to version 3 (by Jhonnyg)
  • BREAKING CHANGE: (#10240) Add a wrapper api for our profiler properties (by JCash)
  • NEW: (#10274) Reduce the size of the dmanifest file in the build and in LiveUpdate (by AGulev)
  • NEW: (#10268) Parallel native code building on Extender for different architectures (by AGulev)
  • NEW: (#9983) GPU skinning support (by Jhonnyg)
  • NEW: (#10284) Add callbacks for progress and completed load (by smagnuso)
  • NEW: (#10123) Create 3d textures via resource.create_texture (by Jhonnyg)
  • NEW: (#10355) Use vulkan as default renderer on osx (by Jhonnyg)
  • NEW: (#9984) GL ES for the Linux ARM64 target to support running on Raspberry Pi and Linux handhelds (by aglitchman)
  • NEW: (#10252) Added new window API functions (by britzl)
  • NEW: (#10314) Add editor HTTP server extensibility (by vlaaad)
  • NEW: (#10241) Make color fields editable (by sprocketc)
  • NEW: (#10344) Show hovers from language servers (by vlaaad)
  • NEW: (#10298) Create atlas images on drag & drop from the asset tree (by sprocketc)
  • NEW: (#10249) Add zip.pack to editor scripts (by vlaaad)
  • NEW: (#10308) Persist saved colors of color picker (by sprocketc)
  • NEW: (#10231) Update properties on label drag (by sprocketc)
  • NEW: (#10357) Projects can list paths to not load in .defunload (by matgis)
  • NEW: (#10253) Introduce color dropper (by sprocketc)
  • FIX: (#10257) Show Lua errors when building or bundling for HTML5 (by AGulev)
  • FIX: (#10269) Make sure the LiveUpdate manifest is deterministic (by AGulev)
  • FIX: (#10254) Take Bob’s parameters into consideration to decide which resources should be rebuilt (by AGulev)
  • FIX: (#10300) Output crosscompilation errors from pipeline (by Jhonnyg)
  • FIX: (#10175) Update to latest vulkan + MoltenVK versions (by Jhonnyg)
  • FIX: (#10313) Create texture script regression (by Jhonnyg)
  • FIX: (#10329) Fix build time reporting to support multithreaded builds (by AGulev)
  • FIX: (#10267) Async texture update support for vulkan (by Jhonnyg)
  • FIX: (#10351) Merge shader resources (by Jhonnyg)
  • FIX: (#10291) Added profiler backend for HTML5 (by JCash)
  • FIX: (#10293) Unified Windows MSVC detection between local/packaged sdks (by JCash)
  • FIX: (#10388) Fix Build Report issues (by AGulev)
  • FIX: (#10381) Fix WebGPU detection (by ekharkunov)
  • FIX: (#10374) Added missed libraries in app manifest for Vulkan variant for linux platform (by ekharkunov)
  • FIX: (#10387) Fix run OSX with OpenGL backend (by ekharkunov)
  • FIX: (#10401) Add engine version and sdk into dmloader for html5 bundle (by AGulev)
  • FIX: (#10266) Improve parallel code loading on editor startup (by vlaaad)
  • FIX: (#10279) Do not clean the bundle folder to speed up the bundling process (by AGulev)
  • FIX: (#10367) Fix multi-editing of gui node properties (by matgis)
  • FIX: (#10424) Correctly apply Gui template rotation to imported nodes when building (by matgis)

Engine

BREAKING CHANGE: (#10337) ‘Update box2d to version 3’ by Jhonnyg
Box2D has been updated to Version 3, which is now the default physics engine for 2D. Since the latest Box2D version is more or less a full re-write, using the new version might cause existing projects to simulate or behave differently. If you want to keep using the old physics implementation for your projects, you can switch to the old version by using an app manifest:

image

To read more about app manifests, head over to App manifest

Know differences from the previous version of Box2D used in Defold:

  • Trigger vs Trigger collisions - The documentation in Box2D for Triggers (aka Sensor in Box2D terminology) mentions: A sensor shape generates overlap events but never generates a collision response. Sensors do not collide with other sensors and do not have continuous collision.
    • This means that the new version of Box2D will only generate trigger_response events on enter and exit with kinematic and dynamic objects. Two triggers that overlap will not be detected.

BREAKING CHANGE: (#10240) ‘Add a wrapper api for our profiler properties’ by JCash
If you are a native extension developer and are using the DM_PROFILE() macros, there has been an api change.

The changes needed to update should be minimal.

Previous:

DM_PROPERTY_PROPERTY_GROUP(rmtp_TestGroup1);
DM_PROPERTY_BOOL(rmtp_TestBOOL, 0, FrameReset, "", &rmtp_TestGroup1);

Now, we’ve added the parent as an explicit argument, and we’ve converted the enum into a Defold specific enum:

DM_PROPERTY_GROUP(prop_TestGroup1, "", 0); // excplicit parent pointer, 0 in this case
DM_PROPERTY_BOOL(prop_TestBOOL, 0, PROFILE_PROPERTY_FRAME_RESET, "", &prop_TestGroup1);

NEW: (#10274) ‘Reduce the size of the dmanifest file in the build and in LiveUpdate’ by AGulev
The dmanifest in the release bundle no longer contains the full project path to the file url, as this information is only needed for debugging. This reduces its size.

NEW: (#10268) ‘Parallel native code building on Extender for different architectures’ by AGulev
Now, Extender builds different architectures for the same platform simultaneously to speed up the build process.
For example, armv7-android and arm64-android or js-web and wasm-web.

NEW: (#9983) ‘GPU skinning support’ by Jhonnyg
Model components can now support GPU skinning when using materials with a “local” vertex space. There are now two new builtin model materials that can be used (model_skinned and model_skinned_instanced) that can support either instanced or non-instanced models.

ScreenRecording2025-03-03at09 54 141-ezgif com-cut (1)

The GPU skinning uses a floating point texture to store all the bones of each animation. This means that in order for this to work, the client must have support for floating point textures. This can potentially be an issue on WebGL1, but in generally floating point textures are extremely well supported so in most cases this will not be an issue.

NEW: (#10284) ‘Add callbacks for progress and completed load’ by smagnuso
Added two extra parameters to the CUSTOM_PARAMTERS for HTML5 builds:

  • start_success - Function that is called just before main is called upon successful load
  • update_progress - Function that is called as progress is updated. Parameter progress is updated 0-100

NEW: (#10123) ‘Create 3d textures via resource.create_texture’ by Jhonnyg
The engine can now support 3D textures in runtime. Use these resource functions to work with 3D textures:

  • resource.create_texture
  • resource.create_texture_async
  • resource.set_texture

Examples:

-- Create a 3D texture that can be used in a compute shader
local t_backing = resource.create_texture("/my_backing_texture.texturec", {
	type   = graphics.TEXTURE_TYPE_IMAGE_3D,
	width  = 32,
	height = 32,
	depth  = 32,
	format = resource.TEXTURE_FORMAT_RGBA32F,
	flags  = resource.TEXTURE_USAGE_FLAG_STORAGE + resource.TEXTURE_USAGE_FLAG_SAMPLE,
})
-- create a buffer that can hold the data of a 8x8x8 texture
local tbuffer = buffer.create(8 * 8 * 8, { {name=hash("rgba"), type=buffer.VALUE_TYPE_FLOAT32, count=4} } )
local tstream = buffer.get_stream(tbuffer, hash("rgba"))

-- populate the buffer with some data
local index = 1
for z=1,8 do
    for y=1,8 do
        for x=1,8 do
            tstream[index + 0] = x
            tstream[index + 1] = y
            tstream[index + 2] = z
            tstream[index + 3] = 1.0
            index = index + 4
        end
    end
end

local t_args = {
    type   = graphics.TEXTURE_TYPE_IMAGE_3D,
    width  = 8,
    height = 8,
    depth  = 8,
    format = resource.TEXTURE_FORMAT_RGBA32F
}
 
-- This expects that the texture resource "/my_3d_texture.texturec" already exists
-- and is a 3D texture resource. To create a dynamic 3D texture resource
-- use the "resource.create_texture" function.
resource.set_texture("/my_3d_texture.texturec", t_args, tbuffer)

NEW: (#10355) ‘Use vulkan as default renderer on osx’ by Jhonnyg
Vulkan is now the default renderer on OSX (x86_64-macos and ram64-macos).

Q: What are the benefits of using Vulkan?
A: Many! These are some typical points:

  • OpenGL is deprecated on osx. This means that OpenGL can get fully removed from the mac ecosystem at any point in time.
  • More new potential features (compute shaders are supported by default, among many other modern features)
  • Improved rendering performance (mainly for 3D)
  • You can profile the rendering in Xcode to get accurate timings for a frame
  • In general reduced runtime memory footprint
  • OpenGL is complete and will likely not get any more updates in the future. Using modern tech means we can add and improve rendering in the future.

Q: I don’t want to use Vulkan, can I use OpenGL?
A: Yes, you can use an app manifest to switch back to OpenGL. Read more about app manifests here: App manifest

NEW: (#9984) ‘GL ES for the Linux ARM64 target to support running on Raspberry Pi and Linux handhelds’ by aglitchman
This PR changes the graphics API from desktop OpenGL to OpenGL ES for the Linux ARM64 target. Devices on this platform usually do not have support for desktop OpenGL because they are built on mobile chips. Also added gamepad mapping for Linux handhelds to the gamepads database.

NEW: (#10252) ‘Added new window API functions’ by britzl
Added new window.* API functions:

window.set_size(width, height)
window.set_position(x, y)
window.set_title("Defold rocks!")
local scale = window.get_display_scale()

FIX: (#10257) ‘Show Lua errors when building or bundling for HTML5’ by AGulev
Fixed an issue where building or bundling for HTML5 ignored errors in Lua code.

FIX: (#10269) ‘Make sure the LiveUpdate manifest is deterministic’ by AGulev
Fix issues where engine_versions in the LiveUpdate manifest may have a different order from build to build.

FIX: (#10254) ‘Take Bob’s parameters into consideration to decide which resources should be rebuilt’ by AGulev
Now Bob knows which resources may be affected by its parameters and rebuilds only those resources. For example, if the first bundle is done with --texture-compression and the second bundle is done without it, all textures, atlases, and other related resources will be rebuilt.
This should improve the experience when bundling without the clean parameter for Bob.

FIX: (#10300) ‘Output crosscompilation errors from pipeline’ by Jhonnyg
Fixed an issue where some shaders can’t be crosscompiled to a certain shader version.

FIX: (#10175) ‘Update to latest vulkan + MoltenVK versions’ by Jhonnyg
Vulkan has been updated to v1.4.307 and MoltenVK has been updated to use a special fork of MoltenVK that adds input attachment via programmable blending, which is a prerequisite for the Defold Rive integration.

FIX: (#10313) ‘Create texture script regression’ by Jhonnyg
Fixed an issue where dynamic texture resources where not created correctly on non-opengl graphics adapters due to a miscalculation of the data size parameter.

FIX: (#10329) ‘Fix build time reporting to support multithreaded builds’ by AGulev
Build time report now supports multithreaded Bob builds
CleanShot 2025-03-11 at 18 12 24

FIX: (#10267) ‘Async texture update support for vulkan’ by Jhonnyg
The vulkan backend can now upload texture data in parallell.

FIX: (#10351) ‘Merge shader resources’ by Jhonnyg
Shader resources can now be merged between different stages of the same shader program:

my_shader.vp:

uniform shared_uniforms {
    vec4 tint;
};
uniform sampler2D shared_texture;
void main()
{
    vec4 shared_color = texture(shared_texture, vec2(texcoord0));
    gl_Position = view_proj * vec4(position.xyz * tint.x + shared_color.r * 0.001, 1.0);
    var_texcoord0 = texcoord0;
}

my_shader.fp:

uniform shared_uniforms {
    vec4 tint;
};
uniform sampler2D shared_texture;
void main()
{
    vec4 shared_color = texture(shared_texture, var_texcoord0.st);
    color = tint * shared_color;
    color.a = 1.0;
}

Previously, shared_uniforms and shared_texture would be used as two separate resources in the engine, which means that the same resource would be bound twice even though they are supposed to be used as a single resource.

Furthermore, the pipeline will now also make sure that outputs from a shader stage matches the inputs of the next shader stage (e.g vertex shader + fragment shader). Previously, this example would cause non-opengl adapters to behave incorrect:

my_shader.vp:

out vec4 out_position;
out vec3 out_normal;
out vec2 out_uv;

my_shader.fp

in vec3 out_normal;
in vec2 out_uv;
in vec4 out_position;

With the new remapping system, the locations of the outputs from the vertex shader will correctly match the inputs of the fragment shader.

Note: Remapping of resources will currently only work with the “new shader pipeline”. To migrate your old shaders to the new pipeline, head over to Shader programs in Defold to read more.

FIX: (#10291) ‘Added profiler backend for HTML5’ by JCash
We’ve added a new profiler backend that allows you to do in game profiling on HTML5 builds.

We also added a function profiler.dump_frame() that allows for logging the current frame to the output:

function update(self, dt)
    profiler.dump_frame() -- dump to output at the end of the frame
end

It will yield output like:

INFO:PROFILER: Profiler threads:
INFO:PROFILER:     Thread 'Main': 0.003033
INFO:PROFILER:     'Step': time: 3.033 ms self: 0.011 ms  count: 1
INFO:PROFILER:         'Frame': time: 3.022 ms self: 0.007 ms  count: 1
INFO:PROFILER:             'Sim': time: 0.635 ms self: 0.012 ms  count: 1
INFO:PROFILER:                 'Update': time: 0.033 ms self: 0.012 ms  count: 1
INFO:PROFILER:                     'collectionproxyc': time: 0.000 ms self: 0.000 ms  count: 1
INFO:PROFILER:                     'DispatchMessages': time: 0.002 ms self: 0.002 ms  count: 16
INFO:PROFILER:                     'scriptc': time: 0.002 ms self: 0.002 ms  count: 1
INFO:PROFILER:                         'Update': time: 0.000 ms self: 0.000 ms  count: 1
INFO:PROFILER:                     'UpdateTransforms': time: 0.004 ms self: 0.004 ms  count: 1
...
INFO:PROFILER: Profiler properties:
INFO:PROFILER:     'rmtp_Resource': 22
INFO:PROFILER:     'rmtp_CpuUsage': 13
INFO:PROFILER:     'rmtp_Memory': 104720
INFO:PROFILER:     'rmtp_GOInstances': 1
INFO:PROFILER:     'rmtp_TimerCount': 0
INFO:PROFILER:     'rmtp_ScriptCount': 1
INFO:PROFILER:     'rmtp_ComponentsAnim': 0
INFO:PROFILER:     'rmtp_ParticlesAlive': 0

You add profile scopes/properties using the dmSDK api: API reference (dmProfile)

FIX: (#10293) ‘Unified Windows MSVC detection between local/packaged sdks’ by JCash
This PR makes it easier to use locally installed Visual Studio and Windows SDK.

FIX: (#10388) ‘Fix Build Report issues’ by AGulev
Build report now uses archive builder instead of reading actual archive

FIX: (#10381) ‘Fix WebGPU detection’ by ekharkunov

FIX: (#10374) ‘Added missed libraries in app manifest for Vulkan variant for linux platform’ by ekharkunov

FIX: (#10387) ‘Fix run OSX with OpenGL backend’ by ekharkunov

FIX: (#10401) ‘Add engine version and sdk into dmloader for html5 bundle’ by AGulev

Editor

NEW: (#10314) ‘Add editor HTTP server extensibility’ by vlaaad
Now editor scripts may add routes to the built-in HTTP server, e.g.:

function M.get_server_routes()
  return {
    http.server.route("/my-extension/files/{*file}", function(request)
      local attrs = editor.external_file_attributes(request.file)
      if attrs.is_file then
        return http.server.external_file_response(request.file)
      else
        return http.server.response(404, "Not found")
      end
    end)
  }
end

NEW: (#10241) ‘Make color fields editable’ by sprocketc
Added an editable text input to allow setting custom colors directly on the properties panel.

color-input

NEW: (#10344) ‘Show hovers from language servers’ by vlaaad

NEW: (#10298) ‘Create atlas images on drag & drop from the asset tree’ by sprocketc
Enable dragging & dropping images from the asset tree to the atlas scene view.

dnd-to-atlas

NEW: (#10249) ‘Add zip.pack to editor scripts’ by vlaaad
Now it’s possible to create zip archives using editor scripts:

zip.pack("build/dist.zip", {"build/wasm-web", "assets"})

NEW: (#10308) ‘Persist saved colors of color picker’ by sprocketc
Persist custom saved colors on project prefs.

Screenshot From 2025-03-12 13-04-05

NEW: (#10231) ‘Update properties on label drag’ by sprocketc
Dragging the labels of numeric properties now updates their value depending on the drag direction. When this action is supported, the label will be highlighted on mouse over, and the mouse cursor will switch to horizontal-resize. Left-right / up-down gestures both work. Some property types may override the default step (1), to a more sensible default. Holding SHIFT while dragging multiplies this step by 10, and holding CTRL divides it by 10, to allow different precision levels on a case by case basis.

drag-label

NEW: (#10357) ‘Projects can list paths to not load in .defunload’ by matgis
You can now list files and resources to exclude when loading the project in a .defunload file below the project directory. This may be of interest to large projects that contain multiple independent modules, where excluding parts of it can reduce memory usage and load times in the editor.

Simply put, the .defunload file allows you to hide parts of the project from the editor without making it a build error to reference the hidden resources.

The patterns in .defunload use the same rules as the .defignore file. Unloaded Collections and Game Objects will behave as if they were empty when referenced by loaded resources. Other resources that match .defunload patterns will be in an unloaded state, and cannot be viewed in the editor. However, if a resource that is loaded depends on them, the unloaded resources and their dependencies are loaded automatically.

For example, if a Sprite depends on images in an Atlas, we have to load the Atlas, or the missing image will be reported as an error. If this happens, a notification will warn the user about the situation and provide information about which unloaded resource was referenced from where.

The editor will prevent the user from adding references to .defunloaded resources from loaded resources, so this situation only occurs when resources are read from disk.

NEW: (#10253) ‘Introduce color dropper’ by sprocketc
Display a color dropper button when we move the mouse over a color input field. For now, the dropper can only be used to capture pixel values within the editor.

color-dropper

FIX: (#10266) ‘Improve parallel code loading on editor startup’ by vlaaad
The editor is more reliable when loading its code on startup.

FIX: (#10279) ‘Do not clean the bundle folder to speed up the bundling process’ by AGulev
From now on, the bundle option in the editor does not clean the bundle folder (equivalent to the distclean option in Bob) to speed up bundling.

FIX: (#10367) ‘Fix multi-editing of gui node properties’ by matgis
Fixed a regression where most Gui node properties would be hidden in the property editor when multiple Gui nodes were selected.

FIX: (#10424) ‘Correctly apply Gui template rotation to imported nodes when building’ by matgis
We were mistakenly mixing quaternion and Euler rotation math when baking Gui template node transforms into the imported nodes when building from the editor.

29 Likes

Very good!

2 Likes

Great release with a huge amount of new features!

Btw, this PR is missing from the changelog https://github.com/defold/defold/pull/9984

4 Likes

Over time, more and more experiences and key features have been enhanced, making it increasingly user-friendly and powerful.
curious if the next version is 2.0 :slight_smile:

4 Likes

Amazing!! Thank you :slight_smile:

3 Likes

Awesome! :grinning:

I have a question though. Will this not be included in next version? It’s much needed for releasing on desktop platforms.

1 Like

http not exist if use appmanifest.

DEBUG:SCRIPT: nil
ERROR:SCRIPT: main/main.script:3: attempt to index global 'http' (a nil value)
stack traceback:
  main/main.script:3: in function <main/main.script:1>

app_manifest_debug.appmanifest

platforms:
    armv7-ios:
        context:
            excludeLibs: [Box2D, record, vpx, image, physics, box2d, box2d_defold, script_box2d, script_box2d_defold]
            excludeSymbols: [ScriptImageExt, ScriptBox2DExt]
            libs: [record_null, image_null, physics_3d]
    arm64-ios:
        context:
            excludeLibs: [Box2D, record, vpx, image, physics, box2d, box2d_defold, script_box2d, script_box2d_defold]
            excludeSymbols: [ScriptImageExt, ScriptBox2DExt]
            libs: [record_null, image_null, physics_3d]
    x86_64-ios:
        context:
            excludeLibs: [Box2D, record, vpx, image, physics, box2d, box2d_defold, script_box2d, script_box2d_defold]
            excludeSymbols: [ScriptImageExt, ScriptBox2DExt]
            libs: [record_null, image_null, physics_3d]
    armv7-android:
        context:
            excludeLibs: [Box2D, record, vpx, image, physics, box2d, box2d_defold, script_box2d, script_box2d_defold]
            excludeSymbols: [ScriptImageExt, ScriptBox2DExt]
            libs: [record_null, image_null, physics_3d]
    arm64-android:
        context:
            excludeLibs: [Box2D, record, vpx, image, physics, box2d, box2d_defold, script_box2d, script_box2d_defold]
            excludeSymbols: [ScriptImageExt, ScriptBox2DExt]
            libs: [record_null, image_null, physics_3d]
    arm64-osx:
        context:
            excludeLibs: [Box2D, record, vpx, image, physics, box2d, box2d_defold, script_box2d, script_box2d_defold]
            excludeSymbols: [ScriptImageExt, ScriptBox2DExt]
            libs: [record_null, image_null, physics_3d]
    x86_64-osx:
        context:
            excludeLibs: [Box2D, record, vpx, image, physics, box2d, box2d_defold, script_box2d, script_box2d_defold]
            excludeSymbols: [ScriptImageExt, ScriptBox2DExt]
            libs: [record_null, image_null, physics_3d]
    x86_64-linux:
        context:
            excludeLibs: [Box2D, record, vpx, image, physics, box2d, box2d_defold, script_box2d, script_box2d_defold]
            excludeSymbols: [ScriptImageExt, ScriptBox2DExt]
            libs: [record_null, image_null, physics_3d]
    arm64-linux:
        context:
            excludeLibs: [Box2D, record, vpx, image, physics, box2d, box2d_defold, script_box2d, script_box2d_defold]
            excludeSymbols: [ScriptImageExt, ScriptBox2DExt]
            libs: [record_null, image_null, physics_3d]
    x86-win32:
        context:
            excludeLibs: [libBox2D, librecord, vpx, libimage, libphysics, libbox2d, libbox2d_defold, libscript_box2d, libscript_box2d_defold]
            excludeSymbols: [ScriptImageExt, ScriptBox2DExt]
            libs: [librecord_null.lib, libimage_null.lib, libphysics_3d.lib]
    x86_64-win32:
        context:
            excludeLibs: [libBox2D, librecord, vpx, libimage, libphysics, libbox2d, libbox2d_defold, libscript_box2d, libscript_box2d_defold]
            excludeSymbols: [ScriptImageExt, ScriptBox2DExt]
            libs: [librecord_null.lib, libimage_null.lib, libphysics_3d.lib]
    js-web:
        context:
            excludeLibs: [Box2D, record, vpx, image, physics, box2d, box2d_defold, script_box2d, script_box2d_defold]
            excludeSymbols: [ScriptImageExt, ScriptBox2DExt]
            libs: [record_null, image_null, physics_3d]
    wasm-web:
        context:
            excludeLibs: [Box2D, record, vpx, image, physics, box2d, box2d_defold, script_box2d, script_box2d_defold]
            excludeSymbols: [ScriptImageExt, ScriptBox2DExt]
            libs: [record_null, image_null, physics_3d]

http_no_exist.zip (5.2 KB)

2 Likes

Ah, yes, both are included, but we forgot to tag them with the 1.9.9 release on GitHub. I’ve done so and regenerated the release notes.

3 Likes

Awesome! There are a few cool QoL updates here. Are we having a 2.0 party or will it be just another regular update? :smiley:

As we use extension-imgui, which isn’t supported on Vulkan (crashes at startup), I tried switching to OpenGL in the app manifest, which leads to this:

ERROR:GRAPHICS: Could not install a graphics adapter. No compatible adapter was found.

Defold 3cd343db451c591a7b641fc450921624223de62c
Macbook Pro M1 2020
MacOS Sonoma 14.5

1 Like

I found the following issue:
if I set a simple built-in model material for a model having an animation, I get an error:

ERROR:GAMESYS: Unable to bind bone matrix cache texture for component '/builtins_model_local', no free texture slot available.

Well, and also with my model (made in Blockbench then re-saving .glb in Blender) skinning breaks something, maybe some information is missing in the model or it is in the wrong format. Another interesting thing is that if there are two identical models on the scene, one has no animation set and the other has it, both play animation. See the video:

4 Likes

Will you share an open-source example for GPU skinning maybe? :star_struck:

I bet this, together with GPU instancing introduced earlier (1.9.4) allow to have fully GPU driven animated models, isn’t it? Would be great to have a demo, or even better a comparison of CPU/GPU approaches, like some benchmark or something like this :wink:

1 Like

It’s not working for me. I tested it with both the alpha and beta on three different projects, including the platformer template.
Is there anything I can share to help?

I confirmed that dnd does not work on Windows. We’ll look into it, no need to do anything else. Thanks for the report!

3 Likes

I can though confirm it works on Ubuntu 24 :wink:

I tried adding the Rogue_Hooded.glb model from the free KayKit Adventures kit (model size 3.5Mb, 6k triangles) and unfortunately found that the editor shut down instantly without even saving any error to the log file.

Editor version:

PC, Windows 10, 32Gb, NVIDIA GeForce GTX 1060 6GB.

4 Likes

A small project for testing. Contains only camera and one model, which worked in the project with world material and animation on CPU, but is distorted also as example above.

And also contains the Rogue_Hooded.glb model from the post above.
gpu_test.zip (1.1 MB)

3 Likes