-
Notifications
You must be signed in to change notification settings - Fork 84
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
GBEF "SDK"/Plugin #133
Comments
every time I look at flat.cpp my stomach contracts a little :/ |
How should the plugins interact with the interfaces ? Here this function changes the state variable gbe_fork/dll/steam_gameserver.cpp Lines 196 to 205 in af904d9
If we call the plugin's function, and it set it's bool* to false (we skip our own function) then this variable will not be updated.
Later, the game might call another function from the same interface like this one which also depends on the state variable gbe_fork/dll/steam_gameserver.cpp Lines 209 to 214 in af904d9
So again we call the plugin's equivalent function, but unfortunately this time it set its bool* to true (we don't skip our own function) and in this case will return a value which was never updated and doesn't really reflect the actual state of the interface.
A possible solution is to let the plugin decide whether we should skip our own interface entirely or not during initialization, for example while the game is calling this
The drawback of this solution is that devs have to either fully implement the interface or not, meaning that partial tweaks and fixes will not be possible. What do you think ? |
Ye I think that would be more beneficial. void PDK::RegisterInterface(void* interfaceMakePtr, const char* interfaceVersion);
void PDK::UnRegisterInterface(void* interfaceMakePtr); A regular maker would be // return ptr is our interface.
void* MakeMyAppList(HSteamUser hSteamUser, HSteamPipe hSteamPipe); and reg/unreg would be PDK::RegisterInterface(&MakeMyAppList,"STEAMAPPLIST_INTERFACE_VERSION001");
PDK::UnRegisterInterface(&MakeMyAppList); And inside GetISteamGenericInterface we should foreach in the List that we provide and if interface exists load that. |
Added basic for this to a PDK Branch. |
We should able to share the Settings and the base/common things. #include "gbe_fork/dll/base.h"
#include "gbe_fork/pdk/pdk.h"
DLL_EXPORT void Load_Plugin()
...
DLL_EXPORT void Unload_Plugin()
... In pdk we should be able to call those functions (load,unload) |
SSE has a Plugin Development Kit, and sdk's.
Stupid idea but what about adding our own into it?
Still requires to load plugins / dll's and the "Exports" in the file could be used to call the function.
For example steam_ini would be:
The text was updated successfully, but these errors were encountered: