Defold 1.3.6 BETA

Defold 1.3.6 BETA

The latest beta is now released, and we invite those interested in beta testing the new features in the editor and engine to join now.

The beta period will be 2 weeks and the next planned stable release is two weeks from now.

Please report any engine issues in this thread or in issues using Help → Report Issue

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 Releases · defold/defold · GitHub

Set your build server to https://build-stage.defold.com

Summary

Engine

  • NEW: (#3614) Add matrix user constant type
  • NEW: (#6529) Add array support for constant buffers in render scripts
  • NEW: (#6155) Add anisotropic filtering support for material samplers
  • NEW: (#6532) Add more descriptive error message to sys.save
  • NEW: (#6676) Increase table serialization limits
  • NEW: (#6872) Change profiler layout for representation in runtime
  • NEW: (#6828) Center view on camera
  • FIX: (#6945) Added raw gamepad input to gui scripts
  • FIX: (#6224) Added particle initial stretch values to emitter template
  • FIX: (#6818) Luajit updated LuaJIT to version 633f265
  • FIX: (#6852) Updated Remotery 1.2.1
  • FIX: (#6883) Fix rare crash in profiler
  • FIX: (#6898) Byte code errors in multi-architecture builds run on a 32-bit device
  • FIX: (#6613) Fix issue when backspace holding doesn’t work on iOS
  • FIX: (#6764) Make it possible to avoid filling device_ident value
  • FIX: (#6531) Don’t automatically enable all extensions on WebGL
  • FIX: (#6858) Prevent situations when app hangs in infinite loop instead of crash on MacOS
  • FIX: (#6597) Fix crash in some cases when count of labels more than label.max_count
  • FIX: (#3400) Update iconexe and defold icon with a bigger size
  • FIX: (#6847) Use --verify-graphics-calls=false by default for HTML5
  • FIX: (#5727) Fix issue with force using of landscape mode in iOS games on macOS with M1

Editor

  • NEW: (#3981) Expose sprite scaling in the editor
  • NEW: (#6786) Use label as tooltip text for unknown settings
  • FIX: (#6885) Fix Lua breakpoints not hitting unless bytecode is embedded
  • FIX: (#6399) Retain specific expensive outputs in editor cache
  • FIX: (#6806) IDE: Unsorted order of assets
  • FIX: (#6796) Profiler is sometimes unresponsive
  • FIX: (#6388) Skip engine build when running on a remote target
  • FIX: (#6678) Fix shift+click selection in select list dialog
  • FIX: (#6925) Show options when there are multiple candidates for a partial console path

Details

Engine

NEW: (#3614) Add matrix user constant type

It is now possible to set matrix constants in materials via go.set or render.constant buffers:

local buffer = render.constant_buffer()
buffer.ny_matrix = vmath.matrix4()

NEW: (#6529) Add array support for constant buffers in render scripts

Constant buffers supports setting array values by using tables:

local buffer = render.constant_buffer()
-- in-line
buffer.my_array = { vmath.vector4(), vmath.vector4() }
-- as elements
buffer.my_array = {}
buffer.my_array[1] = vmath.vector4()

NEW: (#6155) Add anisotropic filtering support for material samplers

Material sampler slots now have a new field called max_anisotropy that you can use to set the level of anisotropic filtering for specific shader samplets. The max value is determined by the device driver and will be capped to the max value if a higher value has been provided.

NEW: (#6532) Add more descriptive error message to sys.save
If a sys.save() operation fails the error message will now contain additional information about the reason.

This PR adds a new function in dstrings.h (dmStrError) that translates and copies errno values to a buffer for printing human readable error messages.

NEW: (#6676) Increase table serialization limits
It is now possible to serialize Lua tables with more than 65535 keys (new max is 2^32). The previous maximum size of 512kb for the serialized table has been removed and dynamic memory allocation will be used for tables larger than 512kb.

Note: The save file format has changed which means that a file saved with 1.3.6 is not compatible with older versions of Defold.

NEW: (#6872) Change profiler layout for representation in runtime
Fix issue when many property values rendered out of screen in the runtime profiler.

NEW: (#6828) Center view on camera
Added an option on the camera component to toggle from the default perspective projection to an orthographic projection. When a camera component is in orthographic projection mode it will automatically center on the position of the game object the camera belongs to.

A new orthographic_zoom property has also been added to the camera component to change the zoom level when using the orthographic projection. This can be used either as a fixed zoom or from a script to set a variable zoom level based on window dimensions.

These changes are compatible with the existing default render script. To use both the view and projection from the camera the developer must send a use_camera_projection message to the render script. The camera and render documentation need to be changed to reflect these changes.

FIX: (#6945) Added raw gamepad input to gui scripts
Raw gamepad events were previously only sent to script components. This fix adds raw gamepad input events to gui scripts as well.

FIX: (#6224) Added particle initial stretch values to emitter template
This fix adds missing values to the particle emitter template used by the editor when adding an emitter to a particlefx.

FIX: (#6818) Luajit updated LuaJIT to version 633f265

FIX: (#6925) Show options when there are multiple candidates for a partial console path
When multiple project resources match a partial file path in the Console, we now present a choice of resources to open.

FIX: (#6871) Updated Remotery 1.2.1
This change updates the Remotery profiler to version 1.2.1. The new version contains bug fixes and performance improvements.

FIX: (#6883) Fix rare crash in profiler
Make sure that profiler doesn’t crash if Lua doesn’t provide information about function source.

FIX: (#6898) Byte code errors in multi-architecture builds run on a 32-bit device
The 32- and 64-bit byte code delta used to patch 64-bit byte code for 32-bit devices was sometime calculated incorrectly such that the written byte code became invalid. This could be observed when bundling for both 32-bit and 64-bit and running the build on a 32-bit device (Android)

FIX: (#6613) Fix issue when backspace holding doesn’t work on iOS
This fix makes it possible to remove multiple symbols if a user holds backspace button instead of a single tap - a single character removing.

FIX: (#6764) Make it possible to avoid filling device_ident value
Fixed issue when GetSystemInfo() (the method used internally and for sys.get_sys_info()) by default requests device_ident . On Android this is android_id - a value secured by OS. If an application requests this then Data Safety Section needs to be filled even if app doesn’t use internet connection and any IDs at all.
If you don’t need device_ident value just call sys.get_sys_info() function with {ignore_secure = true} parameter: sys.get_sys_info({ignore_secure = true})

FIX: (#6531) Don’t automatically enable all extensions on WebGL

FIX: (#6858) Prevent situations when app hangs in infinite loop instead of crash on MacOS
Fixes a rare situations when application hangs in infinite loop instead of crash on MacOS.

FIX: (#6597) Fix crash in some cases when count of labels more than label.max_count
Fixes crash that reproduces with the following conditions:

  • objects spawned by a collection factory;
  • objects has a parent-child hierarchy;
  • the parent object has a component that can’t be spawned because of max components limit.

FIX: (#3400) Update iconexe and defold icon with a bigger size
The problem was that the IconExe class doesn’t add any icons, it just replaces the ones that exist. Our default icon was previously 128x128 as max resolution, this PR replaced it with a log thats 256x256.

This PR also updates our IconExe.java to the newest version from latest SWT master.

FIX: (#6847) Use --verify-graphics-calls=false by default for HTML5
Verifying of the graphics calls in html5 build maybe useful for debug reason, but it’s may be very slow on some browsers. This fix makes --verify-graphics-calls=false the option by default to make build faster even in debug. But if you have any graphics related issues in your buld while testing, remove this argument or change it to --verify-graphics-calls=true to have more information what’s going on.

FIX: (#5727) Fix issue with force using of landscape mode in iOS games on macOS with M1
Fixed issue when iOS game installed on M1 Mac forces to use landscape mode even if game made in portrait mode.

Editor

NEW: (#3981) Expose sprite scaling in the editor
The sprite component has a scale but it has not been possible to modify it from the editor. The sprite scale could only be change at runtime using go.set("#sprite", "scale", vmath.vector3()). This change adds a scale property to the sprite component, next to the already existing position and rotation properties.

NEW: (#6786) Use label as tooltip text for unknown settings
This allows viewing the full name of a setting in a tooltip when it does not fit in its place.

FIX: (#6885) Fix Lua breakpoints not hitting unless bytecode is embedded
Fixed Lua debugger breakpoints not suspending execution when running from the editor or bundling with the --use-lua-source flag.

FIX: (#6399) Retain specific expensive outputs in editor cache

  • Reduced the time spent on subsequent Build and Save operations when editing a large project.
  • Added a Shared Editor Settings editor to the Project menu where projects can adjust the cache size used by the editor for all users working in the project. If you still experience frequent delays in the editor after this change, try increasing the cache size.

FIX: (#6806) IDE: Unsorted order of assets
Fixed sorting.

FIX: (#6796) Profiler is sometimes unresponsive
Added a profiler.sleep_between_server_updates game.project setting to set the delay in milliseconds between profiler server updates. Try changing this value to something like 50ms if you have problems with the computer becoming unresponsive while using the profiler.

The profiler will now also reuse any existing profiler port when reconnecting. This should solve reported issues with profiler connection problems.

FIX: (#6388) Skip engine build when running on a remote target

FIX: (#6678) Fix shift+click selection in select list dialog
This changeset instructs ListViewBehavior to not set the anchor for shift-selection to the end of a list when we change list items by typing into filter text field.

26 Likes

I have lived to see

15 Likes

What am I doing wrong?
Version 1.3.6 of course.
Here’s my result:

Erhm ill take a look, maybe it didn’t make it to beta after all :upside_down_face:

Yeah the commit was just missing from the beta, It’s building now and should be available in 30 mins or so :+1: sorry for the inconveniance!

1 Like

The new constant type matrix4 appeared in alpha, still not in beta. I’ve already checked. :slight_smile:

According to CI, the release was done 15 minutes ago:

The engine sha1 is 5aa541c0729e1f153304baa1e1afc18d0b7d3fe6.

1 Like

I’m also trying a beta and matrix user constant. Seems, the runtime works ok, but I get this exception in the Editor when opening any collection contains model used material with “user matrix4”:


sha1 is 5aa541c0729e1f153304baa1e1afc18d0b7d3fe6

UPD: After remove mtx_light from material constants in model.material (but still in runtime code) the Editor works correct.

Hm interesting, pretty sure that worked. But thanks, I’ll take a look!

1 Like

quick question: in shader index 1 in my_array[] will be as index 0?

UPD:
index 1 in Lua = 0 in shader

I’ve refactored shadow+lights shader using two new features: matrix constant and arrays for constant buffer. Works good on PC! Did’t test on others platforms yet.

6 Likes

Something broken with HTML5 build in this beta. It assembles without any error. But doesn’t start in browser with following errors:

I tried severals project, the same results. On screenshot is Monarch example.

3 Likes

I’m thinking it’s a change we did for the logger.
I’ve accidentally started using a thread, when I didn’t mean to.
I’m on it.

3 Likes

Yes, that’s correct. It’s done so to make it model the lua table indices you get from creating it in-place:
lua tbl = { 1, 2 }

– constant buffer:
local a = render.constant_buffer()
a.thing = { vmath.vector4(), vmath.vector4() }

But maybe it’s confusing? :thinking: in render.enable_texture with start with indices at 0 to map to a texture sampler

We should look closer into the 0 Vs 1 indices. There was a similar issue with raw gamepad input and gamepad bindings.

The latest beta has a fix for this issue, thanks for helping out with testing!

1 Like

@Dragosha, the latest beta has a fix for the html5 issue now.

4 Likes

the problem remains

I’ve reopened the ticket. Please have a look at the question I posted there.

2 Likes

I’ve noticed last beta consumes a lot of CPU time even on “zero” project like Monarch example (about 30%). And even more surprisingly, the GPU.

Build time 2022-09-14T09:14:36.712371
Defold channel beta
Defold editor sha 905234d8da2e642f1075c73aaa1bfb72e49199e3
Defold engine sha 905234d8da2e642f1075c73aaa1bfb72e49199e3
Defold version 1.3.6
GPU NVIDIA GeForce GTX 1060 6GB/PCIe/SSE2
GPU Driver 4.6.0 NVIDIA 516.59
Java version 11.0.15+10-LTS
OS arch amd64
OS name Windows 10
OS version 10.0

My first guess would have been that it is the profiler, but when you also mention GPU then I’m not so sure. Can you also test a release build?