Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

packed_tex Load Failure Using Godot Server Executable #298

Open
kruffin opened this issue Jan 18, 2022 · 13 comments
Open

packed_tex Load Failure Using Godot Server Executable #298

kruffin opened this issue Jan 18, 2022 · 13 comments
Labels
bug Something isn't working Waiting for Godot Godot has a bug and should be fixed first

Comments

@kruffin
Copy link

kruffin commented Jan 18, 2022

Describe the bug
When using the Godot server executable to run with a HTerrain node and the Classic4 shader it will fail trying to load the packed_tex files.

Recreating hterrain_server_terrain-server_1 ... done
Attaching to hterrain_server_terrain-server_1
terrain-server_1  | ERROR: Failed loading resource: res://texture_data/HterrainServer_slot0_albedo_bump.packed_tex. Make sure resources have been imported by opening the project in the editor at least once.
terrain-server_1  |    at: _load (core/io/resource_loader.cpp:270)
terrain-server_1  | ERROR: res://HterrainServer.tscn:6 - Parse Error: [ext_resource] referenced nonexistent resource at: res://texture_data/HterrainServer_slot0_albedo_bump.packed_tex
terrain-server_1  |    at: poll (scene/resources/resource_format_text.cpp:412)
terrain-server_1  | ERROR: Failed to load resource 'res://HterrainServer.tscn'.
terrain-server_1  |    at: load (core/io/resource_loader.cpp:206)
terrain-server_1  | ERROR: Failed loading resource: res://HterrainServer.tscn. Make sure resources have been imported by opening the project in the editor at least once.
terrain-server_1  |    at: _load (core/io/resource_loader.cpp:270)
terrain-server_1  | ERROR: Failed loading scene: res://HterrainServer.tscn
terrain-server_1  |    at: start (main/main.cpp:2011)
terrain-server_1  | WARNING: ObjectDB instances leaked at exit (run with --verbose for details).
terrain-server_1  |      at: cleanup (core/object.cpp:2064)
terrain-server_1  | ERROR: Resources still in use at exit (run with --verbose for details).
terrain-server_1  |    at: clear (core/resource.cpp:417)
terrain-server_1  | ERROR: There are still MemoryPool allocs in use at exit!
terrain-server_1  |    at: cleanup (core/pool_vector.cpp:63)
terrain-server_1  | Godot Engine v3.4.2.stable.mono.official.45eaa2daf - https://godotengine.org
terrain-server_1  |  
terrain-server_1  | Mono: Log file is: '/root/.local/share/godot/app_userdata/hterrain_server/mono/mono_logs/2022-01-18_22.42.46_1.log'
hterrain_server_terrain-server_1 exited with code 0

resource_format_text.cpp line 412: https://github.com/godotengine/godot/blob/3.4.2-stable/scene/resources/resource_format_text.cpp#L412
resource_loader.cpp line 206: https://github.com/godotengine/godot/blob/3.4.2-stable/core/io/resource_loader.cpp#L206
resource_loader.cpp line 270: https://github.com/godotengine/godot/blob/3.4.2-stable/core/io/resource_loader.cpp#L270

To Reproduce
Steps to reproduce the behavior:
A minimum project to reproduce is here: https://github.com/kruffin/hterrain_server
Basically, add textures to the terrain node and the packed_tex files will not be loaded by the server binary.

Expected behavior
Would be nice to know if this is the expected outcome or how to identify why it's failing to load. I did take a look a the packed texture importer (https://github.com/Zylann/godot_heightmap_plugin/blob/1.5.2/addons/zylann.hterrain/tools/packed_textures/packed_texture_importer.gd) but am wondering if custom importers are broken in Godot Server. Line 270 of resource_loader.cpp makes me think it doesn't have the custom importer, but am not sure.

Screenshots
N/A

Environment

  • OS: Linux
  • Graphics card: AMD Radeon RX 6700 XT
  • Godot version: 3.4.2
  • Plugin version: 1.5.2
  • Renderer used: GLES3
@kruffin
Copy link
Author

kruffin commented Jan 18, 2022

Looks like there is a different issue with the reproduction project after cloning new it is expecting some information from the .import folder. So has a dependency missing error even though all the files are there. I had the same error with the demo terrain project. Might have to open a separate issue for this.
failed_to_load_dependency_2022-01-18 18-29-36
dependency_errors_large_2022-01-18 18-32-21

@Zylann
Copy link
Owner

Zylann commented Jan 19, 2022

Having to reproduce this on Linux with a server version including Mono is going to be hard for me, I'll have to try without Mono and on Windows probably, because I think (hope) it has no relation, but can't tell when I'll have time to do such investigation.

Also everytime I see a custom loader involved I am suspicious of the feature being randomly broken because it depends on class_name which is itself buggy in Godot 3, especially on first project startup. The files might be there but when it comes to import, if the imported files have not been generated first in the .import folder, it will fail loading.

On top of that, the packed texture importer suffers from API shortcomings so any change the engine has made since I wrote them could have caused breakage. It could also be that server builds do something special to textures that I'm not aware of.

I suppose it works if you use any other type of export?

@kruffin
Copy link
Author

kruffin commented Jan 19, 2022

I just removed mono from the reproduction project and it has the same problem so easier to try and debug. Yes, if you build/run the project without the server binaries it will work. When opening the project local, I do get those missing dependencies errors and have to re-setup the packed textures and activate the addon (since it disables it). Do I need to commit files in the .import folder to prevent that?

If I copy over the .import files it still has the above error of not loading the packed_tex files so not sure if headless building is hitting that error, it seems to create the files in .import though I don't see it creating the .stex files for packed textures.

reimport: begin: (Re)Importing Assets steps: 54
	reimport: step 0: icon_anchor_top_left.svg
	reimport: step 1: icon_anchor_top_right.svg
	reimport: step 2: icon_detail_layer_node.svg
	reimport: step 3: icon_grass.svg
	reimport: step 4: icon_heightmap_color.svg
	reimport: step 5: icon_heightmap_data.svg
	reimport: step 6: icon_heightmap_erode.svg
	reimport: step 7: icon_heightmap_flatten.svg
	reimport: step 8: icon_heightmap_level.svg
	reimport: step 9: icon_heightmap_lower.svg
	reimport: step 10: icon_heightmap_mask.svg
	reimport: step 11: icon_heightmap_node.svg
	reimport: step 12: icon_heightmap_node_large.svg
	reimport: step 13: icon_heightmap_paint.svg
	reimport: step 14: icon_heightmap_raise.svg
	reimport: step 15: icon_heightmap_smooth.svg
	reimport: step 16: icon_heightmap_unmask.svg
	reimport: step 17: icon_long_arrow_down.svg
	reimport: step 18: icon_long_arrow_right.svg
	reimport: step 19: icon_minimap_out_of_range_position.svg
	reimport: step 20: icon_minimap_position.svg
	reimport: step 21: icon_small_circle.svg
	reimport: step 22: white.png
	reimport: step 23: color.png
	reimport: step 24: normal.png
	reimport: step 25: splat.png
	reimport: step 26: icon.png
	reimport: step 27: grass_quad.obj
	reimport: step 28: grass_quad_x2.obj
	reimport: step 29: grass_quad_x3.obj
	reimport: step 30: grass_quad_x4.obj
	reimport: step 31: create_dlscript.png
	reimport: step 32: dllibrary_create_new_dllibrary.png
	reimport: step 33: dllibrary_create_new_resource.png
	reimport: step 34: dllibrary_save_as_resource.png
	reimport: step 35: set_project_dllibrary.png
	reimport: step 36: set_script_dllibrary.png
	reimport: step 37: acrylic1.exr
	reimport: step 38: round0.exr
	reimport: step 39: round1.exr
	reimport: step 40: round2.exr
	reimport: step 41: round3.exr
	reimport: step 42: smoke.exr
	reimport: step 43: texture1.exr
	reimport: step 44: thing.exr
	reimport: step 45: vegetation1.exr
	reimport: step 46: empty.png
	reimport: step 47: icon_anchor_bottom.svg
	reimport: step 48: icon_anchor_bottom_left.svg
	reimport: step 49: icon_anchor_bottom_right.svg
	reimport: step 50: icon_anchor_center.svg
	reimport: step 51: icon_anchor_left.svg
	reimport: step 52: icon_anchor_right.svg
	reimport: step 53: icon_anchor_top.svg
savepack: begin: Packing steps: 102
	savepack: step 2: Storing File: res://HterrainServer.tscn
	savepack: step 2: Storing File: res://addons/zylann.hterrain/hterrain.gdc
	savepack: step 3: Storing File: res://addons/zylann.hterrain/hterrain_chunk.gdc
	savepack: step 3: Storing File: res://addons/zylann.hterrain/hterrain_chunk_debug.gdc
	savepack: step 4: Storing File: res://addons/zylann.hterrain/hterrain_collider.gdc
	savepack: step 4: Storing File: res://addons/zylann.hterrain/hterrain_data.gdc
	savepack: step 5: Storing File: res://addons/zylann.hterrain/hterrain_detail_layer.gdc
	savepack: step 6: Storing File: res://addons/zylann.hterrain/hterrain_mesher.gdc
	savepack: step 6: Storing File: res://addons/zylann.hterrain/hterrain_resource_loader.gdc
	savepack: step 7: Storing File: res://addons/zylann.hterrain/hterrain_resource_saver.gdc
	savepack: step 7: Storing File: res://addons/zylann.hterrain/hterrain_texture_set.gdc
	savepack: step 8: Storing File: res://.import/grass_quad.obj-da067750350fe98ec466261b2aeaf486.mesh
	savepack: step 8: Storing File: res://addons/zylann.hterrain/models/grass_quad.obj.import
	savepack: step 8: Storing File: res://.import/grass_quad_x2.obj-2054c140f543f2a80e2eb921f865ea49.mesh
	savepack: step 8: Storing File: res://addons/zylann.hterrain/models/grass_quad_x2.obj.import
	savepack: step 9: Storing File: res://.import/grass_quad_x3.obj-8691724bc5006b6f65d4e8742ffc84dc.mesh
	savepack: step 9: Storing File: res://addons/zylann.hterrain/models/grass_quad_x3.obj.import
	savepack: step 10: Storing File: res://.import/grass_quad_x4.obj-c449a7d6c810ba1595ed30df9fbf3d28.mesh
	savepack: step 10: Storing File: res://addons/zylann.hterrain/models/grass_quad_x4.obj.import
	savepack: step 10: Storing File: res://addons/zylann.hterrain/native/factory.gdc
	savepack: step 11: Storing File: res://.import/create_dlscript.png-0a36125a39f2df89d6d78df3600e895f.stex
	savepack: step 11: Storing File: res://addons/zylann.hterrain/native/godot-cpp/godot_headers/images/faq/create_dlscript.png.import
	savepack: step 11: Storing File: res://.import/dllibrary_create_new_dllibrary.png-deb8b628cdedf08312fcb942ce87e7da.stex
	savepack: step 11: Storing File: res://addons/zylann.hterrain/native/godot-cpp/godot_headers/images/faq/dllibrary_create_new_dllibrary.png.import
	savepack: step 12: Storing File: res://.import/dllibrary_create_new_resource.png-27c9452717fa97d21b6eefc3c8b65def.stex
	savepack: step 12: Storing File: res://addons/zylann.hterrain/native/godot-cpp/godot_headers/images/faq/dllibrary_create_new_resource.png.import
	savepack: step 12: Storing File: res://.import/dllibrary_save_as_resource.png-b99d1a8d08ceaa91526375c3e37a9111.stex
	savepack: step 12: Storing File: res://addons/zylann.hterrain/native/godot-cpp/godot_headers/images/faq/dllibrary_save_as_resource.png.import
	savepack: step 13: Storing File: res://.import/set_project_dllibrary.png-7b9b02152d645b51417fbb5b067c482f.stex
	savepack: step 13: Storing File: res://addons/zylann.hterrain/native/godot-cpp/godot_headers/images/faq/set_project_dllibrary.png.import
	savepack: step 14: Storing File: res://.import/set_script_dllibrary.png-fee7be8301b466fcccd464b2cb4bf058.stex
	savepack: step 14: Storing File: res://addons/zylann.hterrain/native/godot-cpp/godot_headers/images/faq/set_script_dllibrary.png.import
	savepack: step 14: Storing File: res://addons/zylann.hterrain/native/hterrain.gdnlib
	savepack: step 15: Storing File: res://addons/zylann.hterrain/native/image_utils.gdns
	savepack: step 15: Storing File: res://addons/zylann.hterrain/native/image_utils_generic.gdc
	savepack: step 16: Storing File: res://addons/zylann.hterrain/shaders/array.shader
	savepack: step 16: Storing File: res://addons/zylann.hterrain/shaders/array_global.shader
	savepack: step 17: Storing File: res://addons/zylann.hterrain/shaders/detail.shader
	savepack: step 18: Storing File: res://addons/zylann.hterrain/shaders/lookdev.shader
	savepack: step 18: Storing File: res://addons/zylann.hterrain/shaders/low_poly.shader
	savepack: step 19: Storing File: res://addons/zylann.hterrain/shaders/multisplat16.shader
	savepack: step 19: Storing File: res://addons/zylann.hterrain/shaders/multisplat16_global.shader
	savepack: step 20: Storing File: res://addons/zylann.hterrain/shaders/multisplat16_lite.shader
	savepack: step 20: Storing File: res://addons/zylann.hterrain/shaders/simple4.shader
	savepack: step 21: Storing File: res://addons/zylann.hterrain/shaders/simple4_global.shader
	savepack: step 22: Storing File: res://addons/zylann.hterrain/shaders/simple4_lite.shader
	savepack: step 22: Storing File: res://addons/zylann.hterrain/tools/about/about_dialog.gdc
	savepack: step 23: Storing File: res://addons/zylann.hterrain/tools/about/about_dialog.tscn
	savepack: step 23: Storing File: res://addons/zylann.hterrain/tools/brush/brush_editor.gdc
	savepack: step 24: Storing File: res://addons/zylann.hterrain/tools/brush/brush_editor.tscn
	savepack: step 24: Storing File: res://addons/zylann.hterrain/tools/brush/decal.gdc
	savepack: step 25: Storing File: res://addons/zylann.hterrain/tools/brush/decal.shader
	savepack: step 26: Storing File: res://addons/zylann.hterrain/tools/brush/painter.gdc
	savepack: step 26: Storing File: res://addons/zylann.hterrain/tools/brush/shaders/alpha.shader
	savepack: step 27: Storing File: res://addons/zylann.hterrain/tools/brush/shaders/color.shader
	savepack: step 27: Storing File: res://addons/zylann.hterrain/tools/brush/shaders/erode.shader
	savepack: step 28: Storing File: res://addons/zylann.hterrain/tools/brush/shaders/flatten.shader
	savepack: step 28: Storing File: res://addons/zylann.hterrain/tools/brush/shaders/level.shader
	savepack: step 29: Storing File: res://addons/zylann.hterrain/tools/brush/shaders/raise.shader
	savepack: step 30: Storing File: res://addons/zylann.hterrain/tools/brush/shaders/smooth.shader
	savepack: step 30: Storing File: res://addons/zylann.hterrain/tools/brush/shaders/splat16.shader
	savepack: step 31: Storing File: res://addons/zylann.hterrain/tools/brush/shaders/splat4.shader
	savepack: step 31: Storing File: res://addons/zylann.hterrain/tools/brush/shaders/splat_indexed.shader
	savepack: step 32: Storing File: res://.import/acrylic1.exr-8a4b622f104c607118d296791ee118f3.stex
	savepack: step 32: Storing File: res://addons/zylann.hterrain/tools/brush/shapes/acrylic1.exr.import
	savepack: step 32: Storing File: res://.import/round0.exr-fc6d691e8892911b1b4496769ee75dbb.stex
	savepack: step 32: Storing File: res://addons/zylann.hterrain/tools/brush/shapes/round0.exr.import
	savepack: step 33: Storing File: res://.import/round1.exr-8050cfbed31968e6ce8bd055fbaa6897.stex
	savepack: step 33: Storing File: res://addons/zylann.hterrain/tools/brush/shapes/round1.exr.import
	savepack: step 34: Storing File: res://.import/round2.exr-2a843db3bf131f2b2f5964ce65600f42.stex
	savepack: step 34: Storing File: res://addons/zylann.hterrain/tools/brush/shapes/round2.exr.import
	savepack: step 34: Storing File: res://.import/round3.exr-77a9cdd9a592eb6010dc1db702d42c3a.stex
	savepack: step 34: Storing File: res://addons/zylann.hterrain/tools/brush/shapes/round3.exr.import
	savepack: step 35: Storing File: res://.import/smoke.exr-0061a0a2acdf1ca295ec547e4b8c920d.stex
	savepack: step 35: Storing File: res://addons/zylann.hterrain/tools/brush/shapes/smoke.exr.import
	savepack: step 35: Storing File: res://.import/texture1.exr-0fac1840855f814972ea5666743101fc.stex
	savepack: step 35: Storing File: res://addons/zylann.hterrain/tools/brush/shapes/texture1.exr.import
	savepack: step 36: Storing File: res://.import/thing.exr-8e88d861fe83e5e870fa01faee694c73.stex
	savepack: step 36: Storing File: res://addons/zylann.hterrain/tools/brush/shapes/thing.exr.import
	savepack: step 36: Storing File: res://.import/vegetation1.exr-0573f4c73944e2dd8f3202b8930ac625.stex
	savepack: step 36: Storing File: res://addons/zylann.hterrain/tools/brush/shapes/vegetation1.exr.import
	savepack: step 37: Storing File: res://addons/zylann.hterrain/tools/brush/terrain_painter.gdc
	savepack: step 38: Storing File: res://addons/zylann.hterrain/tools/bump2normal_tex.shader
	savepack: step 38: Storing File: res://addons/zylann.hterrain/tools/detail_editor/detail_editor.gdc
	savepack: step 39: Storing File: res://addons/zylann.hterrain/tools/detail_editor/detail_editor.tscn
	savepack: step 39: Storing File: res://addons/zylann.hterrain/tools/exporter/export_image_dialog.gdc
	savepack: step 40: Storing File: res://addons/zylann.hterrain/tools/exporter/export_image_dialog.tscn
	savepack: step 40: Storing File: res://addons/zylann.hterrain/tools/generate_mesh_dialog.gdc
	savepack: step 41: Storing File: res://addons/zylann.hterrain/tools/generate_mesh_dialog.tscn
	savepack: step 42: Storing File: res://addons/zylann.hterrain/tools/generator/generator_dialog.gdc
	savepack: step 42: Storing File: res://addons/zylann.hterrain/tools/generator/generator_dialog.tscn
	savepack: step 43: Storing File: res://addons/zylann.hterrain/tools/generator/shaders/bump2normal.shader
	savepack: step 43: Storing File: res://addons/zylann.hterrain/tools/generator/shaders/erode.shader
	savepack: step 44: Storing File: res://addons/zylann.hterrain/tools/generator/shaders/perlin_noise.shader
	savepack: step 44: Storing File: res://addons/zylann.hterrain/tools/generator/texture_generator.gdc
	savepack: step 45: Storing File: res://addons/zylann.hterrain/tools/globalmap_baker.gdc
	savepack: step 46: Storing File: res://.import/empty.png-31363f083c9c4e2e8e54cf64f3716737.stex
	savepack: step 46: Storing File: res://addons/zylann.hterrain/tools/icons/empty.png.import
	savepack: step 46: Storing File: res://.import/icon_anchor_bottom.svg-963f115d31a41c38349ab03453cf2ef5.stex
	savepack: step 46: Storing File: res://addons/zylann.hterrain/tools/icons/icon_anchor_bottom.svg.import
	savepack: step 47: Storing File: res://.import/icon_anchor_bottom_left.svg-c59f20ff71f725e47b5fc556b5ef93c4.stex
	savepack: step 47: Storing File: res://addons/zylann.hterrain/tools/icons/icon_anchor_bottom_left.svg.import
	savepack: step 47: Storing File: res://.import/icon_anchor_bottom_right.svg-23dd5f1d1c7021fe105f8bde603dcc4d.stex
	savepack: step 47: Storing File: res://addons/zylann.hterrain/tools/icons/icon_anchor_bottom_right.svg.import
	savepack: step 48: Storing File: res://.import/icon_anchor_center.svg-d48605c4035ec4a02ae8159aea6db85f.stex
	savepack: step 48: Storing File: res://addons/zylann.hterrain/tools/icons/icon_anchor_center.svg.import
	savepack: step 48: Storing File: res://.import/icon_anchor_left.svg-77f3e03e6fbadfd7e4dc1ab3661e6e7c.stex
	savepack: step 48: Storing File: res://addons/zylann.hterrain/tools/icons/icon_anchor_left.svg.import
	savepack: step 49: Storing File: res://.import/icon_anchor_right.svg-90e3a37e8d38587bac01703849f8b9f7.stex
	savepack: step 49: Storing File: res://addons/zylann.hterrain/tools/icons/icon_anchor_right.svg.import
	savepack: step 50: Storing File: res://.import/icon_anchor_top.svg-f1dcf93e569fe43b280b5dc072ee78e5.stex
	savepack: step 50: Storing File: res://addons/zylann.hterrain/tools/icons/icon_anchor_top.svg.import
	savepack: step 50: Storing File: res://.import/icon_anchor_top_left.svg-aea4438056394f9967bf74b13799fedc.stex
	savepack: step 50: Storing File: res://addons/zylann.hterrain/tools/icons/icon_anchor_top_left.svg.import
	savepack: step 51: Storing File: res://.import/icon_anchor_top_right.svg-e9f520f41c9c20cc5e64aca56427ca01.stex
	savepack: step 51: Storing File: res://addons/zylann.hterrain/tools/icons/icon_anchor_top_right.svg.import
	savepack: step 51: Storing File: res://.import/icon_detail_layer_node.svg-70daba484432569847b1d2fe22768af3.stex
	savepack: step 51: Storing File: res://addons/zylann.hterrain/tools/icons/icon_detail_layer_node.svg.import
	savepack: step 52: Storing File: res://.import/icon_grass.svg-6a20eb11bc23d46b8a4c0f365f95554b.stex
	savepack: step 52: Storing File: res://addons/zylann.hterrain/tools/icons/icon_grass.svg.import
	savepack: step 52: Storing File: res://.import/icon_heightmap_color.svg-2b3375697cab4a6c7b8d933fc7f2b982.stex
	savepack: step 52: Storing File: res://addons/zylann.hterrain/tools/icons/icon_heightmap_color.svg.import
	savepack: step 53: Storing File: res://.import/icon_heightmap_data.svg-00236b6035ce13dd687a19d98237bdbd.stex
	savepack: step 53: Storing File: res://addons/zylann.hterrain/tools/icons/icon_heightmap_data.svg.import
	savepack: step 54: Storing File: res://.import/icon_heightmap_erode.svg-fad285f0810d69bec16027ac0257c223.stex
	savepack: step 54: Storing File: res://addons/zylann.hterrain/tools/icons/icon_heightmap_erode.svg.import
	savepack: step 54: Storing File: res://.import/icon_heightmap_flatten.svg-3d183c33fce9f34c419c53418ef26264.stex
	savepack: step 54: Storing File: res://addons/zylann.hterrain/tools/icons/icon_heightmap_flatten.svg.import
	savepack: step 55: Storing File: res://.import/icon_heightmap_level.svg-0abbb78afcf28f4da15188c85861a768.stex
	savepack: step 55: Storing File: res://addons/zylann.hterrain/tools/icons/icon_heightmap_level.svg.import
	savepack: step 55: Storing File: res://.import/icon_heightmap_lower.svg-5bb5cae46ea03f9d65d6c497a65882db.stex
	savepack: step 55: Storing File: res://addons/zylann.hterrain/tools/icons/icon_heightmap_lower.svg.import
	savepack: step 56: Storing File: res://.import/icon_heightmap_mask.svg-3fad663c59a229c1c6c17c4e8d5bad09.stex
	savepack: step 56: Storing File: res://addons/zylann.hterrain/tools/icons/icon_heightmap_mask.svg.import
	savepack: step 56: Storing File: res://.import/icon_heightmap_node.svg-0b776ad0015c7d9d9553b161b36e70fe.stex
	savepack: step 56: Storing File: res://addons/zylann.hterrain/tools/icons/icon_heightmap_node.svg.import
	savepack: step 57: Storing File: res://.import/icon_heightmap_node_large.svg-4b8ff9077cb0d8dc06efcf638cce1edb.stex
	savepack: step 57: Storing File: res://addons/zylann.hterrain/tools/icons/icon_heightmap_node_large.svg.import
	savepack: step 58: Storing File: res://.import/icon_heightmap_paint.svg-ad4c1d13ab344959f8e60b793d52d80d.stex
	savepack: step 58: Storing File: res://addons/zylann.hterrain/tools/icons/icon_heightmap_paint.svg.import
	savepack: step 58: Storing File: res://.import/icon_heightmap_raise.svg-16ae516b9460ce83d04d965ed6b9989a.stex
	savepack: step 58: Storing File: res://addons/zylann.hterrain/tools/icons/icon_heightmap_raise.svg.import
	savepack: step 59: Storing File: res://.import/icon_heightmap_smooth.svg-1216ccdd3a408b8769b0a0964b7bd3f9.stex
	savepack: step 59: Storing File: res://addons/zylann.hterrain/tools/icons/icon_heightmap_smooth.svg.import
	savepack: step 59: Storing File: res://.import/icon_heightmap_unmask.svg-f88c0addb6f444beecc364dd218d67e9.stex
	savepack: step 59: Storing File: res://addons/zylann.hterrain/tools/icons/icon_heightmap_unmask.svg.import
	savepack: step 60: Storing File: res://.import/icon_long_arrow_down.svg-baa34c94eaf2f9f3533b079350dd260b.stex
	savepack: step 60: Storing File: res://addons/zylann.hterrain/tools/icons/icon_long_arrow_down.svg.import
	savepack: step 60: Storing File: res://.import/icon_long_arrow_right.svg-2e9c5428ca49af0df04372d4de12fdd2.stex
	savepack: step 60: Storing File: res://addons/zylann.hterrain/tools/icons/icon_long_arrow_right.svg.import
	savepack: step 61: Storing File: res://.import/icon_minimap_out_of_range_position.svg-be0d8e592b6594137b0f40434b64f771.stex
	savepack: step 61: Storing File: res://addons/zylann.hterrain/tools/icons/icon_minimap_out_of_range_position.svg.import
	savepack: step 62: Storing File: res://.import/icon_minimap_position.svg-09c3263e8852c7010dcfa0a85245403d.stex
	savepack: step 62: Storing File: res://addons/zylann.hterrain/tools/icons/icon_minimap_position.svg.import
	savepack: step 62: Storing File: res://.import/icon_small_circle.svg-758362406034e77f78350899f9b2cf34.stex
	savepack: step 62: Storing File: res://addons/zylann.hterrain/tools/icons/icon_small_circle.svg.import
	savepack: step 63: Storing File: res://.import/white.png-06b7d7f95e74cd7f8357ec25a73870fb.stex
	savepack: step 63: Storing File: res://addons/zylann.hterrain/tools/icons/white.png.import
	savepack: step 63: Storing File: res://addons/zylann.hterrain/tools/importer/importer_dialog.gdc
	savepack: step 64: Storing File: res://addons/zylann.hterrain/tools/importer/importer_dialog.tscn
	savepack: step 64: Storing File: res://addons/zylann.hterrain/tools/inspector/inspector.gdc
	savepack: step 65: Storing File: res://addons/zylann.hterrain/tools/inspector/inspector.tscn
	savepack: step 66: Storing File: res://addons/zylann.hterrain/tools/load_texture_dialog.gdc
	savepack: step 66: Storing File: res://addons/zylann.hterrain/tools/minimap/minimap.gdc
	savepack: step 67: Storing File: res://addons/zylann.hterrain/tools/minimap/minimap.tscn
	savepack: step 67: Storing File: res://addons/zylann.hterrain/tools/minimap/minimap_normal.shader
	savepack: step 68: Storing File: res://addons/zylann.hterrain/tools/minimap/minimap_overlay.gdc
	savepack: step 68: Storing File: res://addons/zylann.hterrain/tools/minimap/ratio_container.gdc
	savepack: step 69: Storing File: res://addons/zylann.hterrain/tools/normalmap_baker.gdc
	savepack: step 70: Storing File: res://addons/zylann.hterrain/tools/packed_textures/packed_texture_array_importer.gdc
	savepack: step 70: Storing File: res://addons/zylann.hterrain/tools/packed_textures/packed_texture_importer.gdc
	savepack: step 71: Storing File: res://addons/zylann.hterrain/tools/packed_textures/packed_texture_util.gdc
	savepack: step 71: Storing File: res://addons/zylann.hterrain/tools/packed_textures/stream_texture_importer.gdc
	savepack: step 72: Storing File: res://addons/zylann.hterrain/tools/packed_textures/texture_layered_importer.gdc
	savepack: step 72: Storing File: res://addons/zylann.hterrain/tools/panel.gdc
	savepack: step 73: Storing File: res://addons/zylann.hterrain/tools/panel.tscn
	savepack: step 74: Storing File: res://addons/zylann.hterrain/tools/plugin.gdc
	savepack: step 74: Storing File: res://addons/zylann.hterrain/tools/preview_generator.gdc
	savepack: step 75: Storing File: res://addons/zylann.hterrain/tools/progress_window.gdc
	savepack: step 75: Storing File: res://addons/zylann.hterrain/tools/progress_window.tscn
	savepack: step 76: Storing File: res://addons/zylann.hterrain/tools/resize_dialog/resize_dialog.gdc
	savepack: step 76: Storing File: res://addons/zylann.hterrain/tools/resize_dialog/resize_dialog.tscn
	savepack: step 77: Storing File: res://addons/zylann.hterrain/tools/terrain_preview.gdc
	savepack: step 78: Storing File: res://addons/zylann.hterrain/tools/terrain_preview.tscn
	savepack: step 78: Storing File: res://addons/zylann.hterrain/tools/texture_editor/display_alpha.shader
	savepack: step 79: Storing File: res://addons/zylann.hterrain/tools/texture_editor/display_alpha_material.tres
	savepack: step 79: Storing File: res://addons/zylann.hterrain/tools/texture_editor/display_alpha_slice.shader
	savepack: step 80: Storing File: res://addons/zylann.hterrain/tools/texture_editor/display_color.shader
	savepack: step 80: Storing File: res://addons/zylann.hterrain/tools/texture_editor/display_color_material.tres
	savepack: step 81: Storing File: res://addons/zylann.hterrain/tools/texture_editor/display_color_slice.shader
	savepack: step 82: Storing File: res://addons/zylann.hterrain/tools/texture_editor/display_normal.shader
	savepack: step 82: Storing File: res://addons/zylann.hterrain/tools/texture_editor/flow_container.gdc
	savepack: step 83: Storing File: res://addons/zylann.hterrain/tools/texture_editor/set_editor/source_file_item_editor.gdc
	savepack: step 83: Storing File: res://addons/zylann.hterrain/tools/texture_editor/set_editor/source_file_item_editor.tscn
	savepack: step 84: Storing File: res://addons/zylann.hterrain/tools/texture_editor/set_editor/texture_set_editor.gdc
	savepack: step 84: Storing File: res://addons/zylann.hterrain/tools/texture_editor/set_editor/texture_set_editor.tscn
	savepack: step 85: Storing File: res://addons/zylann.hterrain/tools/texture_editor/set_editor/texture_set_import_editor.gdc
	savepack: step 86: Storing File: res://addons/zylann.hterrain/tools/texture_editor/set_editor/texture_set_import_editor.tscn
	savepack: step 86: Storing File: res://addons/zylann.hterrain/tools/texture_editor/texture_editor.gdc
	savepack: step 87: Storing File: res://addons/zylann.hterrain/tools/texture_editor/texture_editor.tscn
	savepack: step 87: Storing File: res://addons/zylann.hterrain/tools/texture_editor/texture_list.gdc
	savepack: step 88: Storing File: res://addons/zylann.hterrain/tools/texture_editor/texture_list.tscn
	savepack: step 88: Storing File: res://addons/zylann.hterrain/tools/texture_editor/texture_list_item.gdc
	savepack: step 89: Storing File: res://addons/zylann.hterrain/tools/texture_editor/texture_list_item.tscn
	savepack: step 90: Storing File: res://addons/zylann.hterrain/tools/util/dialog_fitter.gdc
	savepack: step 90: Storing File: res://addons/zylann.hterrain/tools/util/dialog_fitter.tscn
	savepack: step 91: Storing File: res://addons/zylann.hterrain/tools/util/editor_util.gdc
	savepack: step 91: Storing File: res://addons/zylann.hterrain/tools/util/interval_slider.gdc
	savepack: step 92: Storing File: res://addons/zylann.hterrain/tools/util/result.gdc
	savepack: step 92: Storing File: res://addons/zylann.hterrain/tools/util/rich_text_label_hyperlinks.gdc
	savepack: step 93: Storing File: res://addons/zylann.hterrain/util/direct_mesh_instance.gdc
	savepack: step 94: Storing File: res://addons/zylann.hterrain/util/direct_multimesh_instance.gdc
	savepack: step 94: Storing File: res://addons/zylann.hterrain/util/errors.gdc
	savepack: step 95: Storing File: res://addons/zylann.hterrain/util/grid.gdc
	savepack: step 95: Storing File: res://addons/zylann.hterrain/util/image_file_cache.gdc
	savepack: step 96: Storing File: res://addons/zylann.hterrain/util/logger.gdc
	savepack: step 96: Storing File: res://addons/zylann.hterrain/util/quad_tree_lod.gdc
	savepack: step 97: Storing File: res://addons/zylann.hterrain/util/util.gdc
	savepack: step 98: Storing File: res://default_env.tres
	savepack: step 98: Storing File: res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex
	savepack: step 98: Storing File: res://icon.png.import
	savepack: step 99: Storing File: res://.import/color.png-476f3fe20462bb236baa74569719114e.stex
	savepack: step 99: Storing File: res://terrain_data/color.png.import
	savepack: step 99: Storing File: res://terrain_data/data.hterrain
	savepack: step 100: Storing File: res://terrain_data/height.res
	savepack: step 100: Storing File: res://.import/normal.png-fcfca18ecefe383f859b751acba43b27.stex
	savepack: step 100: Storing File: res://terrain_data/normal.png.import
	savepack: step 101: Storing File: res://.import/splat.png-921cc3798b8ad785a2e1f85fefa2bfce.stex
	savepack: step 101: Storing File: res://terrain_data/splat.png.import
	savepack: step 102: Storing File: res://addons/zylann.hterrain/hterrain.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/hterrain_chunk.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/hterrain_chunk_debug.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/hterrain_collider.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/hterrain_data.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/hterrain_detail_layer.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/hterrain_mesher.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/hterrain_resource_loader.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/hterrain_resource_saver.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/hterrain_texture_set.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/native/factory.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/native/image_utils_generic.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/about/about_dialog.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/brush/brush_editor.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/brush/decal.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/brush/painter.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/brush/terrain_painter.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/detail_editor/detail_editor.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/exporter/export_image_dialog.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/generate_mesh_dialog.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/generator/generator_dialog.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/generator/texture_generator.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/globalmap_baker.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/importer/importer_dialog.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/inspector/inspector.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/load_texture_dialog.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/minimap/minimap.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/minimap/minimap_overlay.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/minimap/ratio_container.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/normalmap_baker.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/packed_textures/packed_texture_array_importer.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/packed_textures/packed_texture_importer.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/packed_textures/packed_texture_util.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/packed_textures/stream_texture_importer.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/packed_textures/texture_layered_importer.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/panel.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/plugin.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/preview_generator.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/progress_window.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/resize_dialog/resize_dialog.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/terrain_preview.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/texture_editor/flow_container.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/texture_editor/set_editor/source_file_item_editor.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/texture_editor/set_editor/texture_set_editor.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/texture_editor/set_editor/texture_set_import_editor.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/texture_editor/texture_editor.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/texture_editor/texture_list.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/texture_editor/texture_list_item.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/util/dialog_fitter.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/util/editor_util.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/util/interval_slider.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/util/result.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/tools/util/rich_text_label_hyperlinks.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/util/direct_mesh_instance.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/util/direct_multimesh_instance.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/util/errors.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/util/grid.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/util/image_file_cache.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/util/logger.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/util/quad_tree_lod.gd.remap
	savepack: step 102: Storing File: res://addons/zylann.hterrain/util/util.gd.remap
	savepack: step 102: Storing File: res://icon.png
	savepack: step 102: Storing File: res://project.binary
savepack: end
reimport: end

build_log.txt

@kruffin
Copy link
Author

kruffin commented Jan 19, 2022

I think the above is a red-herring though since I took the .pck file after building it with the godot editor and ran it with the server executable and it fails with the loading resource packed_tex. The same pack run with non-server godot runs fine.

@Zylann
Copy link
Owner

Zylann commented Jan 19, 2022

Do I need to commit files in the .import folder to prevent that?

You should not need to commit anything from inside the .import folder.

Perhaps we can simplify the problem further by eliminating all terrain stuff. Packed texture code should be fairly independent (just some bits in plugin.gd and utils, and the rest in tools/packed_textures). Have a new project, with a minimal plugin solely registering the packed texture importer (GUI tools not needed, .packed_tex files are just JSON files with paths in them). Then have a packed texture inside the project, make a plane mesh use it etc. Then we can see more easily what happens. I suspect server builds have a special behavior, or a bug?

What's interesting though is that importers are editor-only code. So there is actually no script code directly involved in loading the texture in an exported build. I wonder what Godot is missing there.

@kruffin
Copy link
Author

kruffin commented Jan 19, 2022

Have a new project, with a minimal plugin solely registering the packed texture importer

I'll see if I can put something together tonight.

You should not need to commit anything from inside the .import folder.

Try opening that sample project (https://github.com/kruffin/hterrain_server/tree/master/godot_files) and note it complains about missing files that exist. I get a similar error with demo project (https://github.com/Zylann/godot_hterrain_demo).

@Zylann
Copy link
Owner

Zylann commented Jan 19, 2022

Last time I saw something like this, it was someone with a failing hard drive, or under Windows a case-insensitive issue. I assume that is yet another cause here. Once again Godot is misreporting errors like a pro, totally saying what's actually going on... will have a look when I have time

@kruffin
Copy link
Author

kruffin commented Jan 20, 2022

Put together that minimal addon and project here: https://github.com/kruffin/packed_tex_test

It has the same error with the server binary, so has to be something with how it treats importers...

@kruffin
Copy link
Author

kruffin commented Jan 21, 2022

So, doing --help on the three different Godot binaries resulted in some interesting options for the video driver.

$./packed_tex_test.x86_64 --help
...
--video-driver <driver>          Video driver ('GLES3', 'GLES2').

$./Godot_v3.4.2-stable_linux_headless.64 --help
...
--video-driver <driver>          Video driver ('Dummy').

$./Godot_v3.4.2-stable_linux_headless.64 --help
...
--video-driver <driver>          Video driver ('Dummy').

My guess at this point is a video driver is needed to create a stream texture so it complains about the .packed_tex resource when it can't create one. Making this up though and have no proof. It really shouldn't be trying to load the packed texture (none of the files it references are included in the pck).

{
	"contains_albedo": true,
	"resolution": 512,
	"src": {
		"a": "res://texture_src/Ground037_1K_Displacement.jpg",
		"rgb": "res://texture_src/Ground037_1K_Color.jpg"
	}
}

Slightly more interesting output with the -v parameter when running.

$./Godot_v3.4.2-stable_linux_server.64 --main-pack packed_tex_test.pck -v
Godot Engine v3.4.2.stable.official.45eaa2daf - https://godotengine.org
 
CORE API HASH: 0
EDITOR API HASH: 0
Loading resource: res://default_env.tres
Loading resource: res://PackedTexTest.tscn
Loading resource: res://texture_data/HterrainServer_slot0_albedo_bump.packed_tex
ERROR: Failed loading resource: res://texture_data/HterrainServer_slot0_albedo_bump.packed_tex. Make sure resources have been imported by opening the project in the editor at least once.
   at: _load (core/io/resource_loader.cpp:270)
ERROR: res://PackedTexTest.tscn:3 - Parse Error: [ext_resource] referenced nonexistent resource at: res://texture_data/HterrainServer_slot0_albedo_bump.packed_tex
   at: poll (scene/resources/resource_format_text.cpp:412)
ERROR: Failed to load resource 'res://PackedTexTest.tscn'.
   at: load (core/io/resource_loader.cpp:206)
ERROR: Failed loading resource: res://PackedTexTest.tscn. Make sure resources have been imported by opening the project in the editor at least once.
   at: _load (core/io/resource_loader.cpp:270)
ERROR: Failed loading scene: res://PackedTexTest.tscn
   at: start (main/main.cpp:2011)
WARNING: ObjectDB instances leaked at exit (run with --verbose for details).
     at: cleanup (core/object.cpp:2064)
$ ./packed_tex_test.x86_64 -v
Godot Engine v3.4.2.stable.mono.official.45eaa2daf - https://godotengine.org
XInput: Refreshing devices.
XInput: No touch devices found.
Detecting GPUs, set DRI_PRIME in the environment to override GPU detection logic.
Only one GPU found, using default.
Using GLES3 video driver
OpenGL ES 3.0 Renderer: AMD Radeon RX 6700 XT
OpenGL ES Batching: ON
	OPTIONS
	max_join_item_commands 16
	colored_vertex_format_threshold 0.25
	batch_buffer_size 16384
	light_scissor_area_threshold 1
	item_reordering_lookahead 4
	light_max_join_items 32
	single_rect_fallback False
	debug_flash False
	diagnose_frame False
/lib/x86_64-linux-gnu/libasound.so.2: undefined symbol: snd_dlpath
PulseAudio: context other
PulseAudio: context other
PulseAudio: context other
PulseAudio: context ready
PulseAudio: Detecting channels for device: alsa_output.pci-0000_0d_00.1.hdmi-stereo-extra4
PulseAudio: detected 2 output channels
PulseAudio: audio buffer frames: 512 calculated output latency: 11ms
JoypadLinux: udev enabled and loaded successfully.
 
Mono: Initializing module...
Mono JIT compiler version 6.12.0 ((no/5ce143a1)
ERROR: Mono: Core API hash mismatch.
   at: _init_godot_api_hashes (modules/mono/mono_gd/gd_mono.cpp:490)
Mono: Log file is: '/home/kruffin/.local/share/godot/app_userdata/packed_tex_test/mono/mono_logs/2022-01-21_12.24.49_51615.log'
Mono: Skipping runtime initialization because 'mscorlib.dll' could not be found
CORE API HASH: 12889762389686882091
EDITOR API HASH: 3237768591
Loading resource: res://default_env.tres
Loaded builtin certs
Loading resource: res://PackedTexTest.tscn
Loading resource: res://texture_data/HterrainServer_slot0_albedo_bump.packed_tex

Might have to give up on server or headless binaries and just use the --no-window command on the regular one. Probably brings it's own problems with fake frame buffers, but a different rabbit hole.

@kruffin
Copy link
Author

kruffin commented Jan 21, 2022

@Zylann
Copy link
Owner

Zylann commented Jan 21, 2022

Yeah I was just pointed to the same thing. But I still have no idea what I'm supposed to modify in my plugin for the loading to work, because I did not write any kind of custom loader for this.

The only guess I can make is that .packed_tex is not in this hardcoded list of extensions in the dummy texture loader, so Godot doesn't care about packed_tex, despite having been imported as a regular .stex. Instead it tries to load it with the real loader, which it can't find because it's a server build.

That also means every other addon adding extra texture formats (some of which I listed here) will likely have this problem as well.
I think it could be worth opening a ticket in Godot issue tracker.

@kruffin
Copy link
Author

kruffin commented Jan 22, 2022

Thanks Zylann. Just want to say thank you for putting this height map plugin out there for others to use and play with. I'm going to ask on IRC and see what I can find out. I'll create an issue in the Godot project and report back the URL here.

[Edit]: Opened an issue here: godotengine/godot#57067

@Zylann Zylann added bug Something isn't working Waiting for Godot Godot has a bug and should be fixed first labels Jan 22, 2022
@kruffin
Copy link
Author

kruffin commented Feb 9, 2022

Thought I should take some time to reply back here with some of the workarounds that can be done to get around this custom resource loading issue on a server executable:

  1. Don't load the resource when running from a server binary - seems obvious, but does require some changes to your project depending on how you are instancing the HTerrain node. The gist of that can be seen in a workaround branch of the packed tex test project here: https://github.com/kruffin/packed_tex_test/blob/workaround/PackedTexTest.gd This example isn't exactly the same because you would be setting the texture_set attribute on the HTerrain instead, but shows how. Do note the load() vs preload() because preload() will have the same load error.
  2. Don't use HTerrain at all on the server and instead use the HTerrainData and HTerrainCollider objects alone. This is the approach I am currently trying and seems to work, however, does require significant changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working Waiting for Godot Godot has a bug and should be fixed first
Projects
None yet
Development

No branches or pull requests

2 participants