Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TRACKER] State of GDExtension support #1

Open
67 of 71 tasks
limbonaut opened this issue Nov 6, 2023 · 8 comments
Open
67 of 71 tasks

[TRACKER] State of GDExtension support #1

limbonaut opened this issue Nov 6, 2023 · 8 comments
Assignees

Comments

@limbonaut
Copy link
Owner

limbonaut commented Nov 6, 2023

Goal

  • Port to GDExtension in such a way that it would be possible to compile the same codebase as either an engine module or an extension.
  • Build GDExtension artifacts using GitHub workflows in addition to custom editor artifacts.
  • User Projects should not require porting when switched from module to GDExtension.

Status

Implemented and merged, with unresolved issues documented below.

Progress

  • Core
    • Blackboard
    • BT Tasks
      • Composite
      • Decorator
      • Scene
      • Blackboard
    • BTPlayer
    • LimboUtility
    • LimboTaskDb
    • LimboStringNames
    • State Machine
      • LimboState
      • LimboHSM
      • BTState
  • Editor
    • ActionBanner
    • TaskTree
    • TaskPalette
    • ModeSwitchButton
    • LimboAI editor & plugin
    • Icons
  • Debugger
    • Behavior tree view
    • Debugger plugin
    • Data classes
    • Debugger bottom pane
  • Additional tasks
    • Add SConstruct and .gdextension to source control
    • Fix TaskPalette on "Refresh" crash
    • Fix ERROR: Condition "_instance_bindings != nullptr && _instance_bindings[0].binding != nullptr" is true.
    • Fix crash when requesting documentation page
    • Use common source for editor config file
    • Fix: Weird name showing on the tasks
    • Fix: BB params convert to "Wrapped..."
    • Fix: Create script template not working
    • Fix: Comments not getting custom styling & dialog
    • Fix: User tasks not showing in the Task Palette
    • Fix: User icons are not showing in the task palette
    • Check resources reloading for potential issues
    • Fix: Shortcuts not working
  • Verify
    • Compiles
    • Launches
    • Can run demo project
    • Test core functionality
    • Test editor functionality
    • Test debugger
    • Test on the production
  • Documentation
    • Create sphinx project
    • Set up readthedocs
    • Link to documentation in the code
    • Convert documentation pages from the GitHub
    • Add minimal task example
    • Fix introduction to BT
    • Landing page
    • Using GDExtension, limitations & setup
    • Link to documentation pages in the README
  • Integrate
    • Create a script to update icons in .gdextension
    • Fix module build errors
    • Create a script to set up new dev environment for GDExtension
    • Create GHA build workflow for GDExtension for desktop platforms
    • Call GDExtension builds in the "All Builds" workflow
  • Unresolved
@limbonaut limbonaut added the enhancement New feature or request label Nov 6, 2023
@limbonaut
Copy link
Owner Author

limbonaut commented Dec 15, 2023

GDExtension Issues

limbonaut added a commit that referenced this issue Dec 29, 2023
@limbonaut limbonaut self-assigned this Jan 7, 2024
@limbonaut limbonaut changed the title Support GDExtension State of GDExtension support Jan 15, 2024
@limbonaut limbonaut changed the title State of GDExtension support [TRACKER] State of GDExtension support Mar 5, 2024
@limbonaut limbonaut removed the enhancement New feature or request label Mar 5, 2024
@ODtian
Copy link

ODtian commented Mar 13, 2024

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

@limbonaut
Copy link
Owner Author

limbonaut commented Mar 13, 2024

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
Copy link

tkuebler commented Apr 3, 2024

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
Copy link
Owner Author

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. 🤷

@tkuebler
Copy link

tkuebler commented Apr 4, 2024

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
Copy link
Owner Author

limbonaut commented Apr 4, 2024

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
Copy link
Contributor

monxa commented Sep 4, 2024

Well done fixing virtual methods in cd0bc8e.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants