Skip to content

Instantly share code, notes, and snippets.

@Flavelius
Last active November 30, 2023 18:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Flavelius/54c5dc9237ddf02f8067793a61fbafe9 to your computer and use it in GitHub Desktop.
Save Flavelius/54c5dc9237ddf02f8067793a61fbafe9 to your computer and use it in GitHub Desktop.
Notes for why godot is currently not the best choice for larger projects
Issues that make it hard to use godot for larger projects that make use of more complex combinations of many features:
Showstoppers:
-Changing the name of a resource that is referenced in multiple other locations modifies all referencing locations as well (apart from placeholder nodes that just make scenes that use them become invalid :: https://github.com/godotengine/godot/pull/75103) (design issue)
--Advanced import paths become invalid on reference path changes (references to materials, animations etc.)
-ResourceLoader.Exists returns true for non-existent resources (likely result of caching bugs)
-renaming nodes that are inherited creates orphans in inherited scenes (design issue) :: https://github.com/godotengine/godot/pull/73911
-Animations are referenced as strings and AnimationTree resources are dependent on scene nodes, making animationtrees impossible to edit as external resources (design issue)
-Animationtree nodes cannot be reused, requiring duplication for synchronizing layered animation (for example upper and lower body of a character) (design issue)
-Tool-scripts (editor-time logic) cannot access other non-tool scripts, requiring all of them to be marked as tool scripts which includes execution of potentially undesired logic which then must be manually guard-claused (design issue, similar to cascading c# async/await)
-Tool scripts that are inherited get disabled tool-script behaviour by default (requiring manually marking all inheritors), leading to broken functionality where inheritors are expected to execute for example validation logic in their base class (design issue)
-Some assets with external references (materials for example with textures) become uneditable when a reference is missing
-c#: exported fields with the same name in inheritance chains have unexpected/faulty de/serialization behaviour with no warning :: https://github.com/godotengine/godot/pull/85407
-circular references (resources/scenes) are not allowed/crash (for example a scene referencing a menu scene that references the initial scene) (design issue)
impactful limitations or usability issues:
-Colliders are not allowed to be scaled, but still can be (undefined/undesired behaviour)
-Control (UI) nodes used inside containers or other control-parents still have adjustable inspector values that are silently ignored
Obsolete/resolved issues
-imported animations' play mode (i.e. loop) cannot be changed, only when unlinking the animation from its import-source (design issue)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment