You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is likely due to the dangling Variant issue where reference to freed objects are being reassigned: godotengine/godot#38119
The way this game was coded was terribly rushed, with no thought or design to keep track of object references. You will see many null checks because of this, just search the files for is_instance_valid() and you'll see plenty. When something dies in this game, queue_free() is called and it's supposed to be freed from the memory. However, other objects still have reference to that thing, and because that reference is not freed, it thinks the object still exist because other stuff occupied that space in memory.
This was apparent when the speech bubble didn't work correctly when entering a scripted area, because the check for the speech bubble was whether or not it is null. Even though the speech bubble was destroyed, the reference still says that the speech bubble exists - this is because it was assigned to something else. Therefore, the code relating to speech bubble could not execute, because the reference was not pointing to a SpeechBubble object, it was pointing to whatever the hell else is occupying that memory space at that given time.
In the debug build, there seems to be monitoring and checks to prevent this from happening. The goal of this issue is to refactor and ensure all references to itself are properly removed before queue_free() is called.
The text was updated successfully, but these errors were encountered:
This is likely due to the dangling Variant issue where reference to freed objects are being reassigned: godotengine/godot#38119
The way this game was coded was terribly rushed, with no thought or design to keep track of object references. You will see many null checks because of this, just search the files for is_instance_valid() and you'll see plenty. When something dies in this game, queue_free() is called and it's supposed to be freed from the memory. However, other objects still have reference to that thing, and because that reference is not freed, it thinks the object still exist because other stuff occupied that space in memory.
This was apparent when the speech bubble didn't work correctly when entering a scripted area, because the check for the speech bubble was whether or not it is null. Even though the speech bubble was destroyed, the reference still says that the speech bubble exists - this is because it was assigned to something else. Therefore, the code relating to speech bubble could not execute, because the reference was not pointing to a SpeechBubble object, it was pointing to whatever the hell else is occupying that memory space at that given time.
In the debug build, there seems to be monitoring and checks to prevent this from happening. The goal of this issue is to refactor and ensure all references to itself are properly removed before queue_free() is called.
The text was updated successfully, but these errors were encountered: