What is it that attracts the userbase so much. From my understanding and my opinion, its a powerful engine for creating 2D games. With great tools integrated.
For me personally, currently, nothing. (not to say it is a bad product, just that nothing currently attracts me to it)
Way back when I got into GameMaker, what attracted me to it was that it told me it allowed you to easily create cool games (without prior programming knowledge) at a cheap price and it delivered on that.
What specifically keeps people coming back to GameMaker?
It depends on person to person.
I think most people keep coming back to GM because of how easy it is to learn and stay updated on
and how easily and quickly they can create games with it (of a wide range of game genres at least).
Some people have claimed they just stick around GameMaker because they like the community around it and he support they've gotten from it.
From my understanding, people like the way it abstracts you to focus on coding your game.
Focus on game design, not the coding part, that's what you want to abstract away from.
You want to be able to focus on game mechanics, graphics, music, art, level design, story, ...
without having to wory about specifics concerning how you have to code these things,
what underlying system is used for drawing sprites on android phones,
how memory should be managed, how large integers can become, ...
I've always wondered, is GML something people love about GameMaker?
To me, yes.
Many others claim they don't like the GML part about GameMaker.
GML has many shortcomings.
However, I think it serves its purpose pretty well for most games I'm interested in (designing them quickly without worrying about implementing common functionalities such as drawing things).
It is also the language that thought me all the basics about programming (without ever needing a tutorial), so I like it for that reason too.
I am assuming there is reason why GameMaker was created with its own custom scripting language.
I don't know the reason for this, but whatever it is, the decision was made a long time ago.
Now, they just keep GML because it is so iconic for GameMaker and removing it would break all compatibility with earlier GameMaker projects.
Is it because people love being able to use 'with' statements or referencing object instances by the object name?
Even though I like these features (although the latter one has caused so many issues for other people that it might have better been implemented differently),
those are things that could be done in other languages about just as easily as in GML.
They might contribute to people liking GML, but they won't suffice themselves.
Is there any benefits to using a programming language with a integer ID based system?
It makes it so that variables only need to be able to contain 2 data types: reals and strings, which were the only data types in legacy versions of GameMaker.
GML uses weak typing and perhaps this made it easier to implement them.
You can also sometimes perform some cool tricks with ID arithmic (getting the n-th sprite given an offset in the resource tree).
In general towards the user (programmer of the game), it isn't beneficial however.
It only results in confusion when someone makes a mistake towards types (passing a sprite id instead of an object id for example)
and it doesn't add any really useful features.
Is there any benefit to referencing arguments using 'argument0', 'argument1', etc compared to other ways of dealing with arguments?
It's easier to create an editor for it.
Towards the user (programmer of the game) there is none.
Is there any benefit to only being able to globally reference scripts?
It's easier to create GameMaker this way.
Towards the user (programmer of the game) there is none.