Yoy are in fact accessing an instance variable. There is an interint global instance used for global variables and global pragmas.
O should point out using global should be very rare. Most of the time the variables are better suited to be in a system instance.
Creating an instance, with lots of different properties (instance variables) and lots of automation (step event, alarms, draw event, collision, masks, etc)
seems stupid and a waste of resources to me. I much rather store anything that isn't an instance or related to an instance inside a variable that does just that: store a value.
Here is an illustration: A 'setting' doesn't move. A setting doesn't need to be updated every step event. A setting cannot collide with another object. A setting doesn't need to be drawn. A setting is just a group of values. For that, I don't think it's worth wasting huge chunks of memory just to have 'color' and 'font' stored in an instance called 'Settings'.
To me that's as dumb and stupid as renting a house, heating it and paying electricity just to store your baseball cap in the wardrobe. Instead, I agree that most of the time you will wear the cap on your own head. But there are times where you do not need to do so, and as such you need a place where you can store it. A bag is a perfect place to put your cap when you don't wear it. You can put stuff in it, and take it back, or change it's content. Yet you don't need to pay a rent or pay electricity to keep it heated.
My illustration might not be the best, but that's how I see 'instances' vs 'variables' in GameMaker. A global variable is basically a bag that is magically always accessible, for me or for another person in the world.
A 'system instance' which has a 'hold alll the variables' goal is basically just another 'global.' prefix. It's still a global variable and is still accessible from any instances. You are just doing global variable the wrong way by creating an instance to hold them, which is, in my opinion, bad.
'globalvar' or the 'global' prefix are the "right" way of doing global variables in GameMaker no questioning that. And even if 'global' is an actual instance in GameMaker, that doesn't change the fact that I want to access a variable but it feels like accessing an instance property, which is wrong in the first place, since by definition a global variable does NOT belong to an instance, it's available to all and every instances at all time.
The notion that "global variables" should be very rare is wrong. The actual thing to keep in mind is that variables that are directly linked to an instance should not be made global. For example, instead of creating the global varaible "health_player" and "health_boss" you should instead create the instance variable "health" for each of them.
But take another example: I have dialog boxes, and each of them has a set of settings that can be accessed by name. Would you duplicate all those 'names' in every single instances?
No, I rather store them in one location which is available to all of them (that's what a global variable is for) and access it from there.
Such example refers to what I shown before: colors and fonts.
Each dialog object has a 'color' and a 'font' instance variable. But the values themself are called from ds_maps like this: COLORS[? "blue"]. That specific map position contains $FFAAAA;
Why do I need to use names to access colors? That's irrelevant, but you can check CTB on the market place to see why.
Anyways, my point here is that there are times where global variables make sense, and in those situations I don't want to store them inside another instance since that would be a very stupid waste of resources. For that same specific reason, I feel it's weird to access a variable that isn't inside an instance via the dot notation since that's exactly how you access instance variables.
My code would drastically change from this keyword removal and that might even make me stop use GameMaker. There are things which shouldn't be changed an the way global variables are currently setup in GameMaker is one of those things I really don't want to see change.
There is 'var', there is 'globalvar', that's consistent to me.
Remove one, and you should remove the other. They are a pair.
Remove only one, and you lose consistency, and make people like me unhappy.