In the game/project I’ve been working on, a savable player has Arrays of custom classes that extend from the Resource class. These are namely the ‘Dragon’ class, which saves and loads just fine, and the ‘Clutch’ class, which saves without any error message provided but fails to load with the following information:
Everything else that the player has loads just fine and without issue, using the following code: (save location is temporary during the making of the game, code was made with the help of this YouTube tutorial that was recommended on the official Godot docs)
By overriding the constructor with a mandatory argument, you prevented the engine to do the default object construction i.e. calling the constructor without arguments (when doing duplication or creating a fresh object under the hood)
When implementing your own constructors with arguments, always provide default values for all arguments so the engine can make that default call, without supplying any.
From Object::_init() reference in the docs:
Note: If _init() is defined with required parameters, the Object with script may only be created directly. If any other means (such as PackedScene.instantiate() or Node.duplicate()) are used, the script’s initialization will fail.