GM 2.3.2.556 bug. Sprite's Broadcast Message does not work!

Status
Not open for further replies.

luvsuper

Member
After today's update Broadcast Message event suddenly stopped working. My games mechanics became broken D:
A Broadcast Message which sprite raised up didn't caught by object's event Broadcast Message. What can I do?

UPD.: Debugging showed me problem. When sprite is animating with image_speed, all works perfectly. But if I animate sprite "by hand", only first frame broadcast message will raised up. Not 2nd frame's, not 3rd etc.
UPD2.: "By hand" means I assign image_index in code at some certain moment.
 
Last edited:

luvsuper

Member
1.jpg
Here we have 6 different messages on the sprite. Will raised up only one. First.
Then If I delete 1st, rest of them also not raised.
Yesterday (before I updated to headed version of GM) this worked perfectly. But not now. I think this is a GM's bug.

I updated my original post with some details.
 

rIKmAN

Member
After today's update Broadcast Message event suddenly stopped working.
This sounds like it has to be related to what is mentioned in the Release Notes specifically mentioning broadcast messages and image_index.
Changes to image_index behaviour regarding Sprite Broadcast Messages
  • Following recent GMC feedback, modifying image_index manually to set new values will not modulo the resulting image_index value until the following frame (as 2.2.5-and-older used to do it)
  • Now, you will NOT get any sprite broadcast message(s) if you set image_index directly
  • Animation End events will still be fired as before if you set image_index to the final frame or beyond, there's no change here
 

rIKmAN

Member
Aaaand. How can I trigger that event manually? What dev gave us instead?
From the wording it sounds like you can't modify the image_index manually if you want them to fire, however I'm not 100% sure as I've never used them other than testing them in the first version they were added a while back.

Maybe someone who uses them can advise, or you could fire a ticket over to support and ask them what best practice they suggest since the change was made in the latest update.

It does seem strange that if you manually set the image_index to 3 and there was a broadcast message on 3 that it wouldn't fire, but it sounds like it's also related to the modulo and fractional image_index values behaviour.
 

luvsuper

Member
Every day I curse myself for choosing this peace of trash engine. But development went too far to migrate to Unity. Thanks anyway dudes!
 

luvsuper

Member
I cant even imagine how that guys writing code for GM. Did you read the docs? Disgustedly written code of examples, many typos in general text. Guys just don't give a crap. Excuse my mood but I've come from larger communities of "big" software and languages (Python, Java, etc) and being shocked by these guys. GM is a good idea but nightmarish realization. And "don't like don't use" not an option. I hope after GM has been bought by Opera Co-Founders developers will stop beating around a bush and fix the engine. By the way I've paid some coins for it :D
 
Last edited:

Nidoking

Member
If you're manually setting the image_index to 3, why do you need a broadcast message to tell you that you've set the image_index to 3? Why not just do the thing you do when the image_index is 3, because you know it's 3, because you just set it to 3?
 

rIKmAN

Member
I cant even imagine how that guys writing code for GM. Did you read the docs? Disgustedly written code of examples, many typos in general text. Guys just don't give a crap. Excuse my mood but I've come from larger communities of "big" software and languages (Python, Java, etc) and being shocked by these guys. GM is a good idea but nightmarish realization. And "don't like don't use" not an option. I hope after GM has been bought by Opera Co-Founders developers will stop beating around a bush and fix the engine. By the way I've paid some coins for it :D
Instead of bemoaning all the typos and errors you say you've found in the docs, you could take a little time to report them so that they get fixed and help contribute to the improvement of them.

I'm not gonna say "don't use it then" as you are entitled to your opinion (although personally if I thought something was as bad as you seem to think then I'd be looking elsewhere), but what I will say is that the full online manual and code examples are available online for anyone to see, meaning you could should have looked through them before buying a licence to see if they were up to your expected high standards.

Either way, venting on here that the engine and docs are trash isn't going to do much good, like I said maybe put that energy into reporting bugs and documentation errors and help improve things for everyone.

Anyway, best to send a support ticket to YYG asking the question about the Broadcast Messages and see what solution they offer as a fix or workaround.
 

luvsuper

Member
Instead of bemoaning all the typos and errors you say you've found in the docs, you could take a little time to report them so that they get fixed and help contribute to the improvement of them.

I'm not gonna say "don't use it then" as you are entitled to your opinion (although personally if I thought something was as bad as you seem to think then I'd be looking elsewhere), but what I will say is that the full online manual and code examples are available online for anyone to see, meaning you could should have looked through them before buying a licence to see if they were up to your expected high standards.

Either way, venting on here that the engine and docs are trash isn't going to do much good, like I said maybe put that energy into reporting bugs and documentation errors and help improve things for everyone.

Anyway, best to send a support ticket to YYG asking the question about the Broadcast Messages and see what solution they offer as a fix or workaround.
You are right, tho. Been a couple of thoughts :D
 

luvsuper

Member
If you're manually setting the image_index to 3, why do you need a broadcast message to tell you that you've set the image_index to 3? Why not just do the thing you do when the image_index is 3, because you know it's 3, because you just set it to 3?
To separate responsibility layers in code. To not dealing damage where I playing animation.
 
If you are going to manually set image_index at any point in this sprite, it's not really a good idea to use broadcast messages. To me, they are more to "sync" actions with a complete animation, (eg. throw a ball on the good frame, spawn hitboxes and hurtboxes, etc.).
I guess their thinking was that if you're to manually set the index, you probably want manual control over the behavior too.
And as for the other things about the GML and the manual... that's kind of what I like about GMS, honestly, it's evolving, growing, and all this is thanks to the people here and at Yoyo who love the app so much they just want to make it better. I can't really see my opinion really taken into consideration by Microsoft for C#10 even if I have an amazing idea, wheras all my tickets for GMS (bugs and suggestions) have at least been read by some staff over at Yoyo, and probably even discussed in some sort or form in one of their meetings. It has never been closer to "the big leagues", and the evolution from just a couple years back is quite impressive.
On top of that, an engine is not like a wife, no one will ever say **** if you use more than one, just use the best one for the job you want to do.
 

luvsuper

Member
If you are going to manually set image_index at any point in this sprite, it's not really a good idea to use broadcast messages. To me, they are more to "sync" actions with a complete animation, (eg. throw a ball on the good frame, spawn hitboxes and hurtboxes, etc.).
I guess their thinking was that if you're to manually set the index, you probably want manual control over the behavior too.
And as for the other things about the GML and the manual... that's kind of what I like about GMS, honestly, it's evolving, growing, and all this is thanks to the people here and at Yoyo who love the app so much they just want to make it better. I can't really see my opinion really taken into consideration by Microsoft for C#10 even if I have an amazing idea, wheras all my tickets for GMS (bugs and suggestions) have at least been read by some staff over at Yoyo, and probably even discussed in some sort or form in one of their meetings. It has never been closer to "the big leagues", and the evolution from just a couple years back is quite impressive.
On top of that, an engine is not like a wife, no one will ever say **** if you use more than one, just use the best one for the job you want to do.
Thank you! GM is not a wife! I got it :D But I not sure that none of devs even read your tickets. I know a little about working on a big products and nobody will fix bugs by your tickets. They have strictly ordered issues/features list and they work on it. But if I can wish just a one wish I'd wish to have scopes of a name binding. There are many wishes, but I realize that none of them will become true in a couple of years at least.
 

chamaeleon

Member
Thank you! GM is not a wife! I got it :D But I not sure that none of devs even read your tickets. I know a little about working on a big products and nobody will fix bugs by your tickets. They have strictly ordered issues/features list and they work on it. But if I can wish just a one wish I'd wish to have scopes of a name binding. There are many wishes, but I realize that none of them will become true in a couple of years at least.
Then you should read the release notes more carefully and see how some of the entries correspond to user reported bugs. You may not influence importance, but saying they won't fix bugs you report is not correct.
 
Thank you! GM is not a wife! I got it :D But I not sure that none of devs even read your tickets. I know a little about working on a big products and nobody will fix bugs by your tickets. They have strictly ordered issues/features list and they work on it. But if I can wish just a one wish I'd wish to have scopes of a name binding. There are many wishes, but I realize that none of them will become true in a couple of years at least.
Well, this is the thing. Yoyo IS small-time. Just the Unity office here in Montreal employs more people than Yoyo worldwide. Your tickets do get through, I have a bunch of emails proving it.
Plus, you have the *chance* of having your issues seen right here by the top Yoyo staff. And what they don't do that we want done is not because they don't really WANT to, but more related to the amount of available resources to them.
With the whole Opera thing, they started hiring, so I'd stick around a little bit still before calling it quits for good, you could be surprised with what they come up next. We're all kind in the dark with long-term stuff, tho.
 

luvsuper

Member
Well, this is the thing. Yoyo IS small-time. Just the Unity office here in Montreal employs more people than Yoyo worldwide. Your tickets do get through, I have a bunch of emails proving it.
Plus, you have the *chance* of having your issues seen right here by the top Yoyo staff. And what they don't do that we want done is not because they don't really WANT to, but more related to the amount of available resources to them.
With the whole Opera thing, they started hiring, so I'd stick around a little bit still before calling it quits for good, you could be surprised with what they come up next. We're all kind in the dark with long-term stuff, tho.
Maybe. More likely I agree with you than not.
 

Nocturne

Friendly Tyrant
Forum Staff
Admin
Thank you! GM is not a wife! I got it :D But I not sure that none of devs even read your tickets. I know a little about working on a big products and nobody will fix bugs by your tickets. They have strictly ordered issues/features list and they work on it. But if I can wish just a one wish I'd wish to have scopes of a name binding. There are many wishes, but I realize that none of them will become true in a couple of years at least.
Just like to point out that I worked for YYG for 9 years, and EVERY SINGLE TICKET is acted on and thought about. All feature requests are considered, all annoyances are cataloged, and all bugs are reviewed, prioritized and fixed (even if it takes some time). YYG only has a staff of about 50 or so people working on the product, and only about 10 of them work on the engine/IDE, while the rest are split between QA, Marketing, Community, Management, etc.... So, it's a tiny company compared to the likes of Unity (2000+ employees!) and it's one that works very hard to create the best product it can, while balancing the needs and wants of the user with the requirements of a business as well as their own ideas for the product. Lots of new features get added at user request, and if it's a small one then it'll be added sooner than large ones, but they are all considered, I assure you.

Oh, and this: "Did you read the docs? Disgustedly written code of examples, many typos in general text. Guys just don't give a crap." - That's me you're disrespecting here, as every single word of documentation that exists for GM from the last 9 years was written by me and pretty much only me ;) . Yes, there are typos, and yes some of the code examples are bit crap, but you try writing 1000+ code examples that are generic, simple, make sense, work, and actually teach something! And at the same time write tech blogs, tutorials, help-desk articles, udpate the manual (hell, re-write the manual, twice!!!) etc etc etc... Also, note that the person you're saying "doesn't give a crap" loves GameMaker so much that even after leaving the company I'm still admin of their forums and promoting their product. Why? Because I love GameMaker, I love YoYo Games, and love this Community, as do the people working on the product.

PS: I understand that you were speaking from a place of anger, and I'm not really taking your comments personally!!! I just think it's worthwhile understanding a little about the company and the way they work, and also giving my own experience as a point of reference for the general feeling of everyone that develops GMS. 😁

PPS: BTW, the nine-slice docs and animation curve docs are not by me as I'd left YYG before they were added... So blame @matharoo for any typos or crap code examples in them (and from now on)! Credit where credit's due!
 
Last edited:
Oh, and this: "Did you read the docs? Disgustedly written code of examples, many typos in general text. Guys just don't give a crap." - That's me you're disrespecting here, as every single word of documentation that exists for GM from the last 9 years was written by me and pretty much only me ;) . Yes, there are typos, and yes some of the code examples are bit crap, but you try writing 1000+ code examples that are generic, simple, make sense, work, and actually teach something! And at the same time write tech blogs, tutorials, help-desk articles, udpate the manual (hell, re-write the manual, twice!!!) etc etc etc... Also, note that the person you're saying "doesn't give a crap" loves GameMaker so much that even after leaving the company I'm still admin of their forums and promoting their product. Why? Because I love GameMaker, I love YoYo Games, and love this Community, as do the people working on the product.
Can't Like twice, so I Quote. Plus, I've never seen you shy away from a fix or a possible improvement in the docs when it was brought to your attention.
People often don't realize you just can't have it fast and have it perfect at the same time, it's all a matter of how much time, money and people are available. We are now in a time where you can just push an update at the snap of your fingers, so it's sort of natural that stuff is constantly evolving, changing around, and is probably not perfect at launch.
 

luvsuper

Member
Just like to point out that I worked for YYG for 9 years, and EVERY SINGLE TICKET is acted on and thought about. All feature requests are considered, all annoyances are cataloged, and all bugs are reviewed, prioritized and fixed (even if it takes some time). YYG only has a staff of about 50 or so people working on the product, and only about 10 of them work on the engine/IDE, while the rest are split between QA, Marketing, Community, Management, etc.... So, it's a tiny company compared to the likes of Unity (2000+ employees!) and it's one that works very hard to create the best product it can, while balancing the needs and wants of the user with the requirements of a business as well as their own ideas for the product. Lots of new features get added at user request, and if it's a small one then it'll be added sooner than large ones, but they are all considered, I assure you.

Oh, and this: "Did you read the docs? Disgustedly written code of examples, many typos in general text. Guys just don't give a crap." - That's me you're disrespecting here, as every single word of documentation that exists for GM from the last 9 years was written by me and pretty much only me ;) . Yes, there are typos, and yes some of the code examples are bit crap, but you try writing 1000+ code examples that are generic, simple, make sense, work, and actually teach something! And at the same time write tech blogs, tutorials, help-desk articles, udpate the manual (hell, re-write the manual, twice!!!) etc etc etc... Also, note that the person you're saying "doesn't give a crap" loves GameMaker so much that even after leaving the company I'm still admin of their forums and promoting their product. Why? Because I love GameMaker, I love YoYo Games, and love this Community, as do the people working on the product.

PS: I understand that you were speaking from a place of anger, and I'm not really taking your comments personally!!! I just think it's worthwhile understanding a little about the company and the way they work, and also giving my own experience as a point of reference for the general feeling of everyone that develops GMS. 😁

PPS: BTW, the nine-slice docs and animation curve docs are not by me as I'd left YYG before they were added... So blame @matharoo for any typos or crap code examples in them (and from now on)! Credit where credit's due!
Oh dude! :D I like your words and I want to say sorry if offended you. I respect your work and clearly see how hard can it be to describe a lot of features alone. But I don't know how many peeps are working hard on the product I merely say facts. You can ban me, you can kick me out, but it is what it is. I cant say I like GM as a platform. I cant say I like GM as IDE (oh my god no). But I can say I like community and people who do rule and constitute this community.

And for holy balls can you tell me why the hell I cant use "if 15 < x < 25"-like expressions? :D

UPD.: If GM'd be open source project I'd like to participate it to make it better. :)
 
And for holy balls can you tell me why the hell I cant use "if 15 < x < 25"-like expressions? :D
You gotta do with if( (x>15) && (x<25) ) {...} for that... every language got it's thing that makes you go "huh?!?", but I'm just VERY glad GML doesn't use indentation as flow of control...making even Pong in something like Pygame is making me mad, so it's about personal preferences too...a lot of people started with GML as their first taste of programming, I guess it's not that bad to learn the basics too.
 

Roldy

Member
And for holy balls can you tell me why the hell I cant use "if 15 < x < 25"-like expressions? :D
I'd be curious to know which language does interpret that expression as you intend. I'm sure there is one. What do they categorize that operator as; its not Unary, Binary or Tertiary... its like a 'parallel' operator ??
 

chamaeleon

Member
I'd be curious to know which language does interpret that expression as you intend. I'm sure there is one. What do they categorize that operator as; its not Unary, Binary or Tertiary...
Clojure does, as does probably other lisps, but it has been too long since I've used others.
Code:
(if (< 15 x 25)
  (println "Yes")
  (println "No"))
Not limited to just three arguments, more can be used to check whether the arguments are monotonically increasing or decreasing (or equal in the case of <=, etc.)
 

Roldy

Member
Clojure does, as does probably other lisps, but it has been too long since I've used others.
Code:
(if (< 15 x 25)
  (println "Yes")
  (println "No"))
Thanks. I'll look at that later. Not quite the same form as OPs but close enough.
 

luvsuper

Member
You gotta do with if( (x>15) && (x<25) ) {...} for that... every language got it's thing that makes you go "huh?!?", but I'm just VERY glad GML doesn't use indentation as flow of control...making even Pong in something like Pygame is making me mad, so it's about personal preferences too...a lot of people started with GML as their first taste of programming, I guess it's not that bad to learn the basics too.
Oh nice! Let's do something like this: if (x >> (0x1001 || y) ^ (0b1222 ^ 100 << y)) {} Leeeeet's gooooo :D And then dive into C. Back in the days...
Personally I don't like GML at all. It is like JS but much worse. At least (but not last) this language don't force you to strictly (or close to) structurate your code. In the result we have worst code sheets I've ever seen in my career (about 12 years).
I prefer to not use semicolon in GML. Literally useless prescription for this language in this timeline of universe.

UPD: And check out operators priority. You code doesn't need round brackets in your example. All kinds.
UPD2: And for god sake please stop using &&. Use "and", you write code for other peeps, not for computadora. Eighties is past now.
 
Last edited:

luvsuper

Member
I'd be curious to know which language does interpret that expression as you intend. I'm sure there is one. What do they categorize that operator as; its not Unary, Binary or Tertiary... its like a 'parallel' operator ??
Looks like you didn't learn others. You should try. You'll like it!
 

chamaeleon

Member
UPD: And check out operators priority. You code doesn't need round brackets in your example. All kinds.
Check the manual. GML does not currently have a definite priority specified for operators and explicitly states that different export targets may yield different results. Yes, you get away with it most of the time, but there is a possibility you will be bitten by it.
 
UPD: And check out operators priority. You code doesn't need round brackets in your example. All kinds.
Oh man, lots of things like semicolons, parenthesis and nullchecks, you're never too careful with, ESPECIALLY when exporting to YYC. It doesn't have debug mode, so extra-careful is how I do it, and rarely, if ever, have compatibility issues with that. Don't take my word for it, tho, these things are better learned when you **** up a whole project ;)
 

luvsuper

Member
Check the manual. GML does not currently have a definite priority specified for operators and explicitly states that different export targets may yield different results. Yes, you get away with it most of the time, but there is a possibility you will be bitten by it.
Sadly this is true. Well, no risk, no reward.
 

luvsuper

Member
Oh man, lots of things like semicolons, parenthesis and nullchecks, you're never too careful with, ESPECIALLY when exporting to YYC. It doesn't have debug mode, so extra-careful is how I do it, and rarely, if ever, have compatibility issues with that. Don't take my word for it, tho, these things are better learned when you **** up a whole project ;)
If I will do, I write message personally to you :D And tell you a crucial story about my Project Titanic!
 

Roldy

Member
Got any kindling? I'm all out.
So far this is my favorite part:

Did you read the docs? Disgustedly written [...] Guys just don't give a crap.
Then we have:

Oh nice! Let's do something like this: if (x >> (0x1001 || y) ^ (0b1222 ^ 100 << y)) {} Leeeeet's gooooo :D And then dive into C. Back in the days...
Personally I don't like GML at all. It is like JS but much worse. At least (but not last) this language don't force you to strictly (or close to) structurate your code. In the result we have worst code sheets I've ever seen in my career (about 12 years).
I prefer to not use semicolon in GML. Literally useless prescription for this language in this timeline of universe.
Its like someone is writing the way Robin Williams spoke; little text, big text, parenthetical text, ellipse, emotes.
 
Check the manual. GML does not currently have a definite priority specified for operators and explicitly states that different export targets may yield different results. Yes, you get away with it most of the time, but there is a possibility you will be bitten by it.
Parenthesis are what take away ALL possible ambiguity in the order of operation, in ALL languages I know. They don't bite, I never got why people shy away from them.
 

chamaeleon

Member
Parenthesis are what take away ALL possible ambiguity in the order of operation, in ALL languages I know. They don't bite, I never got why people shy away from them.
Adding them should be a matter of code clarity or overriding default behavior, it should not be due to undefined semantics.
 
Yeah, honestly I find code unreadable if it doesn't have proper parenthesis.
yeah man, just a couple of clever whitespace around them makes them super readable, if you ask me. I mean even the "complicated ones" are easy enough to decipher with IDE highlighting
GML:
if (  ((...) || (...)) && ((...) || (...))  ) {...}
 

Roldy

Member
yeah man, just a couple of clever whitespace around them makes them super readable, if you ask me. I mean even the "complicated ones" are easy enough to decipher with IDE highlighting
GML:
if (  ((...) || (...)) && ((...) || (...))  ) {...}
Your example is basically how I tend to write. Which is as close to English or other natural language. Meaning spaces after punctuation (operators), as well as a space before opening paired punctuation; parentheses, brackets etc...
 

Nidoking

Member
You can multi-line and indent complicated conditional expressions like you multi-line and indent anything else, to clarify which bits relate to what.
 

luvsuper

Member
yeah man, just a couple of clever whitespace around them makes them super readable, if you ask me. I mean even the "complicated ones" are easy enough to decipher with IDE highlighting
GML:
if (  ((...) || (...)) && ((...) || (...))  ) {...}
Bad practice to insert some "readable" spaces in your code. Look at least to one other language guideline or PEP. This is a pathetic try to seem be like: Oh, I write code as big programma. You originally doesn't need to write such constructions: don't make problem for yourself, and it won't need to resolve it. And please stop doing this way:
GML:
var a     = 1;
var bbb   = 2;
var cc    = 3;
No more readable than:
GML:
var a = 1;
var bbb = 2;
var cc = 3;
Don't be noob :D

Your example is basically how I tend to write. Which is as close to English or other natural language. Meaning spaces after punctuation (operators), as well as a space before opening paired punctuation; parentheses, brackets etc...
Not even close to natural language:
Code:
if (  ((...) || (...)) && ((...) || (...))  ) {...}
This is close:
GML:
if (... or ...) and (... or ...) {...}
Parenthesis are what take away ALL possible ambiguity in the order of operation, in ALL languages I know. They don't bite, I never got why people shy away from them.
No. Parenthesis is a sort of visual junk in code. Same as commentaries. This is needful evil but no more. You should level up your skills, dude. Learn how code and format popular repos their community. Other than GML repos. There is an actually bad code 99.9%. Go read some style guides from Google about Go and Java. Learn Python's PEP8. And you'll see how you are wrong.
 
You do realise that the end user can't see your code right? Doesn't matter how elitist you are about your code, you will never reach the success of Toby Fox, who is pretty widely known as a not-so-great coder. Honestly, the snob factor is off the charts; take a piece of humble pie, code however you want but leave others to code how they want, unless they are working directly under you and then, and ONLY then, do you get to set the style guidelines.
 

luvsuper

Member
You do realise that the end user can't see your code right? Doesn't matter how elitist you are about your code, you will never reach the success of Toby Fox, who is pretty widely known as a not-so-great coder. Honestly, the snob factor is off the charts; take a piece of humble pie, code however you want but leave others to code how they want, unless they are working directly under you and then, and ONLY then, do you get to set the style guidelines.
:D Is it a joke?
 
No. Parenthesis is a sort of visual junk in code. Same as commentaries. This is needful evil but no more. You should level up your skills, dude. Learn how code and format popular repos their community. Other than GML repos. There is an actually bad code 99.9%. Go read some style guides from Google about Go and Java. Learn Python's PEP8. And you'll see how you are wrong.
Soooo.. am supposed to drop my university teachers (most of whom are doctorate in CS) and reference books for Google and you?!?
Can I see your resume and/or any sort of portfolio, before I commit to a move, please?
 
Status
Not open for further replies.
Top