limbonaut / limboai

LimboAI - Behavior Trees and State Machines for Godot 4
https://limboai.readthedocs.io/
MIT License
1.07k stars 35 forks source link

[TRACKER] State of GDExtension support #1

Open limbonaut opened 10 months ago

limbonaut commented 10 months ago

Goal

Status

Implemented and merged, with unresolved issues documented below.

Progress

limbonaut commented 8 months ago

GDExtension Issues

ODtian commented 5 months ago

Binding virtual method is now available in godot-cpp, will this complete gdextension version's missing features?

limbonaut commented 5 months ago

Binding virtual method is now available in godot-cpp, will this complete gdextension version's missing features?

It's definitely one of the most missing bits in GDExtension, and I'm really glad that virtual methods are coming. Since it is only available in 4.3 branch, and because LimboAI targets the most recent stable release (4.2.x currently), it might take a while before support lands in LimboAI. I assume it should come along with v1.1 or v1.2, and close to first 4.3 RC or beta3. It depends on Godot 4.3 release date.

Alas, it's not the last missing feature:

tkuebler commented 5 months ago

why no plugin.cfg file? I find the list of plugins with their current version and the ability to enable/disable them helpful in the godot editor.

limbonaut commented 5 months ago

why no plugin.cfg file? I find the list of plugins with their current version and the ability to enable/disable them helpful in the godot editor.

Is that even possible? It's a native C++ editor plugin, developed as an engine module first, and ported to GDExtension. AFAIK plugin.cfg is for GDScript editor plugins. :shrug:

tkuebler commented 5 months ago

why no plugin.cfg file? I find the list of plugins with their current version and the ability to enable/disable them helpful in the godot editor.

Is that even possible? It's a native C++ editor plugin, developed as an engine module first, and ported to GDExtension. AFAIK plugin.cfg is for GDScript editor plugins. 🤷

Ah, that explains a lot about the plugins that aren't showing up, I did not know that. Thanks!

However, I added a plugin.cfg to limboai before I asked and it shows up in the plugins list with version, etc - the enable/disable doesn't work though. ( I didn't read through the plugin docs first though, sorry). Seems to me native editors plugins should also have that, but without the ability to enable/disable without a reboot? ( although that would be great as well) but that is a godot issue that I'll have to think through, look at the plugin arch and maybe propose/submit a solution to if I care enough ( I probably don't).

So how do I know what version is installed? Seems like a VERSION.txt file or something similar at the root of the plugin would be very useful.

Coming from the unity package manager ( and a lot of similar managed plugin frameworks in a lot of software ) Godot is a bit of a shock. Not having reviews/ratings in the asset 'store' is understandable, but not knowing what version of plugin you have installed is not.

BTW - thanks for LimboAI - so far it's been flawless and easy to use. :D

limbonaut commented 5 months ago

Godot Engine has a bunch of plugins in the core: they are not visible in that list as well, and you can't disable them. LimboAI is like some of those internal plugins, and so are some other GDExtension addons. It's somewhat confusing terminology in Godot, plugins and addons. And I agree with that GDExtension addons should also have some kind of manifest file for the Asset Library, and it should be visible in the UI with some update mechanism. A new asset store is in development for Godot. Maybe it'll have a better UX.

So how do I know what version is installed? Seems like a VERSION.txt file or something similar at the root of the plugin would be very useful.

Yeah, only engine builds have versions visible inside the editor, but for GDExtension it's not there. Ideally, such functionality needs to be automatic, or I'll simply forget to update it. I've got some versioning working using git tags in GitHub workflows. What I can do is save that info to a file for the GDExtension build. That's a good idea.

monxa commented 3 days ago

Well done fixing virtual methods in cd0bc8e.