godotengine / tps-demo

Godot Third Person Shooter with high quality assets and lighting
Other
955 stars 166 forks source link

[4.0] The level fails to load #168

Open jtnicholl opened 1 year ago

jtnicholl commented 1 year ago

OS/device including version:

Fedora 37

Issue description:

Attempting to load the level from the menu in the 4.0-dev branch using Godot 4.0.2 does nothing but print:

Error while loading level: 2
E 0:00:01:0742   load_threaded_request: Threading loading resource'res://level/geometry/scenes/props.tscn failed: Source specified: 'res://level/level.tscn' but was not called by it.
  <C++ Error>    Method/function failed. Returning: ERR_INVALID_PARAMETER
  <C++ Source>   core/io/resource_loader.cpp:316 @ load_threaded_request()
E 0:00:01:0742   load: res://level/level.tscn:4 - Parse Error: [ext_resource] referenced broken resource at: res://level/geometry/scenes/props.tscn
  <C++ Source>   scene/resources/resource_format_text.cpp:476 @ load()
E 0:00:01:0742   _load: Failed loading resource: res://level/level.tscn. Make sure resources have been imported by opening the project in the editor at least once.
  <C++ Error>    Condition "found" is true. Returning: Ref<Resource>()
  <C++ Source>   core/io/resource_loader.cpp:222 @ _load()

The scenes mentioned open in the editor just fine, and saving them again does nothing.

clayjohn commented 1 year ago

Seems like you are running into this upstream bug https://github.com/godotengine/godot/issues/75815

venilark commented 1 year ago

Seems like you are running into this upstream bug godotengine/godot#75815

I've been forced to use the old load() method temporarily because I completely relied on the resource loader and now it is impossible to load any scene to test or develop, hope it can be fixed for 4.0.3

jtnicholl commented 1 year ago

Seems like you are running into this upstream bug godotengine/godot#75815

I think you're right, I tried disabling sub thread use when calling load_threaded_request and it was fixed.

I've been forced to use the old load() method temporarily because I completely relied on the resource loader and now it is impossible to load any scene to test or develop, hope it can be fixed for 4.0.3

All you need to work around this is not override use_sub_threads when calling load_threaded_request. You don't have to revert to using load, unless there's another issue you're running into.

venilark commented 1 year ago

Seems like you are running into this upstream bug godotengine/godot#75815

I think you're right, I tried disabling sub thread use when calling load_threaded_request and it was fixed.

I've been forced to use the old load() method temporarily because I completely relied on the resource loader and now it is impossible to load any scene to test or develop, hope it can be fixed for 4.0.3

All you need to work around this is not override use_sub_threads when calling load_threaded_request. You don't have to revert to using load, unless there's another issue you're running into.

I try to load two scenes

with use_sub_threads I get errors from both scenes: "Make sure resources have been imported by opening the project in the editor at least once." Parse Error: [ext_resource] referenced broken resource at: res:/... Source specified: 'res://...' but was not called by it.

without it I get only this for the second one "Make sure resources have been imported by opening the project in the editor at least once."

I queue all the scenes I need to load in a for loop, then request them to the loader, this worked fine in 4.0.1