# Defold 1.13.0 has been released!

**URL:** <https://forum.defold.com/t/defold-1-13-0-has-been-released/82980>\
**Category:** Release notes\
**Created:** [June 29, 2026, 9:03am UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980 "2026-06-29T09:03:09Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mathias\_Westerdahl](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/mathias_westerdahl/32/228_2.png) [@Mathias\_Westerdahl](https://forum.defold.com/u/Mathias_Westerdahl)\
**Post date:** [June 29, 2026, 9:03am UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/1 "2026-06-29T09:03:09Z")

</div>

# Defold 1.13.0

## ⚠ BREAKING CHANGES ⚠

This is a big release! Not only have we added a lot of exciting features, but we have also done some spring cleaning.

## Lua constants + functions

We have removed a lot of old deprecated (and undocumented) functions.  
For the most part, it’s about using different Lua module names, but sometimes it’s also using a different function (like `go.get()`/`go.set()`).

**MIGRATION** : The notes below outlines what the old and new constants/functions are.  
**MIGRATION 2** : If you have many projects, you can also use a [Python helper script](https://gist.github.com/AGulev/e41579eed51174756aaccb16f184ee94) to update your project. As always, backup your project before!

## js-web platform is removed

We have removed support for the `js-web` platform, in favour of fully committing to `wasm-web`. It follows the wasm support being so widespread today on sites like [Poki](https://developers.poki.com/guide/player-device-report)

**MIGRATION** : Review any build scripts which uses `js-web` and change them to use `wasm-web` instead.

## Render primitive Winding Order

We made sure that all our components use the same default winding order. Since the current render script is modeled after OpenGL, we now default to CCW (counter clock wise). If you are using back face culling, you may be affected by this.

**MIGRATION** : Reverse the back vs front face for the draw calls that don’t show up.

## No Collada support

We’ve finally removed our support for the Collada format completely. We are committed to support the glTF format instead.

**MIGRATION** : If you are using the builtin meshes, like the`/builtins/assets/meshes/quad.dae`, you will now find an equivalent glTF file in `/builtins/assets/meshes/quad.gltf` instead.

## Model transform fixes

We previously had a “helpful” functionality, where we recentered a model to where the gameobject/component was in the scene. It turned out to be the wrong approach, as the model file may be much more complex than that. In fact, it produced errors for some scenes, and we decided to remove that hidden function completely

**MIGRATION** :. For the most part, we don’t anticipate users being affected by this. If you are affected, the fix is to move the model appropriately within the gameobject/component.

## LiveUpdate cleanup

### Removed LiveUpdate auto mount

We’ve finally removed the old auto mount feature. It was buggy, and easy to get stuck in a bad state. So it’s finally removed.

**MIGRATION** : If you used the game.project setting `liveupdate.mount_on_start` it means that for each session, you will need to mount the packages you want.

### Removed old Livupdate format

We previously supported downloading single assets one-by-one, and adding them to an archive on the device. The archive would only grow, never shrink, and the code was very cumbersome to support.

**MIGRATION** : Use `liveupdate.add_mount()` and either mount a zip archive or a folder with single files in it.

* * *

# Defold 1.13.0

## Summary

- **BREAKING CHANGE** : ([#10667,#10202](https://github.com/defold/defold/pull/12367)) Remove the support for LiveUpdate auto mount (by JCash)
- **BREAKING CHANGE** : ([#11622](https://github.com/defold/defold/pull/12220)) Removed support for the `js-web` (asmjs) build from the engine (by AGulev)
- **BREAKING CHANGE** : ([#12366](https://github.com/defold/defold/pull/12369)) Removed support for old LiveUpdate format (by JCash)
- **BREAKING CHANGE** : ([#9072,#5666](https://github.com/defold/defold/pull/12377)) Component primitive order unification (by Jhonnyg)
- **BREAKING CHANGE** : ([#10455](https://github.com/defold/defold/pull/12441)) Remove deprecated Lua APIs (by ekharkunov)
- **BREAKING CHANGE** : ([#11749](https://github.com/defold/defold/pull/12276)) Removed support for Collada (`*.dae`) (by AGulev)
- **BREAKING CHANGE** : ([#12414](https://github.com/defold/defold/pull/12414)) Fixes model transform inconsistencies between the editor and runtime for imported glTF/glb models (by Jhonnyg)
- **NEW** : ([#8753](https://github.com/defold/defold/pull/12351)) Added Box2D script functions for joints (by JCash)
- **NEW** : ([#8024,#3619](https://github.com/defold/defold/pull/12192)) Support morph targets for model components (by Jhonnyg)
- **NEW** : ([#7649](https://github.com/defold/defold/pull/12240)) Use Vulkan as the default graphics API on Android (by Jhonnyg)
- **NEW** : ([#9973](https://github.com/defold/defold/pull/12090)) Add render.set\_blend\_state() for separate blend factors and equations (by nanaktaev)
- **NEW** : ([#6936](https://github.com/defold/defold/pull/12288)) Frustum culling for Particle FX components (by Jhonnyg)
- **NEW** : ([#7882](https://github.com/defold/defold/pull/12294)) Contain the html5 splash image to the canvas (by britzl)
- **NEW** : ([#3789](https://github.com/defold/defold/pull/12310)) Add more shader constants (by Jhonnyg)
- **NEW** : ([#12158](https://github.com/defold/defold/pull/12313)) Allow changing zoom even when a camera component uses Fit or Cover mode (by AGulev)
- **NEW** : ([#11172](https://github.com/defold/defold/pull/12216)) Improved support for Box2d scripting api (by JCash)
- **NEW** : ([#3790,#10831](https://github.com/defold/defold/pull/12348)) Add new graphics script functions (by Jhonnyg)
- **NEW** : ([#9100](https://github.com/defold/defold/pull/9208)) Material and compute script modules (by Jhonnyg)
- **NEW** : ([#12157,#10963,#10853](https://github.com/defold/defold/pull/12174)) Scene view toolbar button popup enhancements (by JosephFerano)
- **NEW** : ([#12231](https://github.com/defold/defold/pull/12231)) Editor camera overlay in scene view (by Jhonnyg)
- **NEW** : ([#11989](https://github.com/defold/defold/pull/12257)) Parallelize directory traversal when syncing resources (by vlaaad)
- **NEW** : ([#11995](https://github.com/defold/defold/pull/12285)) Add `/eval` endpoint to editor server (by vlaaad)
- **NEW** : ([#11495](https://github.com/defold/defold/pull/12315)) Images supported by the engine now open directly in the editor (by AGulev)
- **NEW** : ([#12337](https://github.com/defold/defold/pull/12368)) Improve /command/clean-build doc and behavior (by vlaaad)
- **NEW** : ([#12439](https://github.com/defold/defold/pull/12445)) Editor: Skip disabled menu items in context menus (by JosephFerano)
- **FIX** : ([#11015,#5274](https://github.com/defold/defold/pull/12316)) Added support for reporting Sdl Guid for connected gamepads (by JCash)
- **FIX** : ([#12168](https://github.com/defold/defold/pull/12168)) Added initial support for running tests on a connected Android device (by JCash)
- **FIX** : ([#12203](https://github.com/defold/defold/pull/12203)) Added support for passing command line arguments to an Android app (by JCash)
- **FIX** : ([#11470](https://github.com/defold/defold/pull/12147)) Do not reset model pose when animation finishes (by britzl)
- **FIX** : ([#12280](https://github.com/defold/defold/pull/12280)) Minimize final engine build sizes for macOS and Android builds (by JCash)
- **FIX** : ([#12259](https://github.com/defold/defold/pull/12289)) Updated to latest SSL certificates (by britzl)
- **FIX** : ([#3557](https://github.com/defold/defold/pull/12298)) Add a LUA reference for constant buffers involved in a render.draw command (by Jhonnyg)
- **FIX** : ([#12300](https://github.com/defold/defold/pull/12300)) Renamed all Lua+LuaJIT symbols to avoid 3rd party symbol clashes (by JCash)
- **FIX** : ([#11128,#12252](https://github.com/defold/defold/pull/12304)) Fixed an issue where equal hashes could behave as if they were not equal in certain cases (by AGulev)
- **FIX** : ([#8957,#12111](https://github.com/defold/defold/pull/12256)) Editor: Prevent editor from making invalid collision shapes (by JosephFerano)
- **FIX** : ([#12318](https://github.com/defold/defold/pull/12318)) Fixed image\_null library linker issues. (by JCash)
- **FIX** : ([#12320](https://github.com/defold/defold/pull/12320)) Added endian.h/endian.hpp to dmSdk (by JCash)
- **FIX** : ([#11387](https://github.com/defold/defold/pull/12325)) Symbols for both vanilla `wasm` and `pthread.wasm` bundles are now available (by AGulev)
- **FIX** : ([#12327](https://github.com/defold/defold/pull/12327)) Ensure `UpdateTransforms` runs only after actual transform changes (by AGulev)
- **FIX** : ([#12338](https://github.com/defold/defold/pull/12338)) Fix particlefx crash when playing effects with emitter overrides (by AGulev)
- **FIX** : ([#12362](https://github.com/defold/defold/pull/12381)) Fix sprite component crash (by ekharkunov)
- **FIX** : ([#12261,#11246,#11024,#7738,#11308](https://github.com/defold/defold/pull/12386)) Added fix for scaling dynamic physics objects in Bullet3D (by JCash)
- **FIX** : ([#12412](https://github.com/defold/defold/pull/12415)) Fix `gui.set_screen_position()` for nodes with scale (by AGulev)
- **FIX** : ([#11197](https://github.com/defold/defold/pull/12394)) Fix Base64Decode to handle input without padding (by singhvishalkr)
- **FIX** : ([#9446](https://github.com/defold/defold/pull/12424)) Add Lua stack index arguments to dmSDK functions LuaToJson and JsonToLua (by britzl)
- **FIX** : ([#12437](https://github.com/defold/defold/pull/12459)) Fix runtime font job teardown crash (by AGulev)
- **FIX** : ([#12409](https://github.com/defold/defold/pull/12448)) Fix HTML5 profiler memory sampling slowdown (by AGulev)
- **FIX** : ([#12449](https://github.com/defold/defold/pull/12449)) Update msvc to 2026 (by ekharkunov)
- **FIX** : ([#12500](https://github.com/defold/defold/pull/12500)) Updated Box2d v3 api with chain an other missing functions (by JCash)
- **FIX** : ([#12234](https://github.com/defold/defold/pull/12238)) Improve the Lua parser to make it less error-prone (by AGulev)
- **FIX** : ([#11695](https://github.com/defold/defold/pull/12237)) Ensure the Editor loads only bundled libraries, ignoring those installed on the system (by AGulev)
- **FIX** : ([#12224](https://github.com/defold/defold/pull/12250)) Editor: Fix manual-size-mode sprite not displaying (by JosephFerano)
- **FIX** : ([#12253](https://github.com/defold/defold/pull/12253)) Unify deps download between editor and bob (by vlaaad)
- **FIX** : ([#10510](https://github.com/defold/defold/pull/12299)) Show error notification when custom editor could not be opened (by vlaaad)
- **FIX** : ([#8669](https://github.com/defold/defold/pull/12323)) Ensure that builds from the editor include the `DM_DEBUG` define (by AGulev)
- **FIX** : ([#12365](https://github.com/defold/defold/pull/12370)) Resolve game.project resource defaults before rendering the form (by vlaaad)
- **FIX** : ([#12359](https://github.com/defold/defold/pull/12359)) Offload font map generation to a later build phase (by vlaaad)
- **FIX** : ([#12374](https://github.com/defold/defold/pull/12374)) Improve UI responsiveness during builds (by vlaaad)
- **FIX** : ([#12156](https://github.com/defold/defold/pull/12372)) Editor: Fix macOS dialog windows showing in-window menu bars (by JosephFerano)
- **FIX** : ([#12423](https://github.com/defold/defold/pull/12430)) Fix assertion error when deleting last particle emitter (by JosephFerano)
- **FIX** : ([#12361,#12360,#12226](https://github.com/defold/defold/pull/12380)) Editor camera fov slider and bug fixes (by JosephFerano)
- **FIX** : ([extension-websocket#65](https://github.com/defold/defold/pull/12418)) Fix for handling when macOS/iOS blocks while creating a SSL socket (by JCash)

## Engine

**BREAKING CHANGE** : ([#10667,#10202](https://github.com/defold/defold/pull/12367)) **‘Remove the support for LiveUpdate auto mount’** by JCash  
⚠ This removes the deprecated feature of LiveUpdate auto mounts.  
From now on, developers must always choose their mounts when starting the game.

Note that the returned mount names now also are hashes (previously strings):

```lua
 pprint("MOUNTS", liveupdate.get_mounts())

```

returns

```lua
DEBUG:SCRIPT: MOUNTS,
{ --[[0x119667bf0]]
  1 = { --[[0x119667c50]]
    name = hash: [liveupdate],
    uri = "zip:/device/path/to/acchives/liveupdate.zip",
    priority = 5
  },
  2 = { --[[0x119667d50]]
    name = hash: [_base],
    uri = "archive:build/default/game.dmanifest",
    priority = -10
  }
}

```

**BREAKING CHANGE** : ([#11622](https://github.com/defold/defold/pull/12220)) **‘Removed support for the `js-web` (asmjs) build from the engine’** by AGulev  
In this version, support for the js-web (asmjs) platform in the engine has been removed,[as previously announced](https://forum.defold.com/t/removing-collada-support-and-the-asm-js-platform/82506).

This means `bob.jar` no longer supports `js-web` as a platform or architecture. Make sure your build scripts and CI have been updated accordingly.

**BREAKING CHANGE** : ([#12366](https://github.com/defold/defold/pull/12369)) **‘Removed support for old LiveUpdate format’** by JCash  
⚠ This removes support for our very old mutable LiveUpdate format, which managed individual files and manifests directly.  
Going forward, we recommend using our LiveUpdate with “zip” mounts, allowing you to mount your downloaded .zip files.  
If individual files are necessary, you can also use the “file” mount type which mounts a folder.

**BREAKING CHANGE** : ([#9072,#5666](https://github.com/defold/defold/pull/12377)) **‘Component primitive order unification’** by Jhonnyg  
⚠ BREAKING CHANGE ⚠

The vertices for the `sprite`, `gui`, `tilegrid` and `particle` components are now unified with the rest of the components. The engine is now using counter-clockwise ordering of the vertices so that the normal of the primitive is pointing towards the camera. This means that you can use the same face culling parameters for all components.

Regarding breaking change:  
This should only have an impact if you are using face culling for your components. In the default render script, we have enabled backface culling only for models but if your project is using backface culling for other components you might have to switch the front/back face using `render.set_cull_face(graphics.FACE_TYPE_BACK)`. The default cull face mode is FACE\_TYPE\_BACK, so you can also just remove the `render.set_cull_face` call

**BREAKING CHANGE** : ([#10455](https://github.com/defold/defold/pull/12441)) **‘Remove deprecated Lua APIs’** by ekharkunov  
⚠ Removed deprecated Lua APIs and constants. Here a tables for migration:

| Old API | New API |
| --- | --- |
| go.get\_scale\_vector() | go.get\_scale() |
| go.delete\_all() | go.delete() |
| camera.acquire\_focus() | ⚠ removed |
| camera.release\_focus() | ⚠ removed |
| label.get\_text\_metrics() | resource.get\_text\_metrics() |
| model.play() | model.play\_anim() |
| model.set\_constant() | go.set() |
| physics.set\_listener() | physics.set\_event\_listener() |
| physics.ray\_cast() | physics.raycast\_async() |
| sprite.set\_constant() | go.set() |
| tilemap.set\_constant() | go.set() |
| gui.get\_text\_metrics() | resource.get\_text\_metrics() |
| gui.get\_text\_metrics\_from\_node() | resource.get\_text\_metrics() |
| render.enable\_render\_target() | render.set\_render\_target() |
| render.disable\_render\_target() | render.set\_render\_target() |
| render.draw\_debug2d() | render.draw\_debug3d() |
| vmath.matrix4\_from\_quat() | vmath.matrix4\_quat() |
| sys.get\_config() | sys.get\_config\_string() |

| Old constant | New constant |
| --- | --- |
| render.STATE\_DEPTH\_TEST | graphics.STATE\_DEPTH\_TEST |
| render.STATE\_STENCIL\_TEST | graphics.STATE\_STENCIL\_TEST |
| render.STATE\_ALPHA\_TEST | graphics.STATE\_ALPHA\_TEST |
| render.STATE\_BLEND | graphics.STATE\_BLEND |
| render.STATE\_CULL\_FACE | graphics.STATE\_CULL\_FACE |
| render.STATE\_POLYGON\_OFFSET\_FILL | graphics.STATE\_POLYGON\_OFFSET\_FILL |
| render.FORMAT\_LUMINANCE | graphics.TEXTURE\_FORMAT\_LUMINANCE |
| render.FORMAT\_RGBA | graphics.TEXTURE\_FORMAT\_RGBA |
| render.FORMAT\_DEPTH | graphics.TEXTURE\_FORMAT\_DEPTH |
| render.FORMAT\_STENCIL | graphics.TEXTURE\_FORMAT\_STENCIL |
| render.RGB | graphics.TEXTURE\_FORMAT\_RGB |
| render.RGB16F | graphics.TEXTURE\_FORMAT\_RGB16F |
| render.RGB32F | graphics.TEXTURE\_FORMAT\_RGB32F |
| render.RGBA16F | graphics.TEXTURE\_FORMAT\_RGBA16F |
| render.RGBA32F | graphics.TEXTURE\_FORMAT\_RGBA32F |
| render.R16F | graphics.TEXTURE\_FORMAT\_R16F |
| render.RG16F | graphics.TEXTURE\_FORMAT\_RG16F |
| render.R32F | graphics.TEXTURE\_FORMAT\_R32F |
| render.RG32F | graphics.TEXTURE\_FORMAT\_RG32F |
| render.FILTER\_LINEAR | graphics.TEXTURE\_FILTER\_LINEAR |
| render.FILTER\_NEAREST | graphics.TEXTURE\_FILTER\_NEAREST |
| render.WRAP\_CLAMP\_TO\_BORDER | graphics.TEXTURE\_WRAP\_CLAMP\_TO\_BORDER |
| render.WRAP\_CLAMP\_TO\_EDGE | graphics.TEXTURE\_WRAP\_CLAMP\_TO\_EDGE |
| render.WRAP\_MIRRORED\_REPEAT | graphics.TEXTURE\_WRAP\_MIRRORED\_REPEAT |
| render.WRAP\_REPEAT | graphics.TEXTURE\_WRAP\_REPEAT |
| render.BLEND\_ZERO | graphics.BLEND\_FACTOR\_ZERO |
| render.BLEND\_ONE | graphics.BLEND\_FACTOR\_ONE |
| render.BLEND\_SRC\_COLOR | graphics.BLEND\_FACTOR\_SRC\_COLOR |
| render.BLEND\_ONE\_MINUS\_SRC\_COLOR | graphics.BLEND\_FACTOR\_ONE\_MINUS\_SRC\_COLOR |
| render.BLEND\_DST\_COLOR | graphics.BLEND\_FACTOR\_DST\_COLOR |
| render.BLEND\_ONE\_MINUS\_DST\_COLOR | graphics.BLEND\_FACTOR\_ONE\_MINUS\_DST\_COLOR |
| render.BLEND\_SRC\_ALPHA | graphics.BLEND\_FACTOR\_SRC\_ALPHA |
| render.BLEND\_ONE\_MINUS\_SRC\_ALPHA | graphics.BLEND\_FACTOR\_ONE\_MINUS\_SRC\_ALPHA |
| render.BLEND\_DST\_ALPHA | graphics.BLEND\_FACTOR\_DST\_ALPHA |
| render.BLEND\_ONE\_MINUS\_DST\_ALPHA | graphics.BLEND\_FACTOR\_ONE\_MINUS\_DST\_ALPHA |
| render.BLEND\_SRC\_ALPHA\_SATURATE | graphics.BLEND\_FACTOR\_SRC\_ALPHA\_SATURATE |
| render.BLEND\_CONSTANT\_COLOR | graphics.BLEND\_FACTOR\_CONSTANT\_COLOR |
| render.BLEND\_ONE\_MINUS\_CONSTANT\_COLOR | graphics.BLEND\_FACTOR\_ONE\_MINUS\_CONSTANT\_COLOR |
| render.BLEND\_CONSTANT\_ALPHA | graphics.BLEND\_FACTOR\_CONSTANT\_ALPHA |
| render.BLEND\_ONE\_MINUS\_CONSTANT\_ALPHA | graphics.BLEND\_FACTOR\_ONE\_MINUS\_CONSTANT\_ALPHA |
| render.BLEND\_EQUATION\_ADD | graphics.BLEND\_EQUATION\_ADD |
| render.BLEND\_EQUATION\_SUBTRACT | graphics.BLEND\_EQUATION\_SUBTRACT |
| render.BLEND\_EQUATION\_REVERSE\_SUBTRACT | graphics.BLEND\_EQUATION\_REVERSE\_SUBTRACT |
| render.BLEND\_EQUATION\_MIN | graphics.BLEND\_EQUATION\_MIN |
| render.BLEND\_EQUATION\_MAX | graphics.BLEND\_EQUATION\_MAX |
| render.COMPARE\_FUNC\_NEVER | graphics.COMPARE\_FUNC\_NEVER |
| render.COMPARE\_FUNC\_LESS | graphics.COMPARE\_FUNC\_LESS |
| render.COMPARE\_FUNC\_LEQUAL | graphics.COMPARE\_FUNC\_LEQUAL |
| render.COMPARE\_FUNC\_GREATER | graphics.COMPARE\_FUNC\_GREATER |
| render.COMPARE\_FUNC\_GEQUAL | graphics.COMPARE\_FUNC\_GEQUAL |
| render.COMPARE\_FUNC\_EQUAL | graphics.COMPARE\_FUNC\_EQUAL |
| render.COMPARE\_FUNC\_NOTEQUAL | graphics.COMPARE\_FUNC\_NOTEQUAL |
| render.COMPARE\_FUNC\_ALWAYS | graphics.COMPARE\_FUNC\_ALWAYS |
| render.STENCIL\_OP\_KEEP | graphics.STENCIL\_OP\_KEEP |
| render.STENCIL\_OP\_ZERO | graphics.STENCIL\_OP\_ZERO |
| render.STENCIL\_OP\_REPLACE | graphics.STENCIL\_OP\_REPLACE |
| render.STENCIL\_OP\_INCR | graphics.STENCIL\_OP\_INCR |
| render.STENCIL\_OP\_INCR\_WRAP | graphics.STENCIL\_OP\_INCR\_WRAP |
| render.STENCIL\_OP\_DECR | graphics.STENCIL\_OP\_DECR |
| render.STENCIL\_OP\_DECR\_WRAP | graphics.STENCIL\_OP\_DECR\_WRAP |
| render.STENCIL\_OP\_INVERT | graphics.STENCIL\_OP\_INVERT |
| render.FACE\_FRONT | graphics.FACE\_TYPE\_FRONT |
| render.FACE\_BACK | graphics.FACE\_TYPE\_BACK |
| render.FACE\_FRONT\_AND\_BACK | graphics.FACE\_TYPE\_FRONT\_AND\_BACK |
| render.BUFFER\_COLOR\_BIT | graphics.BUFFER\_TYPE\_COLOR0\_BIT |
| render.BUFFER\_COLOR0\_BIT | graphics.BUFFER\_TYPE\_COLOR0\_BIT |
| render.BUFFER\_COLOR1\_BIT | graphics.BUFFER\_TYPE\_COLOR1\_BIT |
| render.BUFFER\_COLOR2\_BIT | graphics.BUFFER\_TYPE\_COLOR2\_BIT |
| render.BUFFER\_COLOR3\_BIT | graphics.BUFFER\_TYPE\_COLOR3\_BIT |
| render.BUFFER\_DEPTH\_BIT | graphics.BUFFER\_TYPE\_DEPTH\_BIT |
| render.BUFFER\_STENCIL\_BIT | graphics.BUFFER\_TYPE\_STENCIL\_BIT |
| resource.TEXTURE\_TYPE\_2D | graphics.TEXTURE\_TYPE\_2D |
| resource.TEXTURE\_TYPE\_CUBE\_MAP | graphics.TEXTURE\_TYPE\_CUBE\_MAP |
| resource.TEXTURE\_TYPE\_2D\_ARRAY | graphics.TEXTURE\_TYPE\_2D\_ARRAY |
| resource.TEXTURE\_TYPE\_IMAGE\_2D | graphics.TEXTURE\_TYPE\_IMAGE\_2D |
| resource.BUFFER\_TYPE\_COLOR0\_BIT | graphics.BUFFER\_TYPE\_COLOR0\_BIT |
| resource.BUFFER\_TYPE\_COLOR1\_BIT | graphics.BUFFER\_TYPE\_COLOR1\_BIT |
| resource.BUFFER\_TYPE\_COLOR2\_BIT | graphics.BUFFER\_TYPE\_COLOR2\_BIT |
| resource.BUFFER\_TYPE\_COLOR3\_BIT | graphics.BUFFER\_TYPE\_COLOR3\_BIT |
| resource.BUFFER\_TYPE\_DEPTH\_BIT | graphics.BUFFER\_TYPE\_DEPTH\_BIT |
| resource.BUFFER\_TYPE\_STENCIL\_BIT | graphics.BUFFER\_TYPE\_STENCIL\_BIT |
| resource.TEXTURE\_USAGE\_FLAG\_SAMPLE | graphics.TEXTURE\_USAGE\_FLAG\_SAMPLE |
| resource.TEXTURE\_USAGE\_FLAG\_MEMORYLESS | graphics.TEXTURE\_USAGE\_FLAG\_MEMORYLESS |
| resource.TEXTURE\_USAGE\_FLAG\_STORAGE | graphics.TEXTURE\_USAGE\_FLAG\_STORAGE |
| resource.TEXTURE\_FORMAT\_LUMINANCE | graphics.TEXTURE\_FORMAT\_LUMINANCE |
| resource.TEXTURE\_FORMAT\_RGB | graphics.TEXTURE\_FORMAT\_RGB |
| resource.TEXTURE\_FORMAT\_RGBA | graphics.TEXTURE\_FORMAT\_RGBA |
| resource.TEXTURE\_FORMAT\_DEPTH | graphics.TEXTURE\_FORMAT\_DEPTH |
| resource.TEXTURE\_FORMAT\_STENCIL | graphics.TEXTURE\_FORMAT\_STENCIL |
| resource.TEXTURE\_FORMAT\_RGB\_PVRTC\_2BPPV1 | graphics.TEXTURE\_FORMAT\_RGB\_PVRTC\_2BPPV1 |
| resource.TEXTURE\_FORMAT\_RGB\_PVRTC\_4BPPV1 | graphics.TEXTURE\_FORMAT\_RGB\_PVRTC\_4BPPV1 |
| resource.TEXTURE\_FORMAT\_RGBA\_PVRTC\_2BPPV1 | graphics.TEXTURE\_FORMAT\_RGBA\_PVRTC\_2BPPV1 |
| resource.TEXTURE\_FORMAT\_RGBA\_PVRTC\_4BPPV1 | graphics.TEXTURE\_FORMAT\_RGBA\_PVRTC\_4BPPV1 |
| resource.TEXTURE\_FORMAT\_RGB\_ETC1 | graphics.TEXTURE\_FORMAT\_RGB\_ETC1 |
| resource.TEXTURE\_FORMAT\_RGBA\_ETC2 | graphics.TEXTURE\_FORMAT\_RGBA\_ETC2 |
| resource.TEXTURE\_FORMAT\_RGBA\_ASTC\_4x4 | graphics.TEXTURE\_FORMAT\_RGBA\_ASTC\_4x4 |
| resource.TEXTURE\_FORMAT\_RGB\_BC1 | graphics.TEXTURE\_FORMAT\_RGB\_BC1 |
| resource.TEXTURE\_FORMAT\_RGBA\_BC3 | graphics.TEXTURE\_FORMAT\_RGBA\_BC3 |
| resource.TEXTURE\_FORMAT\_R\_BC4 | graphics.TEXTURE\_FORMAT\_R\_BC4 |
| resource.TEXTURE\_FORMAT\_RG\_BC5 | graphics.TEXTURE\_FORMAT\_RG\_BC5 |
| resource.TEXTURE\_FORMAT\_RGBA\_BC7 | graphics.TEXTURE\_FORMAT\_RGBA\_BC7 |
| resource.TEXTURE\_FORMAT\_RGB16F | graphics.TEXTURE\_FORMAT\_RGB16F |
| resource.TEXTURE\_FORMAT\_RGB32F | graphics.TEXTURE\_FORMAT\_RGB32F |
| resource.TEXTURE\_FORMAT\_RGBA16F | graphics.TEXTURE\_FORMAT\_RGBA16F |
| resource.TEXTURE\_FORMAT\_RGBA32F | graphics.TEXTURE\_FORMAT\_RGBA32F |
| resource.TEXTURE\_FORMAT\_R16F | graphics.TEXTURE\_FORMAT\_R16F |
| resource.TEXTURE\_FORMAT\_RG16F | graphics.TEXTURE\_FORMAT\_RG16F |
| resource.TEXTURE\_FORMAT\_R32F | graphics.TEXTURE\_FORMAT\_R32F |
| resource.TEXTURE\_FORMAT\_RG32F | graphics.TEXTURE\_FORMAT\_RG32F |
| resource.COMPRESSION\_TYPE\_DEFAULT | graphics.COMPRESSION\_TYPE\_DEFAULT |
| resource.COMPRESSION\_TYPE\_BASIS\_UASTC | graphics.COMPRESSION\_TYPE\_BASIS\_UASTC |

**NEW** : ([#8753](https://github.com/defold/defold/pull/12351)) **‘Added Box2D script functions for joints’** by JCash

### Box2D v2 Lua Joint API

Added `b2d.body.get_joints`.

Added `b2d.joint` functions:

- `destroy`
- `get_type`
- `get_body_a`
- `get_body_b`
- `get_local_anchor_a`
- `get_local_anchor_b`
- `get_anchor_a`
- `get_anchor_b`
- `is_active`
- `get_collide_connected`
- `get_reaction_force`
- `get_reaction_torque`

Added v2 joint creation:

- `create_distance`
- `create_mouse`
- `create_prismatic`
- `create_revolute`
- `create_weld`
- `create_wheel`
- `create_friction`
- `create_rope`
- `create_pulley`
- `create_gear`

Added v2 joint property access:

- `set_mouse_target`, `get_mouse_target`
- `set_length`, `get_length`
- `set_frequency`, `get_frequency`
- `set_hertz`, `get_hertz`
- `set_damping_ratio`, `get_damping_ratio`
- `set_spring_damping_ratio`, `get_spring_damping_ratio`
- `get_local_axis_a`
- `get_reference_angle`
- `get_joint_translation`
- `get_joint_speed`
- `get_joint_angle`
- `enable_limit`, `is_limit_enabled`
- `set_limits`, `get_lower_limit`, `get_upper_limit`
- `enable_motor`, `is_motor_enabled`
- `set_motor_speed`, `get_motor_speed`
- `set_max_motor_force`, `get_max_motor_force`, `get_motor_force`
- `set_max_motor_torque`, `get_max_motor_torque`, `get_motor_torque`
- `set_max_force`, `get_max_force`
- `set_max_torque`, `get_max_torque`
- `set_max_length`, `get_max_length`
- `get_limit_state`
- `get_ground_anchor_a`, `get_ground_anchor_b`
- `get_length_a`, `get_length_b`
- `set_ratio`, `get_ratio`
- `get_joint1`, `get_joint2`

### Box2D v3 Lua Joint API

Added `b2d.body.get_joints`.

Added `b2d.joint` functions:

- `destroy`
- `get_type`
- `get_body_a`
- `get_body_b`
- `get_local_anchor_a`
- `get_local_anchor_b`
- `get_anchor_a`
- `get_anchor_b`
- `get_collide_connected`
- `set_collide_connected`
- `wake_bodies`
- `get_reaction_force`
- `get_reaction_torque`

Added v3 joint creation:

- `create_distance`
- `create_mouse`
- `create_prismatic`
- `create_revolute`
- `create_weld`
- `create_wheel`
- `create_motor`
- `create_filter`

Added v3 joint property access:

- `set_mouse_target`, `get_mouse_target`
- `set_length`, `get_length`
- `enable_spring`, `is_spring_enabled`
- `set_spring_hertz`, `get_spring_hertz`
- `set_hertz`, `get_hertz`
- `set_frequency`, `get_frequency`
- `set_spring_damping_ratio`, `get_spring_damping_ratio`
- `set_damping_ratio`, `get_damping_ratio`
- `set_length_range`
- `set_min_length`, `get_min_length`
- `set_max_length`, `get_max_length`
- `get_current_length`
- `enable_limit`, `is_limit_enabled`
- `set_limits`, `get_lower_limit`, `get_upper_limit`
- `enable_motor`, `is_motor_enabled`
- `set_motor_speed`, `get_motor_speed`
- `set_max_motor_force`, `get_max_motor_force`, `get_motor_force`
- `set_max_motor_torque`, `get_max_motor_torque`, `get_motor_torque`
- `set_max_force`, `get_max_force`
- `set_max_torque`, `get_max_torque`
- `set_linear_offset`, `get_linear_offset`
- `set_angular_offset`, `get_angular_offset`
- `set_correction_factor`, `get_correction_factor`
- `get_joint_translation`
- `get_joint_speed`
- `get_joint_angle`
- `set_reference_angle`, `get_reference_angle`
- `set_linear_hertz`, `get_linear_hertz`
- `set_linear_damping_ratio`, `get_linear_damping_ratio`
- `set_angular_hertz`, `get_angular_hertz`
- `set_angular_damping_ratio`, `get_angular_damping_ratio`

**NEW** : ([#8024,#3619](https://github.com/defold/defold/pull/12192)) **‘Support morph targets for model components’** by Jhonnyg  
glTF files with morph / blend target data are now supported for model components in the engine. Two new shader constructs are now exposed that can be used to achieve morph target rendering:

```glsl
// 1) a uniform / constant that holds the weights
uniform vs_uniforms
{
	vec4 morph_targets_weights;

	// if you need to support more than 4 weights, use an array instead:
	// vec4 morph_targets_weights[x];
};

// 2) an array sampler that holds the morph target data
uniform sampler2DArray morph_targets;

```

Demo:  
[morph-target-testing.zip](https://github.com/user-attachments/files/28347210/morph-target-testing.zip)

Future improvements:

- Instancing - a new vertex attribute semantic is needed
- Mix skinning and morph animations - currently an animation can drive either a skinned animation or a morph target animation, not both
- Play multiple morph animations at the same time (also applies to bone animations)

**NEW** : ([#7649](https://github.com/defold/defold/pull/12240)) **‘Use Vulkan as the default graphics API on Android’** by Jhonnyg  
Android will from now on use Vulkan as the primary graphics adapter and OpenGL as a fallback if Vulkan is not supported on the running device. This can be changed by using an app manifest where you can select either OpenGL+Vulkan (default), only OpenGL or only Vulkan as the primary graphics adapter.

**NEW** : ([#9973](https://github.com/defold/defold/pull/12090)) **‘Add render.set\_blend\_state() for separate blend factors and equations’** by nanaktaev  
New `render.set_blend_func_separate()` and `render.set_blend_equation_separate()` functions that provide separate control over color and alpha blend factors and equations. This enables advanced blending techniques such as 2D soft shadows (Slembcke technique) that require FUNC\_REVERSE\_SUBTRACT for the alpha channel while keeping FUNC\_ADD for color.

**New API:**

```lua
-- Set separate blend factors for color and alpha channels
render.set_blend_func_separate(source_factor_color, destination_factor_color,
                               source_factor_alpha, destination_factor_alpha)

-- Set separate blend equations for color and alpha channels
render.set_blend_equation_separate(equation_color, equation_alpha)

```

**New constants:** `graphics.BLEND_EQUATION_ADD`, `graphics.BLEND_EQUATION_SUBTRACT`, `graphics.BLEND_EQUATION_REVERSE_SUBTRACT`, `graphics.BLEND_EQUATION_MIN`, `graphics.BLEND_EQUATION_MAX`.

Fully backwards compatible — existing `render.set_blend_func()` continues to work identically.

**NEW** : ([#6936](https://github.com/defold/defold/pull/12288)) **‘Frustum culling for Particle FX components’** by Jhonnyg  
ParticleFX emitters are now subject to frustum culling, either via [render.draw](https://defold.com/ref/render-lua/index.html#render.draw:predicate-options) or by setting an active camera via [render.set\_camera](https://defold.com/ref/render-lua/index.html#render.set_camera:camera-options).

**NEW** : ([#7882](https://github.com/defold/defold/pull/12294)) **'Contain the html5 splash image to the canvas ’** by britzl  
The default behaviour of the HTML5 splash image has changed to be contained within the canvas area. It was already configured to be centered in the canvas and set to not repeat, and containing it will likely make sense in the majority of use cases. Should this not be the case it is possible to change by copying the css file from builtins.

**NEW** : ([#3789](https://github.com/defold/defold/pull/12310)) **‘Add more shader constants’** by Jhonnyg  
New shader constants have been added. These are inverse variants of the already existing matrix constants, and can be used to avoid manually inverting matrices in shaders.

```lua
CONSTANT_TYPE_WORLD_INV
CONSTANT_TYPE_VIEW_INV
CONSTANT_TYPE_PROJECTION_INV
CONSTANT_TYPE_VIEWPROJ_INV
CONSTANT_TYPE_WORLDVIEW_INV
CONSTANT_TYPE_WORLDVIEWPROJ
CONSTANT_TYPE_WORLDVIEWPROJ_INV

```

**NEW** : ([#12158](https://github.com/defold/defold/pull/12313)) **‘Allow changing zoom even when a camera component uses Fit or Cover mode’** by AGulev  
Now the orthographic zoom set by the user in the editor or via code is applied on top of the automatically calculated zoom, giving more control over the camera. Additionally, a new function `get_orthographic_auto_zoom()` and a read-only property `orthographic_auto_zoom` have been added. They return the automatically calculated zoom for Fit or Cover mode.

**NEW** : ([#11172](https://github.com/defold/defold/pull/12216)) **‘Improved support for Box2d scripting api’** by JCash  
We’ve improved the Box2D V2 scripting, adding support for mass data, fixtures and shape info.  
While the full set of features isn’t there just yet, this is a good step forward.

## Added for Box2D V2

### `b2d`

- `get_version`

### `b2d.body`

- `create_fixture`
- `get_transform`
- `get_mass_data`
- `set_mass_data`
- `reset_mass_data`
- `get_fixtures`
- `destroy_fixture`

### `b2d.fixture`

- `get_shape`
- `get_type`
- `is_sensor`
- `set_sensor`
- `get_density`
- `set_density`
- `get_friction`
- `set_friction`
- `get_restitution`
- `set_restitution`
- `get_filter_data`
- `set_filter_data`
- `refilter`
- `test_point`
- `get_aabb`

### `b2d.shape` constants

- `SHAPE_TYPE_CIRCLE`
- `SHAPE_TYPE_EDGE`
- `SHAPE_TYPE_POLYGON`
- `SHAPE_TYPE_BOX`
- `SHAPE_TYPE_CHAIN`
- `SHAPE_TYPE_GRID`

## Added for Box2d V3

### `b2d`

- `get_version`

### `b2d.body`

- `create_shape`
- `get_transform`
- `get_inertia`
- `get_mass_data`
- `set_mass_data`
- `reset_mass_data`
- `get_shapes`
- `destroy_shape`
- `is_sleeping_allowed`
- `set_sleeping_allowed`
- `get_world_center`
- `get_local_center`
- `get_force`

### `b2d.shape`

- `get_shape`
- `get_type`
- `is_sensor`
- `set_sensor`
- `get_density`
- `set_density`
- `get_friction`
- `set_friction`
- `get_restitution`
- `set_restitution`
- `get_filter_data`
- `set_filter_data`
- `refilter`
- `test_point`
- `get_aabb`

### `b2d.shape` constants

- `SHAPE_TYPE_CIRCLE`
- `SHAPE_TYPE_CAPSULE`
- `SHAPE_TYPE_EDGE`
- `SHAPE_TYPE_SEGMENT`
- `SHAPE_TYPE_POLYGON`
- `SHAPE_TYPE_BOX`

**NEW** : ([#3790,#10831](https://github.com/defold/defold/pull/12348)) **‘Add new graphics script functions’** by Jhonnyg  
New functions have been added to the `graphics` script module:

```lua
-- returns a list of all the available graphics adapters that the engine has been linked with
-- e.g { "directx12", "vulkan", "opengl" }
local adapters = graphics.get_engine_adapters()

-- returns a table of metadata about the graphics API the engine is currently running with
local info = graphics.get_adapter_info()

-- info table contents:
info = {
    family = "vulkan",
    version_major = 1,
    version_minor = 4,
    limits = {
        -- texture limits
        max_texture_size_2d = 16384,
        max_texture_size_3d = 2048,
        max_texture_size_cube = 16384,
        max_texture_array_layers = 2048,
        -- framebuffer limits
        max_framebuffer_width = 16384,
        max_framebuffer_height = 16384,
        max_color_attachments = 8,
        -- per-stage binding limits
        max_samplers_per_stage = 16,
        max_textures_per_stage = 32,
        max_vertex_attributes = 16,
        max_vertex_buffers = 16,
        -- compute limits
        max_compute_workgroup_size_x = 1024,
        max_compute_workgroup_size_y = 1024,
        max_compute_workgroup_size_z = 64,
        max_compute_workgroup_invocations = 1024,
        max_compute_shared_memory_size = 32768,
        -- buffer limits
        max_uniform_buffer_range = 65536,
        max_storage_buffer_range = 134217728,
    },
    features = {
        graphics.CONTEXT_FEATURE_MULTI_TARGET_RENDERING,
        graphics.CONTEXT_FEATURE_TEXTURE_ARRAY,
        graphics.CONTEXT_FEATURE_COMPUTE_SHADER,
        graphics.CONTEXT_FEATURE_STORAGE_BUFFER,
        graphics.CONTEXT_FEATURE_VSYNC,
        graphics.CONTEXT_FEATURE_INSTANCING,
        graphics.CONTEXT_FEATURE_3D_TEXTURES,
        graphics.CONTEXT_FEATURE_ASTC_ARRAY_TEXTURES,
        graphics.CONTEXT_FEATURE_BLEND_EQUATION_MIN_MAX,
        -- only supported features are included in the array
    },
    extensions = {
        "VK_IMG_FORMAT_PVRTC_EXTENSION_NAME",
        "VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME",
        -- driver-reported extension strings
    },
}

```

**NEW** : ([#9100](https://github.com/defold/defold/pull/9208)) **‘Material and compute script modules’** by Jhonnyg  
Two new script modules have been added to the engine: `material` and `compute`.

These modules expose runtime inspection and mutation APIs for material and compute resources, making it possible to read and update constants, samplers, textures, and material vertex attributes from Lua.

## Added Script Functions

### `material`

#### Inspect Material Resources

```lua
local attributes = material.get_vertex_attributes("/my_material.materialc")
-- attributes contain:
-- {
-- {
-- name = hash("attribute_name"),
-- value = vmath.vector4(...), -- or vmath.vector3, vmath.matrix4, number, or table
-- normalize = false,
-- data_type = graphics.DATA_TYPE_FLOAT,
-- coordinate_space = graphics.COORDINATE_SPACE_WORLD,
-- semantic_type = graphics.SEMANTIC_TYPE_COLOR
-- }
-- }

local samplers = material.get_samplers("/my_material.materialc")
-- samplers contain:
-- {
-- {
-- name = hash("sampler_name"),
-- type = graphics.TEXTURE_TYPE_2D,
-- u_wrap = graphics.TEXTURE_WRAP_REPEAT,
-- v_wrap = graphics.TEXTURE_WRAP_REPEAT,
-- min_filter = graphics.TEXTURE_FILTER_LINEAR,
-- mag_filter = graphics.TEXTURE_FILTER_LINEAR,
-- max_anisotropy = 1
-- }
-- }

local constants = material.get_constants("/my_material.materialc")
-- constants contain:
-- {
-- {
-- name = hash("constant_name"),
-- type = material.CONSTANT_TYPE_USER,
-- value = vmath.vector4(...) -- only for user constants; arrays return a table of values
-- }
-- }

local textures = material.get_textures("/my_material.materialc")
-- textures contain:
-- {
-- {
-- path = hash("/some_texture.texturec"), -- only when resource-backed
-- handle = hash(...),
-- width = 128,
-- height = 128,
-- depth = 1,
-- mipmaps = 1,
-- type = graphics.TEXTURE_TYPE_2D,
-- flags = graphics.TEXTURE_USAGE_FLAG_SAMPLE,
-- page_count = 1
-- }
-- }

```

#### Update Material Resources

```lua
material.set_vertex_attributes("/my_material.materialc", {
    attribute_name = {
        value = vmath.vector4(1, 0, 0, 1),
        data_type = graphics.DATA_TYPE_FLOAT,
        semantic_type = graphics.SEMANTIC_TYPE_COLOR,
        coordinate_space = graphics.COORDINATE_SPACE_WORLD,
        normalize = false
    },
    attribute_a = { value = vmath.vector4(1, 0, 0, 1) },
    attribute_b = { value = vmath.vector3(0, 1, 0) }
})

material.set_samplers("/my_material.materialc", {
    sampler_name = {
        min_filter = graphics.TEXTURE_FILTER_LINEAR,
        mag_filter = graphics.TEXTURE_FILTER_LINEAR,
        u_wrap = graphics.TEXTURE_WRAP_REPEAT,
        v_wrap = graphics.TEXTURE_WRAP_REPEAT,
        max_anisotropy = 1
    }
})

material.set_constants("/my_material.materialc", {
    constant_name = {
        value = vmath.vector4(1, 2, 3, 4),
        type = material.CONSTANT_TYPE_USER
    }
})

material.set_textures("/my_material.materialc", {
    sampler_name = "/some_texture.texturec"
})

```

### `compute`

Compute resources expose the same sampler, constant, and texture APIs as materials. They do not expose vertex attribute APIs.

#### Inspect Compute Resources

```lua
local samplers = compute.get_samplers("/my_compute.computec")
-- samplers contain the same shape of data as material.get_samplers()

local constants = compute.get_constants("/my_compute.computec")
-- constants contain the same shape of data as material.get_constants()

local textures = compute.get_textures("/my_compute.computec")
-- textures contain the same shape of data as material.get_textures()

```

#### Update Compute Resources

```lua
compute.set_samplers("/my_compute.computec", { ... })
-- set sampler data using the same table shape as material.set_samplers()

compute.set_constants("/my_compute.computec", { ... })
-- set constant data using the same table shape as material.set_constants()

compute.set_textures("/my_compute.computec", { ... })
-- set texture data using the same table shape as material.set_textures()

```

### `graphics`

The PR also exposes additional graphics constants used by these APIs, including vertex attribute data types, vertex semantic types, coordinate spaces, texture usage flags, texture types, texture formats, texture filters, texture wrap modes, and context feature flags.

**FIX** : ([#11015,#5274](https://github.com/defold/defold/pull/12316)) **‘Added support for reporting Sdl Guid for connected gamepads’** by JCash

### Gamepad identification

This is a first part of updating how our gamepads are identified.  
With this update, it’s easier to identify the type of controller that was connected.  
The gamepad connected event now also contains:

- `gamepad_guid` – the 32 character guid
- `gamepad_guid_info`:

| Field | Description |
| --- | --- |
| `vendor` | USB vendor id. E.g. Nintendo 0x057e, Sony 0x054c, or Microsoft 0x045e |
| `product` | USB product id |
| `bus` | How device is communicating. E.g.0x0003 for USB devices and 0x0005 for Bluetooth devices. |
| `crc` | SDL CRC16 signature, typically used when vendor and product ids are unavailable |
| `version` | The device or firmware version |

### New macOS/iOS gamepad backend

Also updated macOS/iOS support to use the `GameController` framework for better support of gamepads (e.g. Switch Pro controller)

Example project: [GitHub - defold/example-gamepad: An example to show how gamepads work · GitHub](https://github.com/defold/example-gamepad)

**FIX** : ([#12168](https://github.com/defold/defold/pull/12168)) **‘Added initial support for running tests on a connected Android device’** by JCash

**FIX** : ([#12203](https://github.com/defold/defold/pull/12203)) **‘Added support for passing command line arguments to an Android app’** by JCash  
This allows you to start an app via `adb` using extra command line arguments.  
It is good for debugging different scenarios without having to build different .apk files for each one.  
E.g. for testing different levels in isolation when doing a commit to your CI.

Note: It requires that the application is _debuggable_

Example of how to launch an app with a different boot collection

```bash
adb shell am start \
    -n com.doman.myapp/com.dynamo.android.DefoldActivity \
    -a android.intent.action.MAIN \
    -c android.intent.category.LAUNCHER \
    --esa com.dynamo.android.EXTRA_COMMAND_LINE_ARGUMENTS \
    "--config=bootstrap.main_collection=/main/levels/level1.collectionc"

```

**FIX** : ([#11470](https://github.com/defold/defold/pull/12147)) **‘Do not reset model pose when animation finishes’** by britzl  
This change makes sure a model animation stays in the end pose when the animation finishes.

**FIX** : ([#12280](https://github.com/defold/defold/pull/12280)) **‘Minimize final engine build sizes for macOS and Android builds’** by JCash  
By adding “dead stripping” flags to macOS/Android builds, we manage to make them a little bit smaller:

- Android:
  - New size: `4362208` bytes
  - -354kb
  - ~7.7% savings

- macOS:
  - New size: `6708016` bytes
  - -576kb
  - ~8% savings

**FIX** : ([#12259](https://github.com/defold/defold/pull/12289)) **‘Updated to latest SSL certificates’** by britzl  
Updated builtins/ca-certificates/cacert.pem

**FIX** : ([#3557](https://github.com/defold/defold/pull/12298)) **‘Add a LUA reference for constant buffers involved in a render.draw command’** by Jhonnyg  
Constant buffers created by render scripts are more robust in terms of garbage collection. Previously, a constant buffer could be deallocated between the `render.draw` call and its consumption by the renderer.

**FIX** : ([#12300](https://github.com/defold/defold/pull/12300)) **‘Renamed all Lua+LuaJIT symbols to avoid 3rd party symbol clashes’** by JCash  
This avoids the “duplicate symbol” error that might otherwise arise when building with your own version of Lua or Luau.

Note that you will still use the `lua.h`/`lauxlib.h` includes, and the regular function names and types. No changes to your existing extensions are required.

**FIX** : ([#11128,#12252](https://github.com/defold/defold/pull/12304)) **‘Fixed an issue where equal hashes could behave as if they were not equal in certain cases’** by AGulev  
Fixed an issue where, in certain cases, the Lua garbage collector could cause hashes with the same values to behave as unequal, leading to unexpected bugs that are difficult to debug.

**FIX** : ([#8957,#12111](https://github.com/defold/defold/pull/12256)) **‘Editor: Prevent editor from making invalid collision shapes’** by JosephFerano  
Collision shape improvements:

- Scrubbers in the properties UI no longer allow negative dimensions.
- Manually entered invalid values now cause the build to fail instead of crashing at runtime.
- Clearer error message when a shape’s computed area is too small due to tiny dimensions and/or scale.

**FIX** : ([#12318](https://github.com/defold/defold/pull/12318)) **‘Fixed image\_null library linker issues.’** by JCash  
This fixes an issue when users tried to remove the `image` library from their builds.

**FIX** : ([#12320](https://github.com/defold/defold/pull/12320)) **‘Added endian.h/endian.hpp to dmSdk’** by JCash

**FIX** : ([#11387](https://github.com/defold/defold/pull/12325)) **‘Symbols for both vanilla `wasm` and `pthread.wasm` bundles are now available’** by AGulev  
Fixed an issue where symbols for `wasm` and `pthread.wasm` vanilla builds were not uploaded as part of the engine artifacts during engine builds

**FIX** : ([#12327](https://github.com/defold/defold/pull/12327)) **‘Ensure `UpdateTransforms` runs only after actual transform changes’** by AGulev  
Improve game object transform dirty tracking.

Previously script/message updates conservatively marked collection transforms dirty every frame. This changes transform invalidation to happen only when game object transform state actually changes, including direct setters, property writes, animations, parenting changes, bone transforms, and delete/reparent paths.

**FIX** : ([#12338](https://github.com/defold/defold/pull/12338)) **‘Fix particlefx crash when playing effects with emitter overrides’** by AGulev  
Fixes a crash that could happen when playing particle effects that use runtime emitter overrides for material, image, or animation. Games using overlapping overridden particlefx instances should now continue updating safely.

**FIX** : ([#12362](https://github.com/defold/defold/pull/12381)) **‘Fix sprite component crash’** by ekharkunov  
Fix crash when disabled sprite components enabled in `late_update` script function

**FIX** : ([#12261,#11246,#11024,#7738,#11308](https://github.com/defold/defold/pull/12386)) **‘Added fix for scaling dynamic physics objects in Bullet3D’** by JCash  
The fix is related to correctly keeping the local scaling intact. E.g. for the capsule shape.  
Thanks to @a-daniel for the original contribution!

**FIX** : ([#12412](https://github.com/defold/defold/pull/12415)) **‘Fix `gui.set_screen_position()` for nodes with scale’** by AGulev  
Fixed an issue where `gui.set_screen_position()` and `gui.screen_to_local()` calculated incorrect positions for nodes with scaled parents.

**FIX** : ([#11197](https://github.com/defold/defold/pull/12394)) **‘Fix Base64Decode to handle input without padding’** by singhvishalkr  
When decoding base64 strings that lack padding characters, `dmCrypt::Base64Decode` returns nil. This happens because mbedTLS’s base64 decoder strictly requires padding, but many systems (particularly JWT implementations) omit padding per RFC 4648 section 3.2 which states that padding is not always required.

This issue can be observed while using the crypt extension with Nakama’s JWT tokens. The server sends tokens without padding, and the decode fails silently.

The fix adds the missing `=` characters before passing the input to mbedTLS when the input length is not a multiple of 4. In addition, a test cases covering strings with and without padding was added to prevent regression.

The change should not affect consoles since it only modifies the mbedTLS path.

**FIX** : ([#9446](https://github.com/defold/defold/pull/12424)) **‘Add Lua stack index arguments to dmSDK functions LuaToJson and JsonToLua’** by britzl  
It is now possible to provide a Lua stack index to the dmSDK function `LuaToJson()` to specify which stack value to encode, as well as the index at which the option table is located. Previously the default was to always encode the value at stack index 1 and to read the options from index 2, which required workarounds for most use-cases. Also `JsonToLua()` now has a version which takes the stack index of the options table.

```cpp
int JsonToLua(lua_State* L, const char* json, size_t json_len, int options_index);
int LuaToJson(lua_State* L, int index, int options_index, char** json, size_t* json_len);

```

**FIX** : ([#12437](https://github.com/defold/defold/pull/12459)) **‘Fix runtime font job teardown crash’** by AGulev  
Prevents pending dynamic font glyph jobs from using freed font job data during resource reload or destruction. Adds a regression test for canceling pending dynamic font jobs.

**FIX** : ([#12409](https://github.com/defold/defold/pull/12448)) **‘Fix HTML5 profiler memory sampling slowdown’** by AGulev  
HTML5 debug builds now avoid expensive detailed memory sampling in automatic profiler output by default. The existing `profiler.get_memory_usage()` API still returns detailed memory usage, and a new `profiler.track_detailed_memory` project setting can opt automatic profiler memory reporting back into detailed sampling.

**FIX** : ([#12449](https://github.com/defold/defold/pull/12449)) **‘Update msvc to 2026’** by ekharkunov  
Current versions:

- Microsoft Visual Studio 2026 - 14.51.36231
- WinSDK - 10.0.28000.0

**FIX** : ([#12500](https://github.com/defold/defold/pull/12500)) **‘Updated Box2d v3 api with chain an other missing functions’** by JCash  
Adds Box2D v3 chain support, typed world/shape handles, and a new b2d.world Lua module.

Box2D v3 added/changed APIs:

- b2d.body.create\_chain
- b2d.body.is\_valid
- b2d.body.get\_name
- b2d.body.set\_name
- b2d.body.set\_target\_transform
- b2d.body.apply\_linear\_impulse\_to\_center
- b2d.body.get\_sleep\_threshold
- b2d.body.set\_sleep\_threshold
- b2d.body.enable\_contact\_events
- b2d.body.enable\_hit\_events
- b2d.body.get\_contact\_data
- b2d.body.compute\_aabb
- b2d.body.create\_shape changed to expose material data
- b2d.body.get\_shapes changed to expose shape\_id and material data
- b2d.chain.destroy
- b2d.chain.is\_valid
- b2d.chain.get\_world
- b2d.chain.get\_segment\_count
- b2d.chain.get\_segments
- b2d.chain.get\_geometry
- b2d.chain.from\_shape
- b2d.chain.get\_friction
- b2d.chain.set\_friction
- b2d.chain.get\_restitution
- b2d.chain.set\_restitution
- b2d.chain.get\_material
- b2d.chain.set\_material
- b2d.shape.SHAPE\_TYPE\_SEGMENT
- b2d.shape.get\_shape changed to report chain segments as SHAPE\_TYPE\_SEGMENT
- b2d.shape.is\_valid
- b2d.shape.get\_body
- b2d.shape.get\_world
- b2d.shape.get\_material
- b2d.shape.set\_material
- b2d.shape.enable\_sensor\_events
- b2d.shape.are\_sensor\_events\_enabled
- b2d.shape.enable\_contact\_events
- b2d.shape.are\_contact\_events\_enabled
- b2d.shape.enable\_pre\_solve\_events
- b2d.shape.are\_pre\_solve\_events\_enabled
- b2d.shape.enable\_hit\_events
- b2d.shape.are\_hit\_events\_enabled
- b2d.shape.ray\_cast
- b2d.shape.get\_contact\_capacity
- b2d.shape.get\_contact\_data
- b2d.shape.get\_sensor\_capacity
- b2d.shape.get\_sensor\_overlaps
- b2d.shape.get\_mass\_data
- b2d.shape.get\_closest\_point
- b2d.joint.is\_valid
- b2d.joint.get\_world
- b2d.world.is\_valid
- b2d.world.is\_locked
- b2d.world.get\_gravity
- b2d.world.set\_gravity
- b2d.world.enable\_sleeping
- b2d.world.is\_sleeping\_enabled
- b2d.world.enable\_continuous
- b2d.world.is\_continuous\_enabled
- b2d.world.set\_restitution\_threshold
- b2d.world.get\_restitution\_threshold
- b2d.world.set\_hit\_event\_threshold
- b2d.world.get\_hit\_event\_threshold
- b2d.world.set\_maximum\_linear\_speed
- b2d.world.get\_maximum\_linear\_speed
- b2d.world.enable\_warm\_starting
- b2d.world.is\_warm\_starting\_enabled
- b2d.world.get\_awake\_body\_count
- b2d.world.set\_contact\_tuning
- b2d.world.set\_joint\_tuning
- b2d.world.get\_profile
- b2d.world.get\_counters
- b2d.world.explode
- b2d.world.rebuild\_static\_tree
- b2d.world.enable\_speculative
- b2d.world.overlap\_aabb
- b2d.world.overlap\_shape
- b2d.world.cast\_ray
- b2d.world.cast\_ray\_closest
- b2d.world.cast\_shape
- b2d.world.cast\_mover
- b2d.world.collide\_mover

Box2D v2 added APIs:

- b2d.world.overlap\_aabb
- b2d.world.overlap\_shape
- b2d.world.cast\_ray
- b2d.world.cast\_ray\_closest
- b2d.world.cast\_shape

See current example: [GitHub - JCash/example-box2d: An example how to use Lua scripting with Box2d in Defold · GitHub](https://github.com/JCash/example-box2d)

## Editor

**BREAKING CHANGE** : ([#11749](https://github.com/defold/defold/pull/12276)) **‘Removed support for Collada (`*.dae`)’** by AGulev  
⚠ Collada (`*.dae`) support has been fully removed from the engine. If you are using it in your project, please convert your models to `*.gltf`/`*.glb`

**BREAKING CHANGE** : ([#12414](https://github.com/defold/defold/pull/12414)) **‘Fixes model transform inconsistencies between the editor and runtime for imported glTF/glb models’** by Jhonnyg

#### Model re-centering during import ⚠ BREAKING CHANGE ⚠

We have removed the automatic model re-centering step from the Bob model import pipeline so imported glTF model positions are not altered. It also adjusts model transform handling so skinned/bone-parented meshes preserve local transforms while rigid meshes keep their flattened world placement. Both of these changes takes Defold closer to a “what you see is what you get” approach for 3D content.

The re-centering means that If your 3D content suddenly changes positions / orientation, this means that the content needs to be modified in an authoring package (e.g Blender) and then re-exported to .glb again. Most projects should be unaffected by this change, but there _is_ a change in behaviour when importing models now in order to fix other incorrectly placed objects.

#### Editor vs runtime preview inconsitency

The editor preview now mirrors the runtime transform behaviour more closely: models with assigned skeletons use skeleton-relative transforms, while models without skeleton resources use their local model transforms, with bounds updated to match the selected transform path.

#### Runtime GPU skinning fixes

Runtime rig/model handling was also adjusted so parentless root bones keep the inherited ancestor transform from the imported skeleton, and skinning matrices are only applied when the model is actually animating.

**NEW** : ([#12157,#10963,#10853](https://github.com/defold/defold/pull/12174)) **‘Scene view toolbar button popup enhancements’** by JosephFerano  
The user experience and feature set were unified between the current three scene view button popups; grid, camera, and scene visibility.

- Shortcuts can now be assigned to and their binding displayed for camera toggles, while reacting live.
- Sliders now have a text field showing their current value
- Better color picker for the grid
- Scene Visibility now has focus traversal (tab or shift+tab) and is now localized
- Miscellaneous bug fixes, styling and UX improvements

[https://github-production-user-asset-6210df.s3.amazonaws.com/2642263/598776335-817234c7-1193-464d-af85-f592e7ac2bda.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20260629%2Fus-east-1%2Fs3%2Faws4\_request&X-Amz-Date=20260629T090232Z&X-Amz-Expires=300&X-Amz-Signature=1c5a3da72280f69e82fce14e3bbf4b71235d10393baa63e44bde21b2264aee77&X-Amz-SignedHeaders=host&response-content-type=video%2Fmp4](https://github-production-user-asset-6210df.s3.amazonaws.com/2642263/598776335-817234c7-1193-464d-af85-f592e7ac2bda.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20260629%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260629T090232Z&X-Amz-Expires=300&X-Amz-Signature=1c5a3da72280f69e82fce14e3bbf4b71235d10393baa63e44bde21b2264aee77&X-Amz-SignedHeaders=host&response-content-type=video%2Fmp4)

**NEW** : ([#12231](https://github.com/defold/defold/pull/12231)) **‘Editor camera overlay in scene view’** by Jhonnyg  
The scene preview window now has an overlay in the bottom of the corner that shows the scene from the currently selected camera component.

![Screen Recording 2026-04-16 at 14 27 14 (1)](https://github.com/user-attachments/assets/25b6efda-aa23-478d-b10f-accc4b16dba7)

**NEW** : ([#11989](https://github.com/defold/defold/pull/12257)) **‘Parallelize directory traversal when syncing resources’** by vlaaad  
This change improves open load time in big projects by 5% (1m12s → 1m08s)

**NEW** : ([#11995](https://github.com/defold/defold/pull/12285)) **‘Add `/eval` endpoint to editor server’** by vlaaad  
Now, the editor exposes a local, authenticated `/eval` endpoint for evaluating Lua code in the editor Lua runtime.

Simplest example:

```sh
curl \
  "http://localhost:$(cat .internal/editor.port)/eval" \
  -H "Authorization: Bearer $(cat .internal/editor.token)" \
  --data "print('Hello from Lua') return 1, 'two', true"
# Hello from Lua
# => 1
# => two
# => true

```

Because `/eval` can run commands through `editor.execute`, requests must include the token from `.internal/editor.token`. This limits access to clients that also have filesystem access.

```sh
curl \
  "http://localhost:$(cat .internal/editor.port)/eval" \
  -H "Authorization: Bearer $(cat .internal/editor.token)" \
  --data "editor.execute('git', 'status', '--short', { reload_resources = false })"
# M game.project

```

Security is documented in `openapi.json`, so the only URL your coding agent needs is still `http://localhost:$(cat .internal/editor.port)/openapi.json`. For example:

```md
› use /eval endpoint and make a short report about the available functionality
• Thinking...
• Short Report

  `/eval` evaluates raw Lua in the Defold editor extension runtime.

  Available runtime functionality includes:

  - Standard Lua globals: `assert`, `pcall`, `load`, `require`, `io`, `os`, 
    `math`, `string`, `table`, `coroutine`, etc.
  - Defold editor API via `editor`, including:
      - resource inspection: `editor.resource_attributes`,
        `editor.properties`, `editor.get`
      - resource/project mutation APIs: `editor.transact`, 
        `editor.tx.set`/`add`/`remove`/`reorder`/`reset`/`clear`, `editor.save`
      - filesystem helpers: `editor.create_directory`, `editor.delete_directory`, 
       `editor.create_resources`
      - external command execution: `editor.execute`
      - browser/file helpers: `editor.browse`, `editor.open_external_file`,
        `editor.external_file_attributes`
      - UI construction/dialog APIs under `editor.ui`
      - preferences via `editor.prefs.get`/`set`/`is_set`
  - HTTP APIs via `http`, including `http.request` and `http.server.route`/`response`
  - Utility modules: `json.encode`/`decode`, `zip.pack`/`unpack`, 
    `zlib.deflate`/`inflate`, `localization`.

```

**NEW** : ([#11495](https://github.com/defold/defold/pull/12315)) **‘Images supported by the engine now open directly in the editor’** by AGulev  
The Editor now opens `jpg`, `jpeg`, and `png` images for preview without using external applications.

**NEW** : ([#12337](https://github.com/defold/defold/pull/12368)) **‘Improve /command/clean-build doc and behavior’** by vlaaad

**NEW** : ([#12439](https://github.com/defold/defold/pull/12445)) **‘Editor: Skip disabled menu items in context menus’** by JosephFerano

**FIX** : ([#12234](https://github.com/defold/defold/pull/12238)) **‘Improve the Lua parser to make it less error-prone’** by AGulev  
Fix an exception that can occur in the editor while typing `go.property()`

**FIX** : ([#11695](https://github.com/defold/defold/pull/12237)) **‘Ensure the Editor loads only bundled libraries, ignoring those installed on the system’** by AGulev  
Fix an issue where the editor could load libraries from `/Library/Java/Extensions` instead of the bundled ones, which could break loading or otherwise affect the editor.

**FIX** : ([#12224](https://github.com/defold/defold/pull/12250)) **‘Editor: Fix manual-size-mode sprite not displaying’** by JosephFerano  
Fixed an edge case where if the the size mode was set to manual for a sprite before having selected a default animation, the size wouldn’t get serialized and then the sprite would not render at runtime.

**FIX** : ([#12253](https://github.com/defold/defold/pull/12253)) **‘Unify deps download between editor and bob’** by vlaaad  
Now, both editor and command-line bob use the same parallelized code to fetch dependencies. Since the editor now also parallelizes deps download, this change comes with an open project time improvement. If a project uses high-speed CDN for serving deps, the perf improvement, as measured on an example large project, is 5% (1m14s-\>1m10s). For typical, smaller projects that use GitHub for deps download, the improvement can reach 28%, since most of the time is spent on deps checking when opening projects.

**FIX** : ([#10510](https://github.com/defold/defold/pull/12299)) **‘Show error notification when custom editor could not be opened’** by vlaaad

**FIX** : ([#8669](https://github.com/defold/defold/pull/12323)) **‘Ensure that builds from the editor include the `DM_DEBUG` define’** by AGulev  
Fixed an issue where the `DM_DEBUG` define did not work in debug builds from the editor.

**FIX** : ([#12365](https://github.com/defold/defold/pull/12370)) **‘Resolve game.project resource defaults before rendering the form’** by vlaaad  
Some native extensions add project settings with default file references. Opening game.project could crash when those defaults were shown in the editor. These defaults are now handled correctly.

**FIX** : ([#12359](https://github.com/defold/defold/pull/12359)) **‘Offload font map generation to a later build phase’** by vlaaad  
On large projects with many fonts (that don’t use runtime generation), build times improved by 7-15%.

**FIX** : ([#12374](https://github.com/defold/defold/pull/12374)) **‘Improve UI responsiveness during builds’** by vlaaad  
This changes improves the build times by around 4% (on an example big project, a test run of clean, warm and hot builds went from 12:27 to 11:59).

**FIX** : ([#12156](https://github.com/defold/defold/pull/12372)) **‘Editor: Fix macOS dialog windows showing in-window menu bars’** by JosephFerano  
The menu bars no longer show up. Also the native system menu on macOS better reflects what options are available.

**FIX** : ([#12423](https://github.com/defold/defold/pull/12430)) **‘Fix assertion error when deleting last particle emitter’** by JosephFerano

**FIX** : ([#12361,#12360,#12226](https://github.com/defold/defold/pull/12380)) **‘Editor camera fov slider and bug fixes’** by JosephFerano  
Several fixes and improvements related to the new Scene View Free Camera

- Added new FOV slider to the Scene Toolbar Camera Popup
- Fixed 2D button not turning off when starting the Free Camera mode
- Block zooming while holding middle-mouse button to avoid janky behavior
- Fixed incorrect mouse cursor position when exiting free camera mode
- Fixed camera matrix inversion related exception
- Fixed cursor bug with free mode command on macOS

![image](https://github.com/user-attachments/assets/5aaacbaa-7294-4c25-848a-af74a4b612d5)

## Other

**FIX** : ([extension-websocket#65](https://github.com/defold/defold/pull/12418)) **‘Fix for handling when macOS/iOS blocks while creating a SSL socket’** by JCash  
This fixes an issue when SSL sockets for macOS/iOS would stall for a very long time.

---

<div class="post-metadata">

**Author:** ![Mathias\_Westerdahl](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/mathias_westerdahl/32/228_2.png) [@Mathias\_Westerdahl](https://forum.defold.com/u/Mathias_Westerdahl)\
**Post date:** [June 29, 2026, 9:34am UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/2 "2026-06-29T09:34:55Z")

</div>



---

<div class="post-metadata">

**Author:** ![Asatte](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/asatte/32/39093_2.png) [@Asatte](https://forum.defold.com/u/Asatte)\
**Post date:** [June 29, 2026, 9:47am UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/3 "2026-06-29T09:47:35Z")

</div>

Thank you for this major update!! It really is great to see engine is getting better 3D support and also being optimized by dropping support for outdated features.  
Also thank you for the QoL improvements on the editor as well 🙂

---

<div class="post-metadata">

**Author:** ![gamedevshrimp](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/gamedevshrimp/32/44402_2.png) [@gamedevshrimp](https://forum.defold.com/u/gamedevshrimp)\
**Post date:** [June 29, 2026, 10:01am UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/4 "2026-06-29T10:01:49Z")

</div>

Hello! Can you please help me solve the errors I’m getting after the update?

I’ve got errors with the Poki extension:

> <https://gist.github.com/gamedevshrimp/b66101892e13e749912f2da8e32e95d1>

And also with the Spine extension:

> <https://gist.github.com/gamedevshrimp/fa2190ff52cc4b8fdb495e6a433dd92e>

I’ve tried reinstalling the extensions, but it doesn’t help.

---

<div class="post-metadata">

**Author:** ![JuLongZhiLu](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/julongzhilu/32/42720_2.png) [@JuLongZhiLu](https://forum.defold.com/u/JuLongZhiLu)\
**Post date:** [June 29, 2026, 10:18am UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/5 "2026-06-29T10:18:32Z")

</div>

Congratulations! 🥳

---

<div class="post-metadata">

**Author:** ![ekharkunov](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/ekharkunov/32/22946_2.png) [@ekharkunov](https://forum.defold.com/u/ekharkunov)\
**Post date:** [June 29, 2026, 10:47am UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/6 "2026-06-29T10:47:17Z")

</div>

You need Spine extension at least version 4.6.0 ([Releases · defold/extension-spine · GitHub](https://github.com/defold/extension-spine/releases))

---

<div class="post-metadata">

**Author:** ![gamedevshrimp](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/gamedevshrimp/32/44402_2.png) [@gamedevshrimp](https://forum.defold.com/u/gamedevshrimp)\
**Post date:** [June 29, 2026, 11:34am UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/7 "2026-06-29T11:34:49Z")

</div>

thank you!

---

<div class="post-metadata">

**Author:** ![Pawel](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/pawel/32/24623_2.png) [@Pawel](https://forum.defold.com/u/Pawel)\
**Post date:** [June 29, 2026, 11:46am UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/8 "2026-06-29T11:46:08Z")

</div>

As an addition to the technical Release Notes, we also published an article about the release with some information about what the features might be useful for and some examples 😉

> **[Defold release 1.13.0](https://defold.com/2026/06/22/Defold-1-13-0/)**
>
> Defold 1.13.0 has been released - morph targets, expanded Box2D APIs, Android Vulkan by default, new material and compute modules, editor automation, and important cle...

Let us know, if it’s a good addition to the RN 😊

This release also closes half year of the work on Defold and we will share soon a mid-year summary 😊

---

<div class="post-metadata">

**Author:** ![Xev](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/xev/32/41556_2.png) [@Xev](https://forum.defold.com/u/Xev)\
**Post date:** [June 29, 2026, 12:35pm UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/9 "2026-06-29T12:35:31Z")

</div>

@Pawel Awesome. Some heads up though.

1. There’s a broken image link for the morph targets.
2. All of the videos stretch outside of the screen on my phone.

 ![Screenshot_20260629-143315](https://forum-defold-uploads.b-cdn.net/original/3X/2/8/28b4e132a207bd1812ddc4baea2716d869245d18.jpeg)

---

<div class="post-metadata">

**Author:** ![Pawel](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/pawel/32/24623_2.png) [@Pawel](https://forum.defold.com/u/Pawel)\
**Post date:** [June 29, 2026, 12:54pm UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/10 "2026-06-29T12:54:57Z")

</div>

Thanks! Yes, the broken image link is removed now and videos had constant size, I’ll fix it in a couple of minutes!

---

<div class="post-metadata">

**Author:** ![Xev](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/xev/32/41556_2.png) [@Xev](https://forum.defold.com/u/Xev)\
**Post date:** [June 29, 2026, 1:08pm UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/11 "2026-06-29T13:08:01Z")

</div>

Thanks for the quick fix! I’m gonna read through everything once I’m done with work. I really appreciate all of the time spent on summarizing the release notes in a prettier format.

Btw, I noticed another broken image for “Material and compute resources”. Unsure if you’ve already found that one. 😊

---

<div class="post-metadata">

**Author:** ![Pawel](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/pawel/32/24623_2.png) [@Pawel](https://forum.defold.com/u/Pawel)\
**Post date:** [June 29, 2026, 2:03pm UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/12 "2026-06-29T14:03:04Z")

</div>

Ok, should be fixed now, works on my phone 😉

---

<div class="post-metadata">

**Author:** ![Alex\_X](https://forum-defold.b-cdn.net/letter_avatar_proxy/v4/letter/a/ecae2f/32.png) [@Alex\_X](https://forum.defold.com/u/Alex_X)\
**Post date:** [June 30, 2026, 9:58am UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/13 "2026-06-30T09:58:13Z")

</div>

it seems the final build size for android apk become much bigger.a default empty project release build apk from 3.5M to 6.8M.

---

<div class="post-metadata">

**Author:** ![AGulev](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/agulev/32/4541_2.png) [@AGulev](https://forum.defold.com/u/AGulev)\
**Post date:** [June 30, 2026, 10:05am UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/14 "2026-06-30T10:05:53Z")

</div>

> [@Android bundle size question](https://forum.defold.com/t/android-bundle-size-question/81990/2):
>
> or build AAB, since APK is deprecated way of building android bundle.

---

<div class="post-metadata">

**Author:** ![Alex\_X](https://forum-defold.b-cdn.net/letter_avatar_proxy/v4/letter/a/ecae2f/32.png) [@Alex\_X](https://forum.defold.com/u/Alex_X)\
**Post date:** [June 30, 2026, 3:03pm UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/15 "2026-06-30T15:03:36Z")

</div>

The size increase is compared between the last 1.12.4 and the 1.13.0.

---

<div class="post-metadata">

**Author:** ![mattpwest](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/mattpwest/32/35933_2.png) [@mattpwest](https://forum.defold.com/u/mattpwest)\
**Post date:** [July 2, 2026, 9:45am UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/16 "2026-07-02T09:45:22Z")

</div>

Congratulations on the new release! 🥳

My Docker images for CI builds have been updated: [here](https://hub.docker.com/r/mattpwest/defold/tags).

The exceptions I saw in bob output with the last release seem to be gone now, not sure if a coincidence or if if someone looked into it - if the latter, thank you! My update went much smoother this time.

---

<div class="post-metadata">

**Author:** ![Andrew\_Fowler](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/andrew_fowler/32/43431_2.png) [@Andrew\_Fowler](https://forum.defold.com/u/Andrew_Fowler)\
**Post date:** [July 6, 2026, 1:17am UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/17 "2026-07-06T01:17:04Z")

</div>

For the b2d documentation, could this be updated to indicate which functions are exclusive to v3, which are are legacy only and which can be used by both?

---

<div class="post-metadata">

**Author:** ![AGulev](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/agulev/32/4541_2.png) [@AGulev](https://forum.defold.com/u/AGulev)\
**Post date:** [July 7, 2026, 11:09am UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/18 "2026-07-07T11:09:15Z")

</div>

Version 1.13.0 has been patched to fix this bug: [Android crash on startup vkquality class not found · Issue #12688 · defold/defold · GitHub](https://github.com/defold/defold/issues/12688)

The update will be available in approximately 40 minutes.

---

<div class="post-metadata">

**Author:** ![AGulev](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/agulev/32/4541_2.png) [@AGulev](https://forum.defold.com/u/AGulev)\
**Post date:** [July 14, 2026, 2:52pm UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/19 "2026-07-14T14:52:13Z")

</div>

> [@Defold 1.13.0 BETA](https://forum.defold.com/t/defold-1-13-0-beta/82850/1):
>
> #### Model re-centering during import ⚠ BREAKING CHANGE ⚠
> 
> We have removed the automatic model re-centering step from the Bob model import pipeline so imported glTF model positions are not altered. It also adjusts model transform handling so skinned/bone-parented meshes preserve local transforms while rigid meshes keep their flattened world placement. Both of these changes takes Defold closer to a “what you see is what you get” approach for 3D content.
> 
> The re-centering means that If your 3D content suddenly changes positions / orientation, this means that the content needs to be modified in an authoring package (e.g Blender) and then re-exported to .glb again. Most projects should be unaffected by this change, but there _is_ a change in behaviour when importing models now in order to fix other incorrectly placed objects.
> 
> ####

[migrate\_defold\_113\_model\_transforms.py.zip](https://forum.defold.com/uploads/short-url/mr4emMKOeFOMfKQcmsqXRjKdm3C.zip) (13.5 KB)

this small script should help to recenter and re-export models  
UPD1: updated with a few fixes

---

<div class="post-metadata">

**Author:** ![BunBunBun](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/bunbunbun/32/25691_2.png) [@BunBunBun](https://forum.defold.com/u/BunBunBun)\
**Post date:** [July 23, 2026, 7:38am UTC](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980/20 "2026-07-23T07:38:56Z")

</div>

hi @britzl I have a question about your `defold-orthographic` library and Defold 1.13.0.

After the untyped `sys.get_config()` API was removed, the orthographic render script started crashing on startup with the following error:  
`orthographic.render_script: attempt to call field 'get_config' (a nil value).`

I see that this is already fixed on master (commit “Removed deprecated API usage”), but no tag contains it yet - the latest release 3.6.2 predates the fix. As a result, installing via the tagged dependency URL breaks on 1.13.0.

Could you please publish a new tag/release including that commit? Thanks for the library!

[Next page](https://forum.defold.com/t/defold-1-13-0-has-been-released/82980.md?page=2)
