• Hello [name]! Thanks for joining the GMC. Before making any posts in the Tech Support forum, can we suggest you read the forum rules? These are simple guidelines that we ask you to follow so that you can get the best help possible for your issue.

Discussion Solid and its poor implementation!

Miradur

Member
Actually I didn't want to say anything more about it, but this contribution changed my opinion:

https://forum.yoyogames.com/index.php?threads/top-down-2d-engine-for-gms2.63231/#post-379299

When I read something like that, hours, if not days, occupied with the collision. We actually have a great function called "solid".

Why do you have to deal with such things in a game construction kit? And that in the 21st century, where we're talking about a station on Mars, but I still have to program my own collisions. No, not in a high-level language, but in a game construction kit.

It's just incomprehensible to me.

Solid should simply be what it means, a block that prevents me from going on, but I still touch it. That can't be so hard for experienced, paid programmers, to implement. If you haven't clicked "solid", anyone can still prove their skills and program it themselves, but why is it deliberately difficult for beginners?

For me simply incomprehensible and I hope that this will change at some point, because especially at the beginning you should make it as easy as possible for beginners to get started.



Miradur


Btw., please implement the same for tiles as well. You could allow two tilemaps per layer, where one is inserted as "solid" (own tab or checkbox, whatever), then you have solved the problem for tile collision immediately.
 
Last edited:

Toque

Member
I don’t get the impression that gamemaker or GML is going in the direction of construction kit. It’s seems the opposite.


There are game engines that are more like construction kits but they have their own limits/ problems.

A solid attribute for a object might be useful for beginners. People might find it inflexible.

Now advanced users will tell you “you want things to compensate for your lack of effort and skill”

Tug a war. Beginners-GML-professionals.

Custom solutions give a lot more flexibility over kit style solutions. But yes it’s more complicated/ work.

Nocturne answer is better. Read below.
 
Last edited:

Nocturne

Friendly Tyrant
Forum Staff
Admin
"Solid" is legacy functionality and YYG really don't want people to use it, especially as future versions of the software will probably remove it. All it basically does anyway is move the instance to the xprevious/yprevious position before resolving the collision event, which is something you can do yourself anyway.

Why is this not being supported, and why do people recommend not using it? Well, the problem is that some things - and especially collisions - just CAN'T have a "one size fits all" solution. There are so many factors in play, like how many instances are in a collision, or do you want those instances to push each other, and is the instance on a slope, and what kind of physical reaction do you expect (bounce? slide? Stop? Friction?), etc, etc, etc... This means that any built-in solution that YYG try to add in to the product will fall short of what is required for most users. There is a phrase in English that I like for this: "Jack of all trades, master of none"... and the "solid" flag in objects is just that! It tries to do something useful for everyone without taking into account the very specific needs of each game, and as such it just doesn't work very well for anyone.

This is why GameMaker provides you with the events and the functions, but requires you to "roll your own" solution.
 

Miradur

Member
Thank you for your answers, I already knew before that it would amount to the "freedom" that programmers don't like to miss. Still incomprehensible for me, because it would work differently.

Put simply, let's say there would be a checkbox that would insert a function for me that I find difficult to program (collision for example). Then beginners would have this function ready to go and those who can program better would just program it themselves and leave the checkbox free.

It would also be nice to read something about it in the tech blog, how to do it right. But they avoid collisions with inclines as much as they avoid collisions with tiles. Mike had made a video about it once, but even that, most of them didn't make it work. So if a pro can't really communicate that, how are beginners supposed to deal with the problem?

But no matter, as already mentioned elsewhere, GM goes for me to professional programmers, so that only all can create their games simply for various consoles. For beginners, the air is getting thinner and thinner.


Miradur
 

Toque

Member
The forum has a lot of veterans. Unlikely they would support resources going towards simplifying skills they have already mastered.

But some revenue comes from new user purchases. So beginners perspectives / benefits can not be abandoned.

I don’t think your wrong. I just don’t think it’s going to happen.

It’s not the direction the engine appears to be going.
 
Last edited:

MissingNo.

Member
just CAN'T have a "one size fits all" solution.
The problem is though that the solid flag was never useful for anything, it didn't even do one thing right. Doesn't matter if you are creating a basic platformer game, maze game
or whatever you would just more often than not get stuck in the collision. I can't think of any kind of game it would actually work with because it was just that bad. It only ever worked if you used the
functions that referenced the solid flag but at that point you could just use equivalent commands that don't need the flag to do the exact same thing.
Like for example instead of using "place_free" you could just use "place_meeting"

I understand there can't be a one size fits all but I don't think he was suggesting that it should be, In fact it would probably be better if it only focused on doing one thing.
I don't see any reason it can't be a simple stop object upon colliding flag. That would cover the majority of things people would want. And people would still be able to add their own bounce
or friction code on top of that.

or do you want those instances to push each other,
Wouldn't need to account for that if they made the flag just for stopping objects. If people wanted to push objects they could then start making their own code.

and what kind of physical reaction do you expect (bounce? slide? Stop? Friction?), etc,
My proposed solution is to make the flag a very basic stop object upon colliding flag and have it paste code into the object that can then be viewed with the GML live preview
that way people can learn what it is doing and then also build off the code it adds. In fact instead of a flag it could be a special beginner friendly DnD option, that way they can
view the code and add onto it. This would also be a less intrusive method because it wouldn't be hardcoded behavior.

There is a phrase in English that I like for this: "Jack of all trades, master of none"
I would say that is a bad analogy because the solid flag was never good at anything, the saying for the solid flag should be "Jack of no trades, and master at failing"


I don't expect any of my suggestions to be used as I'm assuming they made up their mind about it. Just take it out behind the barn and shoot it. Put it out of it's misery.
 
Last edited:
Top