Implement Rewind to Last Assignment Like NL?

Started by kaywhyn, August 27, 2023, 06:13:34 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Simon

#15
kaywhyn, I'd still like to see you use the NL rewind-to-assignment in action, to see why you need it to rewind to two ticks before the effect is visible (instead of to the immediate tick before the effect is visible).

Since I made rewind-to-previous-assignment a year ago, I haven't used it a single time.

I don't know if I'd use rewind/advance to (the tick before an) an assignment of your choice in the replay tweaker. The tweaker doesn't have this feature yet. It looks natural to make this.

-- Simon

kaywhyn

#16
Yes, I have not forgotten about this. Trying to think of the best way to go about this, especially as to avoid spoiling level solutions for you :P For now, let's just say that because I use this hotkey a lot that it has become natural for me during gameplay that I don't really use the "B" key to go back a frame even though pressing the rewind to last assignment hotkey does the same thing once the skill is assigned. Similarly, I use mouse clicks to advance a frame instead of the "N" key. I also find it very useful when I need to undo several skill assignments, even if it might be faster to just hold down the rewind hotkey or restart completely. I don't know, I'm one of those Lemmings/Lix players who generally doesn't like bringing up any pop-up windows/menus during gameplay, hence why I don't like using the replay tweaker even if it's likely the most efficient out of the "going back" hotkeys I use. I find menus during gameplay "intrusive" for some reason.

However, as "actions speak louder than words," I'll definitely get video footage for you of me using this feature. Thinking about it, unless you're ok with them, honestly probably the best thing for me to do is to just find one of my LP videos where I make extensive use of it, but again, the problem is spoilers. This will take some time, as I would have to watch through the many vids I have on my channel. Perhaps I can link a vid where there's only one level where the feature is used.

On another note, is it currently possible to customize the duration of the rewinds/time skips in Lix? If it is, then I'm not aware of how to do so. 
https://www.youtube.com/channel/UCPMqwuqZ206rBWJrUC6wkrA - My YouTube channel and you can also find my playlists of Lemmings level packs that I have LPed
kaywhyn's blog: https://www.lemmingsforums.net/index.php?topic=5363.0

Simon

#17
Lix has no customization of the rewinds.

What values would you choose?

-- Simon

kaywhyn

I use the 5-second rewind and 5-second forward NL hotkeys in addition to the 1-second rewind/forward, 10 second time skip, and rewind to last skill assignment. So really, the 5 seconds would be in addition to all the other rewind/forward Lix hotkeys, not replacing any of them ;)
https://www.youtube.com/channel/UCPMqwuqZ206rBWJrUC6wkrA - My YouTube channel and you can also find my playlists of Lemmings level packs that I have LPed
kaywhyn's blog: https://www.lemmingsforums.net/index.php?topic=5363.0

WillLem

Quote from: WillLem on February 07, 2024, 08:55:29 PM
Quote from: Simon on August 27, 2023, 10:23:54 AMIn NL 12.5.5 12.12.5, this rewinds to two ticks before the assignment has happened
...
Years ago, NL had a bug where cutting the replay would cut one frame too late. Is this rewinding behavior an obsolete workaround for that bug? Or is there another reason?

...I'll see if I can get it to "one tick before assignment" in SLX - I'll investigate the bugfix and see if there's any reason it can't be done.

Finally got around to investigating this. Turns out that namida fixed the "-2" bug (in Commit 9c665ca), so NL (and indeed SLX) actually skips back only 1 frame prior to the previous assignment. Or, at least, it should.

When checking in the program itself, there is in fact an additional frame to step over before the assignment takes place.

I wonder if, prior to namida's fix, it was necessary to step over 2 frames. If so, then the current behaviour (having to step over 1 frame) is technically correct according to what's written in the code; i.e. the "Previous Assignment" hotkey which performs this skip asks NL to skip to "TargetFrame -1".

Is having to step over a single frame desirable? Or, is the expected behaviour that the next mouse click (i.e. to step forward 1 frame) should advance to the assignment frame? I wonder what the purpose of the extra frame is...?

It would be an easy fix, anyway (at least in NL/SLX); we'd simply ask it to skip to the "TargetFrame" itself.

WillLem

Quote from: WillLem on November 19, 2024, 06:46:59 PMIs having to step over a single frame desirable? Or, is the expected behaviour that the next mouse click (i.e. to step forward 1 frame) should advance to the assignment frame? I wonder what the purpose of the extra frame is...?

Just giving this a bump. I'm looking at implementing a fix but don't wish to go ahead without answers to these questions, just in case there's a good reason for waiting that extra frame.

Simon

#21
Quote from: WillLemIs having to step over a single frame desirable?

Desirable for whom? For kaywhyn? For me?

I cannot give you first-hand UI findings because I never use the feature (rewind to previous assignment). My playstyle doesn't need it.

All I can give you directly: Implementation-/design-wise, it felt more natural to rewind to (the tick before the assignment is visible). It felt unnatural (as in: I never thought of it before kaywhyn tested) to rewind to (the tick before (the tick before the assignment is visible)), which kaywhyn wants.

I'm waiting for kaywhyn to record and show his NL usage as a video. Are you (WillLem) prodding for such a video?



I'll guess why kaywhyn wants to rewind to (the tick before (the tick before seeing the effect of the assignment)). Consider the following 4-step sequence of actions.

  • Rewind to before the assignment's effect is visible. I.e., use rewind-previous-assignment in the current Lix 0.10.28.
  • Rewind one more tick.
  • Assign the same skill (which you've rewound in step 1) to the same lemming.
  • Fast-forward to view the result.

This 4-step sequence pulls the assignment earlier by one tick. Step 3 cuts the replay and reassigns the single cut assignment a tick earlier than from where it was cut.

When the rewind-to-skill behaves how kaywhyn wants it, he can omit step 2 because rewind-to-skill will then perform step 1 and step 2 together, not only step 1.

The minus button in the tweaker does all of this in one shot, including viewing the future result. You'll always view the result at the same future tick because you're tweaking an assignment in the past. The minus button is also easier to spam multiple times than it is to repeat that 4-step sequence by hand multiple times.

-- Simon

WillLem

#22
(Note: by all means split this into a SuperLemmix topic from Reply #19 onwards).

Quote from: Simon on January 01, 2025, 08:42:14 PMDesirable for whom? For kaywhyn? For me?

For anyone.

Quote from: Simon on January 01, 2025, 08:42:14 PMI'll guess why kaywhyn wants to rewind to (the tick before (the tick before seeing the effect of the assignment))

Yes, this is desirable, but what happens in NL/SLX (and I think this is what kaywhyn is requesting) is that "Rewind to last assignment" jumps back to (the tick before (the tick before (the tick before seeing the effect of the assignment))).

EDIT: I missed the "before" in the innermost parentheses - Simon was in fact referring to the same thing

So, it's likely there's been a slight misunderstanding.

We likely all want the single extra frame, for the reason outlined by Simon (i.e. so we don't have to skip back an extra frame to modify the original assignment). My question is do we want the extra extra frame as requested by kaywhyn.

Quote from: Simon on January 01, 2025, 08:42:14 PMAre you (WillLem) prodding for such a video?

I always prefer visual bug reports; so much easier to understand what the problem is. But no, an explanation has been enough in this case.

FWIW, here's the bug. Note the additional un-needed frame:



EDIT: It's a single line of code to fix this, so I've gone ahead and implemented it in SLX commit 33a43a3. We can test it for a bit there and then backport it to NeoLemmix as and when CE happens.

Simon

#23
Quote from: WillLem on January 01, 2025, 09:47:23 PMNL/SLX
jumps back to (the tick before (the tick before (the tick before seeing the effect of the assignment))).

We mean the same, but either we count ticks differently, or you didn't see the "before" inside the innermost parentheses.

We see the red builder bag for the first time after tick 100. The red bag is the visible effect of the assignment for tick 100. I -- and the Lix UI -- call this earliest sight of the red bag "the world at tick 100", but it's technically in-between ticks 100 and 101, not during tick 100. I would understand if somebody called this "at tick 101"; I don't.

The Lix feature rewinds to tick 99. This is before you see the effect of the assignment. In your gif, the walker is straddling, both of his feet touch the ground. At tick 99, we see the effects of all assignments for ticks ..., 96, 97, 98, 99. There are no such assignments this early in the gif. You're contemplating to change SLX to rewind to tick 99.

NL/SLX rewind to tick 98. This is the tick before (the tick before you see the effect of the assignment). The walker's frontal foot is in the air. kaywhyn wants Lix to rewind to 98 instead of to 99.

-- Simon

WillLem

Quote from: Simon on January 02, 2025, 03:06:20 PMyou didn't see the "before" inside the innermost parentheses.

Yes, that's likely correct :forehead: I've updated my previous message with strikethroughs.

Quote from: Simon on January 02, 2025, 03:06:20 PMNL/SLX rewind to tick 98. This is the tick before (the tick before you see the effect of the assignment). The walker's frontal foot is in the air. kaywhyn wants Lix to rewind to 98 instead of to 99.

I see. What's the reason for this @kaywhyn?

Frame 99 allows you to overwrite the original assignment at frame 100 (i.e. the same frame as the original assignment), whilst providing an extra frame to prevent having to step back to make said assignment.

What's the need for the extra tick that frame 98 provides?