[SUGGESTION][DISCUSSION][PLAYER] Only turn timer red at 1:00 or less

Started by Crane, September 27, 2019, 09:40:33 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Crane

Currently, the in-game timer is displayed in red digits if it is not infinite.  I would like to propose a change to this:

I would request that the timer only have red digits if you have a minute left or less - I say "a minute or less" and not "less than a minute" because it starting green on a 1:00 level then immediately turning red at 0:59 would be a bit distracting.

The reason behind this is that the digits suddenly turning red would catch the player's eye and remind them of the urgency, while a lot of old levels have a time limit that is quite high and is usually not a concern.  Usually it might only become a problem if you forget to up the release rate after making a path to the exit.

Proxima

This is somewhat similar to the timer blink that used to exist but got removed -- might be worth looking back at the old discussion to see what people's opinions were.

I would say that a minute is still a long time in Lemmings terms, and if we go with the timer changing colour to indicate urgency (which is not a bad idea -- it's annoying when you're in the middle of playing and the level suddenly ends when you weren't expecting it) then I would suggest changing at 10 seconds remaining.

Crane

When it used to blink, it did so at 30 seconds.  I believe there was also an option to turn on blinking if there weren't enough lemmings left to reach the required save target.

It's hard to know what a good threshold is, since it's highly dependent on the level.  For some levels, 1 minute might be a long time and is more than enough time for you to release the crowd, say, but on "The race against cliches", if you haven't started releasing the crowd by about 1:40, they won't make it in time.

10 seconds feels way too short to do anything meaningful though.

Proxima

10 seconds isn't long enough to change your strategy, but it's long enough to pause and rewind, instead of the annoyance of being thrown out of the gameplay window involuntarily.

Link to old discussion of timer blink and red coloration.

namida

I feel that having it a different color than the normal "this is how long you've taken" timer is important; so the time limit will not be changed back to green on levels that have a time limit.

However, I'm open to a setup along the lines of "green on unlimited-time levels, yellow on time-limit levels, it changes to red when you have less than X time remaining" (doesn't have to be these exact colors, and there could even be more than one breakpoint; I'm speaking more of the general concept).

The code to arbitrarily recolor certain parts of the toolbar text is already there (there was previously a hardcoded special case for the time limit, but I've made a more generalized setup now), so it's quite trivial to implement two or three or more colors compared to just one. Likewise, it's now based on a hue shift, so it can easily accomodate custom panel fonts - it might not give the same colors, but they'll still get a different color for each situation.
My projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)
Non-Lemmings: Commander Keen: Galaxy Reimagined (a Commander Keen fangame)


ccexplore

Like namida said, having 3 colors or at least 3 kinds of distinctions make the most sense.  I think it's unrealistic to find a threshold for "timer red" that works across many levels, so in that sense Proxima's 10-second suggestion actually has merit because for almost all levels, it is almost certainly too late, but at least you can still make a decision to rewind at that point.  Then again, maybe the better solution to that specific problem is to modify the experience for out of time, to easily allow the player to rewind instead of forcing a restart.

You can also "cop out" a little and make the threshold some kind of user setting perhaps.  You could even have the setting defined such that it can be "less than N seconds or less than N% of total time, whichever is lower".

===============

Going a different direction, you could actually potentially calculate a very rough estimate of when you probably are in danger of out of time, based on all the distances between an exit and either a lemming already in the level, or a spawn location (ie. where a lemming starts off at when it is first added to the level from a particular entrance).  Looking at just the walking case and ignoring the actual possible paths (and ignoring things like teleports plus any other factors enabling you to move faster than walking, and ignoring that all actual solutions of the level may require some lemming to perform actions moving slower than walking), a lemming walks one pixel forward horizontally, and at the time can also move either a maximum of 2 pixels upwards or 3 pixels downwards on the same frame.  Thus given the (x,y) of any two locations in the level, you can calculate the minimum amount of time necessary to walk from one location to the other even under the most ideal terrain.

For distance between a spawn location and an exit, you would also add in the extra amount of time for each new lemming that can spawn from the location.

So now you have a set of times.  Sort them and take the Nth number, where N is the number of additional lemmings you must save at this time to meet save requirement.  Compare that against the time remaining to decide to turn red (and have it so that once turned red, you don't turn back to green/yellow even if the same calculations in the future may say you're no longer in danger anymore of out of time).

Admittedly this ignores a whole lot of things, and will tend to turn the timer red later than it should (ie. underestimating the amount of time needed), and at the same time can also overestimate in some cases.  So I totally understand (and more or less agree) that from an implementation standpoint, this idea of trying to actually estimate the time required is too complex for too little gain.  Just want to throw it out there for completeness sake.

Flopsy

I'm personally happy with the current setup we have where the red time limit exists to show that there is a time limit.

If there is a time limit on a level, it usually means that the level needs to be done in an efficient manner anyway otherwise it's somewhat of a pointless time limit.

Maybe we could have a sound effect like a ticking clock sound which goes off at around the one minute mark and the time limit flashes for a few seconds.

Dullstar

I like the idea of adding yellow as a color to indicate time limits and switching to red when it is low.

Of course, what qualifies as low is going to be dependent on the level. It should probably be at least somewhat affected by what the overall time limit is, but I'm not sure what a good formula to use would be.

namida

QuoteOf course, what qualifies as low is going to be dependent on the level. It should probably be at least somewhat affected by what the overall time limit is, but I'm not sure what a good formula to use would be.

Maybe something like "1/4 of total time, but no lower than 10 seconds and no higher than 30"? Although I do question whether this kind of formula is really needed, or if some set value (perhaps 15sec - let's take into account here that some people use an ~11 second forwards skip) can do the job well enough.
My projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)
Non-Lemmings: Commander Keen: Galaxy Reimagined (a Commander Keen fangame)

Simon

Right at the start is when player must know about the time limit.

There is no level-independent amount or ratio between enough-time and time-to-warn (other than the entire time limit, i.e., warn at the beginning). Let's not bikeshed formuals.

Sure, the game can't detect when a level has a time limit purely for tradition, but that's not the game's fault.

-- Simon

Simon

Quote from: Proximainstead of the annoyance of being thrown out of the gameplay window involuntarily.

This is a massive issue.

Should we freeze physics on running out of time, allowing for rewind? Or should we keep physics running in the unsolvable state? Anything is better than returning to menu.

-- Simon

ccexplore

With a little programming, it wouldn't be too hard to take someone's best time records already tracked in NeoLemmix, filter to only timed levels, and get the time remaining and % time remaining for each level, and then calculate various statistics like average, median, standard deviation etc.  I'd be at least a little curious what those numbers might look like.

namida

QuoteShould we freeze physics on running out of time, allowing for rewind? Or should we keep physics running in the unsolvable state? Anything is better than returning to menu.

For V12.8.0, I've implemented a new behaviour when time runs out: Gameplay continues, except with three minor changes, two of which only apply if the nuke has also been activated (and these are just to ensure that the nuke always ends gameplay):
- Exiters become frozen. Since a lemming isn't counted as saved until it finishes the exiting animation, this essentially means lemmings can no longer be saved.
- If the nuke has been activated, lemmings no longer halt counting down to nuking when they become exiters.
- If the nuke has been activated, ohnoers can no longer become exiters. This avoids a loop: Nuke activates, exiters become ohnoers, then see an exit trigger area and immediately become exiters again.

I've also made one very minor visual tweak to better fit this: Exiters are now drawn behind all other lemmings. This factor has higher priority in determining render order than any other factor, except for "selected lemming" (it even has priority over "highlit lemming").

I've also implemented more color coding of the time limit. Currently we have two colors - green indicates infinite time, red indicates limited time.

The new system has four colors. Green still indicates infinite time. Yellow indicates limited time now. Red indicates limited time and that the player has less than 15 seconds remaining. Purple indicates that the time limit has run out, and the player is now in overtime (at this point, the time starts counting up again, to show how much overtime the player has used).

TODO: I'm thinking a sound should also be played when time runs out.
EDIT: And so now, one does.
My projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)
Non-Lemmings: Commander Keen: Galaxy Reimagined (a Commander Keen fangame)

Dullstar

Reading through this discussion again, I had another thought on this topic (in addition to the new changes, not in place of them):

Part of the issue with time limit levels is that it's easy to miss the timer, since you might not be paying close attention to it with most levels being infinite time. On time limited levels, I'd suggest, on start-up, during the "Let's Go!" bit of the level while the entrances are opening, display the time limit (labelled as such, of course, so it's obvious what it is) in the center of the screen. This can be combined with the color coding and should also make the timer harder to miss.

Also: Will exits that have animations for being locked use those animations to show they are frozen?