TexturePacker for Godot is not production ready
DrMoriarty opened this issue · 8 comments
When Godot tries to import tpsheet I see in logs:
Failed method: Label:_update_callback target ID: 398122
TOTAL BYTES: 4194288
NULL count: 0
CALL : 221
CALL _test_update_tree: 12
CALL _update_bone_list: 1
CALL _set_main_scene_state: 1
CALL minimum_size_changed: 36
CALL _update_callback: 115096
CALL _update_minimum_size: 1351
CALL _sort_children: 56969
CALL _on_theme_changed: 2
CALL _update_current_tab: 6
CALL _update_hover: 450
CALL emit_signal: 180
CALL _emit_change: 1
CALL _update_script_names: 2
CALL _update_script_connections: 2
CALL _update_tree: 2
CALL _update_scrollbar_position: 24
CALL update_transform_gizmo_view: 4
ERROR: push_call: Message queue out of memory. Try increasing 'memory/limits/message_queue/max_size_kb' in project settings.
At: core/message_queue.cpp:55.
It shows infinite amount of the same error and import progress still stayed on zero.
I increased message queue to 8192 Kb and successfully imported two atlases.
Then I added 6 more atlasses to game and again can not open the project.
As far as I can see, this addon is not intended to import more than one atlas. I added 6 atlases and when I run the engine it can import the first one, than engine becames crazy and I have to force stop it.
After that the first atlas has *.sprites folder near the atlas image. And during next engine start it will import the second one.
So I waited for half of hour and stopped engine six times in order to import six atlasses.
Definitely it should be fixed!
(I paid for texturepacker and I find it's integration to Godot very bad)
Ok. I increased message queue to 20000 Kb and I was able to import several atlases (each has 400 sprites) at once time.
At least it should be in README in section of known limitations. Or it should be fixed.
After importing my atlases I noticed one more issues.
The engine tries to reimport my atlases several times. After first importing it shows me errors in console for each atlas:
ERROR: get_dependencies: Cannot open file 'res://.import/model_s.tpsheet-63295cc4dc6e3aeabb0e72bc7c83670f.res'.
At: core/io/resource_format_binary.cpp:1048.
and then it starts again. It takes several minutes for each atlas. I already have 17 atlases and it already takes a lot of time.
The situation even worse then I described before. Every time when I switch to another application and then return to Godot the engine start reimporting of all sheets (it doesn't reimport all other resources of the game, only texturepacker sheets)
May be texturepacker is extremely useful tool for HelloWorlds toys, but in realworld projects it becames mostly useless. I spend HOURS of my work time on watching importing view.
Awful!
Don't by texturepacker if you want to use it with Godot.
Definitely you should delete all tpsheet
files after the first success import, or they will kill you.
Hm...ok. Maybe not delete but prevent another import of the same sheet.
That could easily be done by writing a file that contains all smartupdate hashes from the .tpsheet files after a successful import.
I unfortunately have no resources to do this at the moment :-/
When I imported ~300 atlases with up to 2000 sprites in them (which was ~500 000 frames totally) the Godot starts crashing on opening my project. So I decided that making a file for each frame is not a good idea.
Finally I gave up this addon and wrote my own convertor to make animations from tpsheet files.