Bundling "release" mode creates problem with GUI (SOLVED)

I don’t want to put it in the “bugs” category since it is not on the most recent version of Defold. I can’t use it right now because I work with the rive extension that haven’t been updated to 1.3.5. Also I think I might just need some small info on the difference between “debug” and “release” mode.

My problem is that when I bundle an app in “release” mode, my game’s inventory has a specific bug that makes it unusable. It looks like one line isn’t being executed in the code. I don’t have any problem in Debug mode. So I was wondering if there were special things that could get lost in the bundling process. For example I do set a texture dynamically to a gui node.

Differences between debug and release builds (we should document this) are:

  • Profiler is disabled
  • Print/log statements are suppressed
  • Reverse hash lookups are not performed
    • What this means is that if you do print(hash("foobar")) or tostring(hash("foobar")) you get something like hash: [10621420976831182651 (unknown)] in a release build while in a debug build the has is resolved back to its textual representation, eg hash:[foobar].

If you are relying on the reverse hash lookups it may explain why things behave differently in a release build.

1 Like

Thank you a lot, I found the solution thanks to you!

It was indeed the hash lookups, something I didn’t know. When pressing the node related to a category of items, I used its concatenated id to display the right type of items. My workaround was to make a table like that

self.hashConverter = { -- in release build hash lookups are deactivated
["hat"] = hash("hat"),
["chest"] = hash("chest"),
["ring"] = hash("ring"),
["neck"] = hash("neck"),
["ranged"] = hash("ranged"),
["melee"] = hash("melee")

And replace the concatenation of the hash by this :

for i in pairs(self.hashConverter) do
			if self.hashConverter[i] == selectedNodeID then
				self.displayedType = i