I am trying to find a solution to this as well. I found something, but it's extremely hacky and not sure if I'm going to use it yet, but figured I'd post it here.
In your main UI canvaslayer, add a
smooth_preloads. Then, create
var smooth_preloads =  and a func called
smooth_preload. Now, append the paths of your scenes you want to be smoothly loaded.
for path in smooth_preloads:
var t = load(path).instance()
for node in smooth_preloads_node.get_children():
There are some caveats with this:
- The scene must be VISIBLE in your player's viewport.
- You cannot make it invisible or hide it.
- If you run
queue_free after they are loaded, it won't work.
I initially was going to use this solution because I figured I could set the opacity to 0 and then maybe receive a signal once the
preload is called, and queue_free it from
smooth_preloads_node. However, it seems like even if the opacity of the node is set to 0, the hiccup still happens. I'm stumped.
My solution does work, but the preloaded scene has to be visible on the player's viewport first. Tested on exported builds as well.
Still not sure how to go about this... but it's essential. For example, if a player joins a game and uses a skill. There should be no hiccup at all if we are using
:( No idea what to do as there is no way I'm going to have all the skills/scenes visible on the screen lol.
I am seriously contemplating on switching game engines. However, it's been nearly half a decade there is no turning back. But good lord, it's been hell. So many bugs and issues, when does it stop! :X
edit: I am going to stay optimistic though and hope it can be fixed