Which more expensive: Broadcast or Conditional?
-
I'm changing gravity every time something hits a ceiling by the ceiling broadcasting that it's been hit, change the gravity and handling conditionals for needs to change, etc, somewhere else.
But are broadcasts expensive?
Or have you done some magic with arrays/dictionaries between receivers and broadcasters so i can think of these as super fast and light and use lots and lots of braodcasts?
-
@Deeeds why bother with the broadcast? Why not just have the collide behavior in the object you are broadcasting to?
-
@iTap-Development It's just an example to make it clear that I'm considering using a LOT of broadcasting, and have already become lazy in relying on it for code organisation.
The question is not about a specific problem: I'm asking the relative cost of using broadcasts versus other approaches to organising and distributing code.
-
@Deeeds You might want to ask the developers.
I would think that a broadcast/broadcast receive would impact more than a conditional, since broadcast receive behaviours are always waiting for a message to be broadcasted to them.
If you end up getting an answer, let me know too.
-
@Kamdroid I was kind of hoping they just read these forums as a matter of course. It's not like there's much in here ;)
Except for my dribbles and rants.
I'm not so sure about the listeners actively listening. This might be just a metaphor being used. They're probably sitting in an array or dictionary that's messaged only when a "broadcast" is sent, meaning highly efficient. Possibly more so than conditionals.
boring story approaching: A friend of mine, a few years ago, spent a huge amount of time teaching me to not use ifs because he'd found them to be a bit of a drag in high frequency stuff. We were doing lots of particles, where the volume of activity was enormous, but we always wanted more. More particles = good! It was all C++ and he had some pretty tight stats on it all. Made me a believer, even if I didn't fully understand where he was headed with it all.
The bottom line was polymorphism being used correctly, I'd dare say. He is a bright guy. I'm just a designer, but it fascinated me that he'd figure how to remove ifs like they were parasites.
-
Broadcasts are really fast. They are much faster than using collisions or something like that. @Deeeds it works like you think it is.
-
@Hamed BEST NEWS TODAY! I can and will base most of what I'm doing around them, then. And use them like function/method calls all over the place. I thought this might have been one of the ways you were making them useful.
THANK YOU!!! Way to go!
-
@Deeeds The only thing i would suggest doing is leaving little comments for your self otherwise you will have a bunch of broadcasts and receives that you don't remember what they're for.
-
@Hamed Yeah, I have a Notes file with that sort of gunk. I've been meaning to request picking Event Keys operate like Behaviour On/Off where there's a long list of all possible ones, by alphabetical order, by object/original origin.
-
@Hamed Are broadcasts expensive at all? For example, in my 3D project the faces of a shape have to conform to 3 points, I’ve done this (messily) by colliding with those 3 points (they’re in a tag) and then basically getting the position on a timer of the object it collided with. Is this at all more efficient that constantly broadcasting dynamic messages?
-
@Aidan-Oxley I would think broadcast would be better. Because otherwise you have objects with collisions, but you wouldn’t need that if you didn’t use collide.
-
The only expense is having a lot of logic in the receive message side. Physics engine is much slower to do those kind of tasks.
-
@Hamed The collision happens once. The face collided with one point, the turns off that collision and moves to another point. It does this 3 times with 3 separate collision behaviours. Once it’s done, it waits until everything else has finished loading, then runs a timer on the behaviours underneath the collisions so that it can get information on those 3 objects. So this is more efficient than broadcasting a message on a timer containing an objects position right?
-
No broadcasting is still much faster. You can avoid timers and delays and collision take multiple time steps