The only problem I know about plugins is that engine currently is not capable to load libraries on iOS. I am generally uneducated in terms of how iOS works and if it is possible at all.Apple doesn't allow iOS applications published on the App Store to load external code, be it some kind of bytecode or machine code.
We could define a text file format containing only the function names
and return values that are appropriate for a stub. Could be provided by
the plugin author and the engine could automatically look for a file
with the ending .stub instead of .dll (e.g. AGSteam.stub). That way
users don't have to compile a stub library.
Well with your suggestion that the return types of the stubbed functions being restricted, it seems unlikely that a stub would do anything malicious, right? So the ability to have the stub built into the game package or run from the game directory is good. Isn't it? It seems like you might be trying to discourage this.No, not discourage, just considering the possibilities.
Can plugin functions return other types than numbers and pointers? I'm wondering if all plugins could be replaced by stubs when this type restriction is in place (different behaviour of the game aside).AGS Script does not have other return types than numbers and pointers. Well, void too.
The variant with the separate file should definitely be used because...
Radiant: there are reimplementations of Flashlight and RainSnow in the engine now so they're not the problem.Yes, I've intentionally been avoiding plugins for several years now (and doing it in AGS code instead) because of Mac/Linux compatibility.
While we sort out what to do, I've created an open-source stub for the AGSteam plugin, which was the main offender in this case (as Flashlight and SnowRain have built-in workalikes).Thank you! But how does this work, am I supposed to compile this and ship it with a Linux build of a AGSteam game?
Wait, as far as I can tell the windows Steam plugin works fine when there is no Steam installed (i.e. it just returns false on all function calls). Is that not the case on other systems? Would I need a different plugin on Linux or Mac systems?The problem here, is that the "real" plugin that contacts the Steam servers cannot be open-sourced according to Steam license.
Yes, but then you're assuming that players have sufficient programming skill to be able to recompile a stub from source code; I'm not sure if I'd be willing to make that assumption.If players don't have programming skill to build and install a program from source, they probably do not use non-standard Linux.
Cool! One of the games that one could test with is Barn Runner 5 (http://www.barnrunner.com/barn5.html), chapter 1. It uses Kweepa's AGS_OtherRoom.dll and Scorpiorus' ags_parallax.dll both of which are not ported as far as I know.Sorry, I forgot to answer.