Godot Resources
This is a brief collection of (mostly #godot related) repositories I have encountered and enjoyed lately for you all (in order of addition):
- https://github.com/peterprickarz/hego
- https://github.com/Zylann/solar_system_demo
- https://github.com/athillion/ProceduralPlanetGodot
- https://github.com/Dimev/Realistic-Atmosphere-Godot-and-UE4
- https://github.com/Zylann/godot_atmosphere_shader
- https://github.com/gdquest-demos/godot-shaders
- https://github.com/fsleroux/planet-based-movement-tutorial
- https://github.com/blackears/cyclopsLevelBuilder
- https://github.com/CraterCrash/godot-orchestrator
- https://github.com/mohsenph69/Godot-MTerrain-plugin
- https://github.com/passivestar/godot-minimal-theme
- https://github.com/TokisanGames/Terrain3D
- https://github.com/TokisanGames/Sky3D
- https://github.com/gdquest-demos/godot-4-3d-third-person-controller
- https://github.com/godotengine/awesome-godot
- https://github.com/GodotSteam/GodotSteam
- https://github.com/JekSun97/gdTree3D
- https://github.com/immaculate-lift-studio/TerrainCrafter
- https://github.com/nathanhoad/godot_dialogue_manager
- https://github.com/dialogic-godot/dialogic

Consider using Callable.call_deferred() instead of Object.call_deferred() This way you get to avoid a string reference
Say you have a signal: died, and inside on_died, godot gives you an error/warning and suggests you to on the add_child() line and suggests to use call_deferred Python Copy func _on_died ( ) : if randf ( ) > drop_chance : return var vial_instance = vial_scene . instantiate ( ) as Node2D owner . get_parent ( ) . add_child ( vial_instance ) #need to call_deferred vial_instance . global_position = owner . global_position Instead of directly calling the add_child() method deferred,
Navigate to where the the signal is being emitted and use the Callable.call_deferred() Extract method Construct Callable Make sure you do not call the extracted method, simply pass the reference call call_deferred() on the Callable Python Copy func take_damage ( damage : float ) : current_health = max ( current_health - damage , 0 ) Callable ( check_death ) . call_deferred ( ) func check_death ( ) : if current_health == 0 : died . emit ( ) owner . queue_free ( ) This way, you tackle the root of the problem and any other instances where you connect to the died signal wont have to call_deferred() individually every single time .
YOU DONT ACTUALLY NEED TO WRAP IN CALLABLE
You can actually just call call_deferred() directly on a method without having to construct a callable. check_death.call_deferred()
You can take this a step further to avoid creating a seperate function by using a lambda
Python Copy ( func ( ) : if _current_health == 0 : owner . queue_free ( ) died . emit ( ) ) . call_deferred ( )
From: https://www.udemy.com/course/create-a-complete-2d-arena-survival-roguelike-game-in-godot-4/ ALT