CraterCrash / godot-orchestrator

Orchestrator: Unleashing Creativity with Visual Scripting
https://www.cratercrash.com/orchestrator
Apache License 2.0
1k stars 55 forks source link

merging orchestrator with blazium(fork of godot) #822

Open itzdect4tor opened 1 month ago

itzdect4tor commented 1 month ago

Description

i asked the developers of blazium if they can add orchestrator as offical visual scripting for blazium and they said they will do it if the developers of orchestrator willing to make it a module , is that is possible ?

Implementation ideas

No response

esklarski commented 1 month ago

It can be done, though I know nothing of the process.

I did recently encounter a person that converted the Terrain3D GDExtension to a module: https://github.com/DanielSnd/Terrain3D/commit/67a63154ca6cfa4e0aab53e868cf62dded902a56

So it is possible. But I certainly wouldn't guarantee it works.

Ughuuu commented 3 weeks ago

Ok, I was obsessed with this (for the godot-sandbox and godot-rapier plugins). I wanted to make it work. I made a bunch of proposals to make it work. I was trying to make building for gdextension to be similar as to building for module. I tried with ifdefs, with python codegen, etc. It is not simple. There are differences between godot-cpp includes and function names and parameters and godot includes, function names and parameters. While I wanted it to work a lot, it just didn't. So I thought of another way, easier to do. Here it is:

  1. make the current gdextension that builds dynamic libs build static libs. (pretty simple change, won't destroy the codebase completely like ifdefs do).
  2. make a small module that encapsulates the static lib, and at build time link with it.

Thats it!

Downsides:

tehKaiN commented 2 weeks ago

There are differences between godot-cpp includes and function names and parameters and godot includes, function names and parameters.

Do you have some extra specifics on where the differences are? I might need to tackle it soon (unrelated to blazium stuff though) and the gdextension approach is sadly a no-go for me.

Ughuuu commented 2 weeks ago

Well the solution I am proposing is to not change the code of orchestrator, but instead the build system. I added this repo that serves as documentation on how this can be done: https://github.com/Ughuuu/gdextension-to-module I also already ported godot-sandbox to module using this technique. If you wanna give it a go, there are some things that will need to be moved/ported before with this technique, or any techinque:

Aside for that, the build system will need to build static libs too (or build them the moment the static lib is done).