Good evening, newbie here. After some time away from my project, with a clear head, I realized that the problem I’ve been facing is most likely related to the Godot version. I was using 4.3 beta (I recently switched to the stable version), but Nathan Hoades’ Dialogue Manager only works on 4.2. My question is, should I downgrade to test it, or should I “move on”, looking for another plugin, or creating an interaction system myself, considering that I’m a beginner? What would be the best or most practical approach in this scenario?
When start a project, maintain a stable version of Godot and don’t upgrade casually. If you are sure you need a new feature or patch, you can manually cherry-pick it.
And the nathanhoad/godot_dialogue_manager
is in GDScript that can usually run across minor versions like 4.2 and 4.3. You can use the plugin for Godot 4.2 and wait for the release for 4.3 before updating the plugin instead of change the engine version you are currently using.
However, GDExtension and GDNative plugins typically cannot run across versions because they are bound to Godot with the C++ API.
Thank you for your reply. I apologize for the late response. I was unaware of that step. This will be very helpful.
But actually, that’s really interesting. Could you explain a bit more about that? No worries if it’s a hassle.
GDScript is an interpreted language, and the interpreter executes it line by line at runtime. The GDScript’s grammar is the same across different minor versions of Godot. Using plugins from different minor versions only requires adapting to some breaking changes in the Godot API (generally, there aren’t many breaking changes between minor versions). Even if there are errors with the GDScript plugin, it won’t cause the editor to crash. Instead, clear error logs will be displayed in the console and you can correct them easily.
GDNative and GDExtension both directly use the Godot C++ API. GDNative is directly modifying Godot code by adding modules, and the plugin you get is embedded within a custom build of Godot editor that includes the plugin. GDExtension relies on the extension_api.json
and other C++ headers generated by different versions of the Godot editor. These files can vary between versions. For a compiled language like C++, while different versions of GDExtension might run, minor API changes could lead to undefined symbol errors and cause your Godot to crash. Of course you can clone the repository yourself and compile a version based on the API files generated by new version Godot that means you need to adapt to the new API yourself as same as the repo contributor.
Thanks a lot for the help! There are still some things I’m a bit confused about in the engine. I’ll keep studying.