Suggestion Batch #1

Hi I’m combining a slew of previous posts into one larger one below. I’ll be adding more as I think of them over the next hour or so.

[ New optional functionality of ‘Mailbox’ - Enqueue messages ]

Checkbox option ‘Enqueue messages’ would allow one Mailbox to receive multiple messages per frame, instead of the current functionality which I believe is more like it will overwrite an existing message with the new one, if several collide on one frame. So with this enabled, new messages would be popped onto a list, and every frame that entire list would get processed. I suggest ‘optional’, but selected by default for any new projects, because I think if this was applied retroactively to existing projects it might break some of them.

I would use this for situations like: a bullet transmits a ‘takeDamage’ message to enemy on impact, and destroys itself. But if the weapon is like a shotgun that has multiple projectiles that might impact the exact same frame, some of them don’t get processed, I believe for the reasons mentioned above.

In case it helps anyone: I’ve sorted out a little hacky workaround for this with shotguns in my project, but it’s not ideal. What I do is, on impact I change the bullets opacity to 50, zero out the velocity, then once ever 1/10th a second, each enemy checks if bullets are in proximity, and if so, count them and multiply damage by the quantity, then send all bullets a ‘flush’ message which will destroy the ones with less than 100 opacity.


[ New Parameter for Spawn/Emit/Attach: “Input Value”, also a new Component to output that Input Value ]

This would be a new input pin for the components that create new blocks, that allowed you to send that new object a parameter to start up with. Then the created object could access that value from an Input Value component. Possibly the in pin that would accept numerical output for this could track named Number blocks so you could send multiple name/value pairs at once, then access those later with the Input Value component using optional ‘named variable’ string parameter.

This would be very useful to me!


[ New Component - Age ]

A component to output the current age in milliseconds would be very useful. Especially if it could also output the maximum age this block was created with, too.


[ Use Behavior Bundles by reference with unique variants disabled ]

Currently when a Behavior Bundle is referenced on another object, it basically clones it into the layout and changes become unique to that copy. It would be great if instead it referenced that bundle and either disabled edits or made edits to everything that used the bundle, too. So if I have multiple objects that use ClassA, and i change ClassA within any of them, it changes it for all of them.


[ New Message target: Attached Objects ]

It would be great to be able to send things like ‘current health’ to attached objects like visible health bars. Attached objects could be named. Then when you add a new Message, there would be an option for ‘Send to Attached’ -> dropdown of Attached objects.

Another way I would use this is to attach gun1 and gun2 to my player, then send those commands like ‘setSkin’ or ‘setDamage’ etc.


@MattKimball Hey instead of making a ton of new discussions just make 1 with all the requests in them.

Oh ok will do thanks. Think I should combine these others into one here?

You can if you want.

@“Johnny boy” Ok I did… but it looks like I can’t remove the old ones. If any mods see this and can remove my previous 4 posts, please do, thanks.

Ok, thanks for these :slight_smile:

Some are new, and some are similar to outstanding requests.

1) Enqueue message - ironically? this used to be the mailbox behavior. It seems like some people found that behavior more confusing, and would sometimes fill up the queues and get difficult to debug behavior. This comes up occasionally though, still, so maybe it’s worth revisting again. I do have plans to try and revamp the messages in general though to make the mailboxes run on delivery instead of the following frame. I think this would actually solve the issue as well, without needing a queue, if I understand correctly

  1. Input Value I like this idea, although I don;t think it would even need a new input necessarily - it could use the value sent to the “spawn”/“emit”/“attach” input I think? Anyway, the missing bit I think is how to make it obvious where to capture that incoming value. I think overloading the Input block may not be completely clear. Maybe this would warrant a new block of some sort? I need to think about this one a bit more.

  2. Age Are you just asking for the current frame of the game? Basically just what you would get if set an Always input connected to a Number increment? Or do you mean something else.

  3. Behavior References - I’ll need to look at what the implementation complexity would be here

  4. Message Target -> Attached Objects - This one has been requested a lot, and is in the queue :slight_smile:
    The Trello card is here: https://trello.com/c/3CERrRAr/214-send-to-all-attachments and you can see the previous thread (along with a few other good suggestions by @Latif) here: https://forum.flowlab.io/discussion/7706/a-few-things-i-want-that-will-help-me-a-lot-with-making-the-graveyard-2

I’m not sure it would be practical to have a “select attached object” dropdown, since the attached objects would not be spawned & would not exist while in the editor, but maybe I misunderstand what you mean there? Sending to all attached objects would be pretty straightfoward, and I think you could still just tailor the message to the specific object you want to trigger, even if it gets sent to all. E.g: “gun1-setSkin” or something?

  1. Ha, well for now all I do is setup a 0 time repeating timer that increments a variable and based on that variables value, I send distinct messages that would otherwise collide, spreading it all out over a few frames. Works for me!

  2. Yeah just using the trigger pin would be fine for an input value, any way to send it any sort of startup info (I even tried overloading the ‘emit’ angle to act as this type of value but it didn’t work for me). Then to retrieve this value from within the spawned object, you could have a new component like ‘Startup Info’ or ‘Spawn Value’ or something like that. Temporary workaround - immediately before spawning block, set a ‘Save’ block value like ‘startupParam’, then in new block, load that same value and use it, then I also have it clear that value out afterwords but that’s optional.

  3. Current frame of game would be good but that’s easy enough to setup already. That’s not exactly the age in milliseconds though. Also what I was looking for is more like the age of this particular block, specifically for particle effects that adjust themselves over their lifespan. Ideal output of this block for me would be: current integer age in milliseconds of this block, maximum age in same format (for blocks created with ‘Expire in X 1/10ths of a second’ parameter). Ultimately I’d almost always be dividing the first by the second to form a ‘current lifespan ratio’ value, so a pin for that might be nice too? Not really necessary, an expression can do that fine.

  4. Awesome, can’t wait. The idea of the ‘select dropdown’ would be that first you’d have to add a ‘Name’ parameter to those Attacher’s, like the way you can name Number blocks now. Then those names would be in the dropdown.

Thanks for your response, and all your hard work on this really neat project!

I love the fact that you joined yesterday and now your here with all these cool ideas! (Honestly I think your an alt of someone but how do I know?)

All of these ideas are great btw! Glad grazer noticed this!

@ShadowAxeKid Hey thanks! No, not an alt here, I’ve actually been using Flowlab for the last month or so, trying to put together some ‘Lets Dive in Game Dev’ videos for my channel on Youtube. Would you like to see what I’m making so far? Check out ‘YeeTroid’, it’s not really ‘playable’ yet but its fun anyways, lotta guns and powerups and stuff to do while I get the level design put together.

Usually I work in Unity but people are intimidated away from trying it because of how much it takes to install and run it, so I thought Flowlab would be a fun way for people to try out the gamedev life without needing a super computer and half their hard drive.

@MattKimball - the latest release has the “Send to Attached” option in the Message panel.

@grazer That’s great man, I’m sure it’ll add a lot of new possibilities