[SUG] Visual SFX

Started by jkapp76, March 14, 2023, 03:44:22 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Tygerboi

I am liking the ideas put forward here by Herby and others.  I did find the "chink" vfx very useful in the past when I have played WinLemm and SLT with the sound off - for example, in the living room whilst the children are watching TV, if there's also a conversation going on in the room, but could also maybe be if SLX was played whilst in a public location such as on public transport, a hospital waiting room, etc.


I didn't think the "chink" text looked too bad.  Maybe if text vfx were implemented, there could be an option to either have them turned off (default), turned on on their own, or turned on with symbol vfx, although the last option may not work very well (having both activated) unless the symbol vfx that had equivalent text vfx were disabled if both were activated.  That sounds like it  would be very fiddly though, so options for either text, or symbol or none, would be the best solution?


That idea for off-screen vfx to the left and right of the screen is fab!  Could be very useful for sound-off/hard-of-hearing situations,  The only thing that could be an issue is the vfx obscuring what is occurring on the viewable screen area.  For instance, if a builder was building a bridge near the edge of the screen whilst another builder was nearing the end of the 12-brick run off the screen on the same side, and there was also other on-screen activity going on that produced vfx, it could all start to get too cluttered/confusing.  One way around that might be to have different colour vfx for off-screen and on-screen (as possibly implied by one of the screen mock-ups).
It might be pretty cool too if, for the builder vfx, if three bars would appear when three bricks remain, two bars, when two, one when one, then the exclamation mark when the builder is about to give up and walk on.
Is there really any point in a "Let's Go" vfx?  It's already visually indicated when lemmings start to fall out of the entries because you can see lemmings falling out of them ;)  Still, if it's optional and not too difficult to implement alongside other vfx, then why not, I guess.


The timing issue for off-screen effects seemed to work just fine in WinLemm and SuperLemminiToo, although in both cases they are only audio not visual.  Does having the visual element as well make the timing process much more difficult, then? 

WillLem

#16
Quote from: Tygerboi on April 25, 2024, 02:10:52 PM
I didn't think the "chink" text looked too bad.  Maybe if text vfx were implemented, there could be an option to either have them turned off (default), turned on on their own, or turned on with symbol vfx

Text, symbols or none could work, this is a good idea. Of course, it would always be possible to swap out the graphics for whatever you like anyway, but maybe this is one to support at base level for accessibility reasons. It should only be a small handful of files anyway.

Quote from: Tygerboi on April 25, 2024, 02:10:52 PM
That idea for off-screen vfx to the left and right of the screen is fab!  Could be very useful for sound-off/hard-of-hearing situations,  The only thing that could be an issue is the vfx obscuring what is occurring on the viewable screen area.

Definitely worth considering, particularly if it ends up being very difficult (or, not at all possible) for the game to "know" whether something is happening "off-screen", or to draw graphics to an overlaid layer (which doesn't currently exist, and would eat up rendering resources).

Perhaps the hints could be displayed at the top of the game window, in the centre, with an arrow pointing left and right, something like this:



Or, more preferable, we could even use the panel display (this is coming in handy for a lot of things recently!):



Obviously, this would temporarily obscure the display, but the likelihood is that whatever is happening to prompts the hint is more important anyway, and we can always make them clickable-to-stop-showing.

In fact, one very large benefit to using the panel is that we wouldn't need another rendering layer; this might end up being the way to go with it.

Quote from: Tygerboi on April 25, 2024, 02:10:52 PM
It might be pretty cool too if, for the builder vfx, if three bars would appear when three bricks remain, two bars, when two, one when one, then the exclamation mark when the builder is about to give up and walk on.

I like the idea, but let's keep it simple to begin with (i.e. the same graphic each time) and see how necessary this is.

Quote from: Tygerboi on April 25, 2024, 02:10:52 PM
Is there really any point in a "Let's Go" vfx? ...  Still, if it's optional and not too difficult to implement alongside other vfx, then why not, I guess.

The only two that I would consider necessary from an accessibility point of view are the Builder/Stacker/Platformer alert, and a lemming death that might have happened off-screen. All others are purely cosmetic. At some point I'll get a list together of the various sound cues that might need Visual SFX and we can decide what to do about each.

Quote from: Tygerboi on April 25, 2024, 02:10:52 PM
Does having the visual element as well make the timing process much more difficult, then?

Not really, it's essentially the same process of passing a message per-lemming to cue the graphic. I understand a bit better now how things work than when I first attempted to implement this, so my next attempt should be more successful.

In fact, in order to bring this feature closer to something that feels manageable, I'll go ahead and make the call that off-screen hints will be shown in the panel area. This will greatly simplify the feature; we already have code to get the Lemming's position, and we already have code to draw a message to the panel.

jkapp76

I think the hearing impaired would appreciate a verbose mode that includes Let's go and Yippee as well. If it's all going in the panel anyway.

I prefer a nice bright contrast myself, like a yellow or bright orange for the text.

Will the text just stay for a couple seconds and then disappear?
...Jeremy Kapp

WillLem

Quote from: jkapp76 on April 26, 2024, 03:36:34 PM
If it's all going in the panel anyway.

I'd suggest that only the "off-screen and vital" stuff should go in the panel display - everything else can simply be displayed on-screen adjacent to the relevant lemming/item as it is in WinLemm/SLToo.

Quote from: jkapp76 on April 26, 2024, 03:36:34 PM
I prefer a nice bright contrast myself, like a yellow or bright orange for the text.

I dislike the WinLemm ones tbh, but I'm happy to use the same colour scheme and design some new ones. You can always swap the graphics for the WinLemm ones if preferred.

Quote from: jkapp76 on April 26, 2024, 03:36:34 PM
Will the text just stay for a couple seconds and then disappear?

Yes. And, if in the panel, it will be clickable-to-remove.

WillLem

#19
Well, I love a good spreadsheet so here's what we can possibly do for each of the sound cues :lemcat::

Updated table is here.

Tygerboi

#20
Sorry for replying this way, but I've been having problems replying to WillLem's reply on 26/04/2024 with it shrinking the text size of my responses down to about size 1, so is only readable at 500x zoom!  Also, the preview button/Alt-P doesn't actually show me a preview.
Anyway, on with my reply:

Quote from: WillLem
I'd suggest that only the "off-screen and vital" stuff should go in the panel display - everything else can simply be displayed on-screen adjacent to the relevant lemming/item as it is in WinLemm/SLToo.

I agree with that, as the on-screen ones will be harder to miss, and it would be helpful having them over the relevant lemming.

Quote from: WillLem
Quote from: jkapp76
Will the text just stay for a couple seconds and then disappear?

Yes. And, if in the panel, it will be clickable-to-remove.

Why click-to-remove the panel display messages?  Wouldn't this potentially cause confusion if, say, a builder off-screen starts to run out of bricks so a message is generated but then stays there until the message is clicked, but you also have initiated another builder or two elsewhere that may happen to be off-screen, and you have the sound off, how will you be able to tell whether the visual prompt in the panel is an old one that you forgot to click to clear, or a current one that needs immediate action?  Also, would there ben enough panel space for multiple messages with directional indicators to be displayed simultaneously?  All of these off-screen activities that need prompts are all time-sensitive in that you have to either let the lemming go or else reassign a task within 3-5 seconds, so the warning prompts might as well also only be displayed for 3-5 seconds, like their on-screen counterparts.  Having to remember to click off messages during the heat of the moment is also a "passive" (i.e. doesn't directly affect the gameplay) player task that could result in missing the timing for assigning a lemming skill at exactly the right moment, or something along those lines, unless the pause button was extensively used.  Which reminds me - if you have a visual prompt on-screen over a lemming (e.g. "chink!") and the pause button is pressed whilst its on-screen, will that also stop the message disappearing until the pause is released, or will it still time-out and disappear?  I'd prefer the first option - pause game also pauses on-screen/panel message time-out countdown - as it could potentially help with planning how to complete a level.  It may also be useful for taking screenshots.

WillLem

Quote from: Tygerboi on May 15, 2024, 11:44:20 AM
I've been having problems replying

Yes, I noticed this. I've taken the liberty of editing the affected posts for readability for now, but definitely post about it in Site Discussion if it continues (it seems to only be a recent thing for you?).

Quote from: Tygerboi on May 15, 2024, 11:44:20 AM
Also, the preview button/Alt-P doesn't actually show me a preview.

Again, probably something to mention in Site Discussion if you're having regular issues with it. In particular, we could do with knowing what computer/phone/etc & browser you're using to navigate the Forums, as it may be a browser-specific issue.

Quote from: Tygerboi on May 15, 2024, 11:44:20 AM
Why click-to-remove the panel display messages? Wouldn't this potentially cause confusion ... how will you be able to tell whether the visual prompt in the panel is an old one that you forgot to click to clear, or a current one that needs immediate action?

I should probably have been clearer about that. I meant the messages could be clicked to remove them optionally, for example if the player wants to be able to see athlete info, or any other info that uses this area of the panel's display.

By default, the message will probably be displayed for 3-5 seconds or so, or until the message is no longer relevant, whichever is soonest.

Quote from: Tygerboi on May 15, 2024, 11:44:20 AM
Also, would there be enough panel space for multiple messages with directional indicators to be displayed simultaneously?

Probably not tbh. This is where we hope that such limitations promote a creative solution! ;P

For example, in a case where multiple Builders need attention at the same time, we can either simply continue displaying the same message, or display a custom message ("Multiple Builders are running out of bricks!"). Either could potentially work.

Quote from: Tygerboi on May 15, 2024, 11:44:20 AM
if you have a visual prompt on-screen over a lemming (e.g. "chink!") and the pause button is pressed whilst its on-screen, will that also stop the message disappearing until the pause is released, or will it still time-out and disappear?

We'll almost certainly pause all Visual SFX along with everything else. Hopefully, the rendering will already handle this by default, but I'll know what to do about it if it doesn't anyway.

Thanks for the queries. Keep these coming: questions and comments help the feature take shape :thumbsup:

WillLem

#22
Well, I honestly thought this one would be a step too difficult, but thankfully I've managed to find a way to determine whether or not a lemming is within the viewport, and along which edge (top, bottom, left, right) - see commit ff116ed if you're interested.

What this means is that, however Visual SFX ends up being implemented, we can definitely factor in whether or not an event is happening offscreen, and importantly exactly where it's happening.

I think that, to begin with, I'd like to keep this feature as simple as possible and use as much of the existing UI as possible. Adding another rendering layer isn't a tempting prospect, especially since SLX is only just about managing to deal with the existing rendering load.



So, here's how I think the Visual SFX feature could look, based on what we have:

Sound CueVisual SFXPanel Message (off-screen events only)
Level Start"LET'S GO!" (above entrances/pre-placed lems)N/A (off-screen level start areas shouldn't be formally supported)
Zombie Level Start"BRAAAINS!" (above zombie entrances/pre-placed zombies)N/A
Builder/Stacker/Platformer Warning"CLINK" (above working lems)<- Bricks are running out! ->
(Time)Bomber 'Oh No' State"OH-NO!" (above lem)N/A
(Time)Bomber/Freezer Explosion / Balloon PopN/A (seems unnecessary, since these already have plenty of visual cues)N/A
Hit Steel/OWW"BONK" (above lem)<- Lemming hit steel/OWW ->
Lemming Death"YIKES!" (above lem)<- Lemming lost ->
Time Up"TIME UP" (above exits)Time is up!
All Collectibles Gathered"WELL DONE" (above lem)N/A
Button Click"CLICK" (above lem)<- Button Pressed ->
Exit UnlockedTBA<- Exit Unlocked ->
Lemming Exit"YIPPEE!"N/A



The main questions are:

How long should we show the panel message for?

Currently, I'm thinking they should appear until the relevant lemming/event to which they are referring is brought into view. They should also be click-to-cancel (optionally), so the player has a way to acknowledge the message and remove it from view.

Which GFX should we use?

The Superlemmini/WinLemm ones are OK, but I think we can do better. I'll have a look at doing something myself, but I'm very much open to ideas and suggestions on this. If you want to get involved and provide some graphics, I'll definitely at least give them a try out.

Let's try to keep each one to no more than about 48 x 48 in hi-res and 24 x 24 in low-res. That's obviously a rough guide; if they're bigger than that and look great, then of course they'll be a decent candidate.

Should we keep them hi-res only?

One of my goals with SLX is to eventually make everything but the game itself hi-res (cursors, helpers, etc); the panel was a great start and works nicely, but anything that is displayed in-game is necessarily problematic due to relative size/positioning. I think it could be do-able though: currently, everything is re-sized when zooming in, so - in theory - it should be possible to increase the minimum zoom to 2 in low-res, and display the images at their original size at that zoom factor, scaling up from there. In theory.

It's probably best for me to have a go at that first before we make any decisions for the Visual SFX. I'll keep this topic posted.

Suggestions/Thoughts welcome.

GigaLem

Maybe rename the ticking sound of the builders to "CLINK" as while I do respect the original sound effect or onomatopoeia for legacy as I know there's no ill intent with it, however the word is a bit poorly aged as the word "Chink" unfortunately is also an offensive slur, so much a restaurant had to be renamed from it.

I don't like bringing up the subject and such because I feel it might come off as unnecessary, but I tend to be cautious about things.

WillLem

Quote from: GigaLem on January 04, 2025, 11:36:20 PMMaybe rename the ticking sound of the builders to "CLINK"

Good shout, let's bring it up to date. I've updated the table accordingly and if we use a word I'll use "CLINK" or maybe something else. I'd probably go with a symbol rather than a word wherever possible anyway.

EDIT: I've also updated the name of the sound itself, along with renaming a number of other default sounds to names which make more sense (e.g. 'assignskill' instead of 'mousepre', 'brick' instead of 'ting', 'boing' intead of 'oing').

As a side-note, it's now possible (as of the next update (2.8.5)) to replace default sounds per-theme and per-levelpack.