A recent update added extension variables, but it also removed the ability to directly change scene variables from our extensions. I think that it was an extremely useful feature, especially for extensions that are only planned to be used in 1 project.
Being able to compile big chunks of code and clumsy calculations for some of the in-game numbers, and also being able to change them for your whole project from one menu is great. Extensions dont necessarily have to be globally usable.
I suggest making an expression like SceneVariable() that would allow to use scene variables in extensions, and also making “for each element of a structure or array” work with scene variables inside of the extensions. And, of course, make the “external variables” thing work in general
I think the new feature of extension variables is great but we dont have to remove previous functionality.
I believe they are needing to access the in-scene specific or game global variables from within an extension rather than just the extensions variables. If there is still a way to do this, I cannot find it either.
Even if it’s not recommended to use it, the exact same system has been kept for compatibility and the old actions and conditions are still listed to allow users to maintain old extensions (all extensions from the repository have been migrated to the new way, so it’s something that should disappear at some point).
I haven’t checked since the most recent release, but I wasn’t able to find the external variables section when I checked a few weeks back, even when searching for external. I wonder if that’s related to OPs issue?
Edit: I just checked and am showing the external variable options are now available in search on the same extension I couldn’t before.
Separately; I would caution against removing the external variables as a concept, specifically for project-specific behaviors or functions. There is definitely going to be need to interact with game-level globals (and sometimes scene variables) for a lot of internal-use only functions.
E.g.
Control mapping will need to to be a project global variable for ensuring the correct button prompts are displayed throughout the game, but then you’ll need those same mappings in your control extension (for both keyboard/gamepad/touch) so you don’t have to put Or statements throughout your main event sheets.
You could create expressions and actions to present that information back and forth, but that is a lot of extra effort for no gain, and only serves to bloat the event sheet and source code.
There are a lot of potential ways around this scenario, but most will be less efficient than just being able to directly interact with external variables. Those will always be project specific though, and I strongly agree that extensions for the engine/in the main list should not have externals.
I guess you didn’t find it before because you didn’t have the exact labels in mind, but nothing has changed from when the new variable system was introduced months ago.
The big issue is that you need to use:
Variable(), VariableString(), GlobalVariable() or GlobalVariableString() expressions
8 actions instead of the unified one
8 conditions instead of the unified one
It’s really different to the new way variables are used know. It will confuse users when they search for the action to change a variable value and if they don’t choose the right one, I wish them good luck to understand why it doesn’t work like it should.
I wonder if it could be similarly consolidated into a single ExternalV() or ExtVariable() expression to make it closer to how the new variable system works. It’d still require stuff to be predeclared, and let folks utilize logic as they’d expect, but have it in a way that still lets it be identifiable as external.