Open RevoluPowered opened 4 years ago
First questions that pops to my mind: how should GDScript handle native types without any translation layer that is created manually when you wrap 3rd party libraries into modules/gdnative classes?
We'd most likely use something like this as a good template for the implementation:
handles all the potential cases for binding c structs correctly, which at first would be good enough to me.
There is the pinvoke method too from csharp but we probably wouldn't use it as a template, the ctypes system is so similar to gdscript it could be used as a template, and we could make further simplifications, if we don't need all the bells and whistles it has.
Another option is using an FFI (this has less performance issues with JIT compilation, should GDScript add it later) https://luajit.org/ext_ffi.html
They're always faster than using c functions from a jit compiled language. (since standard c calls to c functions are always slower when you have JIT compilation, as it interrupts the jit compilation. which was a constant source of frustration with garrysmod for example because the jit compilation would die every time you called back into the C++ code the FFI prevents this slowdown if memory serves me correctly.
Ideally we start small though, with something very simple and work from there.
Related to #830.
I'm often make NO-GAME app, so many 3rd party provide such DLL, if GDScript can implement this feature, I don't need Visual Studio or GCC anymore.
I prefer can write codes like this:
var dll = load_dll("res://dll/a.dll") # any valid path
var rs = dll.call("add", 10, 20) # in DLL, method was int add(int a, int b)
I also wish Godot can find dll in system path so I can call win32 api:
var dll = dll_load("user32.dll")
var hwnd = dll.call("FindWindowEx",null,null,null,"notepad")
dll.call("SendMessage",hwnd, 12054,0,0)
I'm often make NO-GAME app, so many 3rd party provide such DLL, if GDScript can implement this feature, I don't need Visual Studio or GCC anymore.
Same! Being able to load DLL's in this way will open a lot of creative possibilities that are not limited to standard game experiences.
@Code-Horror Please don't bump issues without contributing significant new information. Use the :+1: reaction button on the first post instead.
No. I will use Github how I wish. Don't try to tell people how to use the Internet.
@Code-Horror this sort of behavior is directly against the code of conduct in this repo (As well as common courtesy)
As I repeat, I will use Github how I wish. My comment broke no rules of Github, you're just being power hungry.
Likewise, any spamming, trolling, flaming, baiting, or other attention-stealing behavior is not welcome and will result in exclusion from the community.
For certainty, any conduct which could reasonably be considered inappropriate in a professional setting is not acceptable.
You may use it as you wish, but you must be ready to be banned for violating the rules, just behave reasonably and maturely, it's not a high bar, this kind of "you're not the boss of me" behaviour is ridiculous, you were kindly asked to behave properly, and your response is inappropriate
Then have fun being banned 👋🏻
You have to follow our rules as well as those of GitHub
I'm leaving to not fire any more notifications
Likewise, any spamming, trolling, flaming, baiting, or other attention-stealing behavior is not welcome and will result in exclusion from the community.
For certainty, any conduct which could reasonably be considered inappropriate in a professional setting is not acceptable.
You may use it as you wish, but you must be ready to be banned for violating the rules, just behave reasonably and maturely, it's not a high bar, this kind of "you're not the boss of me" behaviour is ridiculous
I broke no rules here on Github. My comment was perfectly valid and legitimate. And I will repeat for the 3rd time, I will continue to use Github in alignment with their policies as I have done.
Then have fun being banned 👋🏻
Could you tell me which one of GitHub's policies I have broken when I made my original comment?
Same! Being able to load DLL's in this way will open a lot of creative possibilities that are not limited to standard game experiences.
It brought light to issue. I have dedicated some of my own time to working on solving this issue as it would be a helpful feature for myself and others.
Now please leave me in peace.
@Code-Horror You've been asked politely to follow a policy of the Godot project. Godot is a project hosted on GitHub, and while you have to follow GitHub's policies, you also have to follow Godot's when interacting with @godotengine repositories, notably the Code of Conduct.
If you believe that you're entitled to behave in any way as long as you don't breach the GitHub Terms of Service, then you might indeed be shown the door of the @godotengine organization.
Describe the project you are working on
A game I want to publish on steam
Describe the problem or limitation you are having in your project
We can't integrate the SteamSDK with a little amount of tool setup.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
Why:
Directory structure:
Packaging:
Loading modules
Implement DLL API for standard SDK files like SourceSDK.dll
https://docs.google.com/document/d/1-bxJ0CZb6_Ceuv-SmGCO4YV-lse8NjmRQWvGFlDvL6Y/
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
Please see this document for the below points: https://docs.google.com/document/d/1-bxJ0CZb6_Ceuv-SmGCO4YV-lse8NjmRQWvGFlDvL6Y
If this enhancement will not be used often, can it be worked around with a few lines of script?
no
Is there a reason why this should be core and not an add-on in the asset library?
it is core