Defold library releases and updates from the britzl code forge


I haven’t been very good at posting updates to the various Defold library projects that I maintain so I wrote a script to trawl my GitHub repos to compile releases made in the last 90 days:


Auto generated AWS SDK for Lua

AWS SDK 1.0.0 [britzl released 2018-11-05]

CHANGE: Code generated updated to deal with documentation strings containing linebreaks
CHANGE: Filenames for generated code more closely resembles the filenames for other AWS SDK languages
CHANGE: Updated to latest API versions


Cucumber for the Defold game engine

Cucumber-Defold 1.0.1 [britzl released 2018-10-26]

FIX: Send line number and source in step match (currently sending unknown:0 since that is the default value in cucumber-ruby-wire)


Google Analytics implementation for the Defold game engine

Defold Google Analytics 1.4.0 [britzl released 2018-09-25]

NEW: Added optional soft and hard crash callbacks to tracker.enable_crash_reporting(enabled, on_soft_crash, on_hard_crash)


Simplify input related operations such as gesture detection, input mapping and clicking/dragging game objects

Defold-Input 1.5.1 [britzl released 2018-11-20]

NEW: button.lua will assign an auto-generated node id if the node doesn’t have an id (empty hash). This is typically encountered in cloned nodes.

Defold-Input 1.5.0 [britzl released 2018-11-15]

FIX: Unregistering nodes using a string didn’t work
CHANGE: Button clicks are now required to have both pressed and released inside the button to be treated as a click

Defold-Input 1.4.1 [britzl released 2018-11-14]

FIX: Unregistering a button didn’t work. Thanks @Jerakin

Defold-Input 1.4.0 [britzl released 2018-10-25]

NEW: Accelerometer support
CHANGE: Game objects are no longer centered on the cursor when dragged. Instead their offset now remains.


LuaSec module for Defold

Defold-LuaSec 1.0.1 [britzl released 2018-10-05]

FIX: Incorrect naming of libs and includes on Windows. Thanks @jcash!


Orthographic camera functionality for the Defold game engine

Orthographic Camera API 2.6.0 [britzl released 2018-10-15]

NEW: Added render helper for easier integration in render scripts


Defold-RichText is a system to create styled text based on an HTML inspired markup language

Defold RichText 5.3.0 [britzl released 2018-11-29]

NEW: UTF8 support. Thanks Dmitriy!

Defold RichText 5.2.0 [britzl released 2018-09-12]

NEW: Added support for the a anchor tab to easily handle clickable words
FIX: Generated nodes are assigned unique ids


Unit testing in Defold

DefTest 2.6.0 [britzl released 2018-11-20]

NEW: Mock of gui.clone()

DefTest 2.5.0 [britzl released 2018-11-15]

NEW: Added support for gui.animate() and gui.cancel_animation()
FIX: Error when not providing a code coverage configuration


Match 3 engine for Defold

Emthree 1.1.0 [britzl released 2018-10-28]

NEW: Support for different slide directions when collapsing the board

Emthree 1.0.1 [britzl released 2018-10-25]

FIX: Take into account world position and scale when converting screen coordinates
CHANGE: Use of timer module for internal delays instead of go.animate()


Defold GUI system

Gooey 6.5.1 [britzl released 2018-09-26]

FIX: Adding and removing items from a dynamic list didn’t work properly


Utilities for game development using the Defold engine

Ludobits 6.2.0 [britzl released 2018-11-03]

NEW: util.lerp()


Defold platformer engine

Platypus 3.1.0 [britzl released 2018-11-15]

NEW: Collision configuration option config.collision.ground has been deprecated in favour of config.collision.groups (see documentation for details). This opens up for configuration of one-way platforms and doors.
NEW: The id of the game object that the instance is parented to is exposed as parent_id


Steamworks support for Defold using the Defold extension system

Steamworks 1.0.0 [britzl released 2018-09-17]

First public release



Wow!!! :clap:



You just AWESOME! Thank you!



You libraries are fantastic(and so are you). Thx



I haven’t been as active working on new Defold libraries in 2019, but some of the libraries I already have available are quite popular and receive bug reports and feature requests that keeps me busy :slight_smile: Many thanks to all users and to everyone reporting problems or suggesting new features!

Here’s the release notes of libraries with new releases in 2019:


Amazon Gamelift extension for the Defold game engine

Defold-GameLift 2.0.0 [britzl released 2019-02-13]

BREAKING CHANGE: gamelift.init() will no longer automatically invoke ProcessReady(). You need to manually call gamelift.process_ready() after gamelift.init() has finished (and before you have completed any additional initialisation that your server may need)

Defold-GameLift 1.1.0 [britzl released 2019-02-05]

CHANGE: Updated to Gamelift SDK 3.3.0


Simplify input related operations such as gesture detection, input mapping and clicking/dragging game objects

Defold-Input 2.1.0 [britzl released 2019-08-02]

NEW: First version of onscreen.lua for working with virtual on-screen controls

Defold-Input 2.0.0 [britzl released 2019-08-02]

BREAKING CHANGE: The trigger constants in mapper.lua has been moved to the new triggers.lua module.
NEW: triggers.lua contains all input event triggers from all.input_bindings together with functions to check if a trigger is a mouse, keyboard or gamepad event.

Defold-Input 1.6.3 [britzl released 2019-08-01]

NEW: Added constants for the gamepad connect/disconnect bindings

Defold-Input 1.6.2 [britzl released 2019-08-01]

NEW: gamepad_connected and gamepad_disconnected bindings added

Defold-Input 1.6.1 [britzl released 2019-07-29]

NEW: Added cursor constants to Lua module in.cursor
FIX: Better detection of deleted game object before sending cursor events

Defold-Input 1.6.0 [britzl released 2019-06-01]

NEW: The cursor.script will now also generate pressed and release events when pressing outside of a game object

Defold-Input 1.5.3 [britzl released 2019-04-06]

FIX: Improved mouse vs touch control of the cursor

Defold-Input 1.5.2 [britzl released 2019-04-06]

FIX: Improved cursor support on mobile/touch


LuaSec module for Defold

Defold-LuaSec 1.1.0 [britzl released 2019-06-14]

NEW: Android 64-bit support


Orthographic camera functionality for the Defold game engine

Orthographic Camera API 2.9.1 [britzl released 2019-06-06]

CHANGE: Using camera.set_zoom() will now immediately update the zoom level so that a call to for instance camera.screen_to_world_bounds() immediately after a zoom change will return the proper values.

Orthographic Camera API 2.9.0 [britzl released 2019-06-06]

NEW: The camera can now be configured to immediately position itself on the target it is assigned to follow even when lerp is enabled.

camera.follow("/camera", "/target", { lerp = 0.1, immediate = true })

Or:"/camera", "follow", { target = "/target", lerp = 0.1, immediate = true })

Orthographic Camera API 2.8.0 [britzl released 2019-03-28]

NEW: camera.world_to_screen() now takes an optional adjust mode. Useful when positioning gui nodes on world coordinates.
FIX: camera.project() didn’t use current window dimensions

Orthographic Camera API 2.7.3 [britzl released 2019-02-13]

FIX: Removed deprecated call to render.draw_debug2d()

Orthographic Camera API 2.7.2 [britzl released 2019-02-07]

FIX: Don’t require a callback function to be specified when calling camera.shake()

Orthographic Camera API 2.7.1 [britzl released 2019-01-25]

FIX: camera.follow() didn’t work properly after changing from explicit arguments to options table


Defold-RichText is a system to create styled text based on an HTML inspired markup language

Defold RichText 5.5.0 [britzl released 2019-06-08]

NEW: Added support for combining words of the same style on a line into a single node to reduce node count. This is achieved by passing combine_words = true in the settings.

Defold RichText 5.4.1 [britzl released 2019-04-17]

FIX: Zero width metrics didn’t apply the word size to the metrics height which results in linebreaks of the wrong height


Screenshot extension for the Defold game engine

Defold Screenshot 1.7.0 [britzl released 2019-06-28]

NEW: It is now possible to capture a portion of the screen in HTML5. Fixes #4

Defold Screenshot 1.6.0 [britzl released 2019-03-22]

NEW: HTML5 support for screenshots using screenshot.html5(cb). Thank you @AGulev and @Jhonnyg!


Defold native extension to share data from a Defold application using native dialogs

Defold Sharing 1.6.1 [britzl released 2019-07-17]

FIX: Crash/conflict with other extension using FileProvider on Android

Defold Sharing 1.6.0 [britzl released 2019-05-21]

NEW: Use of the new manifest merge support in Defold. No need to create your own custom AndroidManifest.xml or Info.plist.

Defold Sharing 1.5.0 [britzl released 2019-03-20]

CHANGE: Updated included AndroidManifest.xml to match the one in /builtins
NEW: Added Info.plist with sharing descriptions


A cross platform asynchronous implementation of the WebSockets protocol for Defold

Defold WebSocket 1.6.0 [britzl released 2019-06-14]

NEW: Android 64-bit support


Defold Profiler interaction using Lua

DefPro 1.1.1 [britzl released 2019-02-15]

FIX: Added fallback when unable to get string


Unit testing in Defold

DefTest 2.7.1 [britzl released 2019-07-22]

FIX: Issue with message formatting when creating an assert

DefTest 2.7.0 [britzl released 2019-03-08]

NEW: Added support for test filtering using the pattern option


Match 3 engine for Defold

Emthree 2.0.0 [britzl released 2019-05-20]

Added diagonal slide mechanic while collapsing and filling the board.

BREAKING CHANGE: emthree.SLIDE_* is now emthree.COLLAPSE_*
BREAKING CHANGE: Config value slide_duration is now collapse_duration
BREAKING CHANGE: Config value slide_easing is now collapse_easing
NEW: slide_duration for controlling the slide (diagonal) animation duration
NEW: slide_easing for controlling the slide easing
NEW: swap_duration for controlling swap animation duration
NEW: remove_duration for controlling the pause duration while removing blocks

Emthree 1.1.1 [britzl released 2019-03-28]

FIX: Prevent swaps with blockers


Defold GUI system

Gooey 7.5.2 [britzl released 2019-07-08]

FIX: Script instance detection didn’t work on all platforms

Gooey 7.5.1 [britzl released 2019-06-13]

FIX: Missing nil check when using new use_marked_text option

Gooey 7.5.0 [britzl released 2019-06-13]

NEW: gooey.input() now has a use_marked_text config value to control if marked text should be used or not

Gooey 7.4.1 [britzl released 2019-06-01]

FIX: Static list item positioning broke in the previous release

Gooey 7.4.0 [britzl released 2019-05-28]

NEW: Horizontal list support. Thank you @paweljarosz !

Gooey 7.3.4 [britzl released 2019-05-24]

FIX: Crash in certain circumstances when setting text on input field

Gooey 7.3.3 [britzl released 2019-05-24]

FIX: Marked text when typing on device will get discarded if you click outside of the input field so that it loses focus

Gooey 7.3.2 [britzl released 2019-05-24]

FIX: Input text now properly handles UTF8 characters when calculating max length

Gooey 7.3.1 [britzl released 2019-05-22]

FIX: Don’t accept a list item press if the list has scrolled.

Gooey 7.3.0 [britzl released 2019-05-22]

NEW: It’s now possible to detect a long press on most components via the long_pressed state variable. The long press minimum duration can be configured via the set_long_pressed_time(time) on the component instance.

Gooey 7.2.3 [britzl released 2019-05-22]

FIX: Issue with set_visible for scrollbars

Gooey 7.2.2 [britzl released 2019-05-05]

FIX: Issue since upgrade of LuaJIT in Defold

Gooey 7.2.1 [britzl released 2019-04-22]

FIX: Defold 1.2.151 changed the way the script instance was set on the global table. This caused problems with detection of script/scene reload. This has now been fixed by using the new numeric script instance key.

Gooey 7.2.0 [britzl released 2019-04-15]

CHANGE: Lack of dynamic list item data is now returned as nil instead of an empty string

Gooey 7.1.0 [britzl released 2019-03-26]

CHANGE: Handle size is taken into account when calculating scroll amount as well as handle position. The handle will now stay within the scrollbar bounds.
FIX: scroll.y was inverted for both the scrollbar and list component. 0 should be at the top of a list while 1 should be at the bottom.

Gooey 7.0.2 [britzl released 2019-03-21]

FIX: List initial scroll is 1
FIX: Need to initiate scrollbar values even if no action is provided

Gooey 7.0.1 [britzl released 2019-03-18]

FIX: Removed debug print

Gooey 7.0.0 [britzl released 2019-03-18]

NEW: gooey.scrollbar()
NEW: Lists now have a scroll_to(x, y) instance function
BREAKING CHANGE: The lists in the Kenneyblue theme now supports scrollbars via an optional scrollbar id as the second argument.

Gooey 6.6.1 [britzl released 2019-02-07]

FIX: Fixed a crash in the input field if the config was nil

Gooey 6.6.0 [britzl released 2019-02-07]

NEW: Text fields can now define a range of allowed characters using Lua standard pattern matching. Example:

gooey.input("input_alphanumeric", gui.KEYBOARD_TYPE_DEFAULT, action_id, action, { allowed_characters = "[%a%d%s]" })


Defold template project for LOWREZJAM

LOWREZJAM-template 1.3.0 [britzl released 2019-02-02]

CHANGE: The render script now accepts not only the view but also the projection from an active camera

LOWREZJAM-template 1.2.0 [britzl released 2019-02-01]

NEW: Added preset templates for Lowrez jam and Nokia 3310 jam

LOWREZJAM-template 1.1.0 [britzl released 2019-01-26]

NEW: It is now possible to adjust low-res texture size
NEW: Merged upscale material and other settings

LOWREZJAM-template 1.0.1 [britzl released 2019-01-26]

FIX: Didn’t set the right blend state in the render script


Utilities for game development using the Defold engine

Ludobits 6.6.0 [britzl released 2019-05-10]

FIX: sequence.http_get() and sequence.http_post() didn’t work
NEW: to invoke any function

Ludobits 6.5.2 [britzl released 2019-04-23]

FIX: ludobits.m.signal Signal id should be of type hash for easier use when sent as a message id

Ludobits 6.5.1 [britzl released 2019-04-23]

FIX: ludobits.m.signal trigger() failed for listeners added as URLs when the message was anything other than a table or nil

Ludobits 6.5.0 [britzl released 2019-04-21]

NEW: sequence.go.animate() now supports “position.xy” as a property

Ludobits 6.4.0 [britzl released 2019-04-13]

NEW: ludobits.m.sequence

Ludobits 6.3.1 [britzl released 2019-04-02]

FIX: Delete flow timers when done

Ludobits 6.3.0 [britzl released 2019-04-01]

CHANGE: flow.update() has been deprecated in favour of updating flows using a native timer
CHANGE: flow.ray_cast() has been deprecated in favour of native physics.raycast()


Monarch is a Defold screen manager with transition support and a straight forward API

Monarch 2.19.0 [britzl released 2019-08-01]

NEW: It is now possible to post a message to a screen using, message_id, [message]). For proxy screens the message will be sent to the Receiver Url defined on the screen_proxy.script. For factory screens the message will be sent to all game objects in the collection.

Monarch 2.18.0 [britzl released 2019-07-29]

NEW: GUI transitions now supports multiple nodes if needed

Monarch 2.17.2 [britzl released 2019-05-02]

FIX: Fixed incorrect scope of variable in
FIX: Reloading a screen could cause problems with screen unregister/register flow
FIX: More error reporting

Monarch 2.17.1 [britzl released 2019-03-17]

FIX: Focus lost messages were not received before the screen was unloaded

Monarch 2.17.0 [britzl released 2019-03-08]

FIX: It was not possible to call on a screen that was preloading (via monarch.preload() or the Preload setting). Fixes #40.
NEW: monarch.is_preloading(screen_id)
NEW: monarch.when_preloaded(screen_id, callback)

Monarch 2.16.3 [britzl released 2019-03-04]

FIX: It wasn’t possible to reload a preloaded screen

Monarch 2.16.2 [britzl released 2019-01-23]

FIX: Wait for popups to close before transitioning.

Monarch 2.16.0 [britzl released 2019-01-11]

NEW: Added a Preload option to screens. Preload will automatically preload the screen and keep its resources in memory.
NEW: Added monarch.unload(id, [cb])
NEW: Added monarch.is_visible(id)


Defold platformer engine

Platypus 3.2.2 [britzl released 2019-08-02]

FIX: Bounds calculation for left and right raycast was wrong, causing inconsistencies when detecting wall and ground collisions

Platypus 3.2.1 [britzl released 2019-08-02]

NEW: It is now possible to define a collision offset. This can be used to handle when the collision object isn’t centered around game object origo.

Platypus 3.2.0 [britzl released 2019-03-25]

CHANGE: Better support for handling slopes
FIX: Adjust for game object bounds when the parent/ground is removed underneath


Steamworks support for Defold using the Defold extension system

Steamworks 1.2.0 [britzl released 2019-02-22]

NEW: Added dynamic libs for Linux

Steamworks 1.1.0 [britzl released 2019-02-12]

FIX: Platform detection wasn’t done correctly.
FIX: Several smaller fixes to the generated code




I should really give Monarch and Gooey a try. So far I was avoiding it, as I want to learn to do everything by myself first, but I think I’m getting to the point where those two are time-savers rather than outright enablers.



Thank you so much for your updates, @britzl! :smiley: I’m having an impression that I’m not the only one working on my game, when there are so many stuff shared by people to use :blush: I’ve recently posted some whishlist in Platypus repo, I’m trying to contribute to it too :wink: True Tile Collision by @NeZvers has many of those features, so I’m trying to compare solutions

1 Like


Yes, saw the list. Some good stuff in there! Will try to find some time to fix some of them!



Oh, my name next to @britzl! :star_struck: If you need something more than tile collision for physics, I think Platypus is the way to go. Or you have to add needed features yourself on top of TTC.



@NeZvers, I used your TTC a lot, it’s awesome, that’s why I would like such features in Platypus too :smiley: On the other hand, yes, there could be also features from Platypus moved to TTC as well

1 Like


Last night I submitted a small add-on to the Platypus library and today @britzl merged it, so after fetching library you can add new config parameter:


That is by default set to false, which means it keeps the legacy behavior, but when changed to true it prevents user from changing drastically velocity during “wall jump” - that is, jump after bouncing from a wall.

Check out more in the readme of Platypus or PR: :wink:

P.S. I also started working on a refactor of TTC by @NeZvers - to allow users to create an instance of ttc instead of passing whole self table to every function :wink: We’ll see how it come out :smiley:



Another contribution for Platypus! As promised - wall_slide :smiley:

Setup is described in README of Platypus :wink:

Wall slide is performed when you push towards a wall while falling and having a wall contact - so using platypus.left() or platypus.right()while falling on the wall. If you want to release a wall_slide when the key is released - use platypus.abort_wall_slide() when action.released.

You can configure wall_sliding_gravity and this is great as you can whenever you want set it to zero and you have an instant wall grab feature :DI



Sure do it. I’d like to see how it’s done properly.



I wouldn’t say it’s properly :smiley: It’s just a different approach, more familiar and convenient for me because I’m used to OOP in work :wink: