[SUG][PLAYER] Clear Physics Mode shows Lemming positions and blocker fields

Started by exit, February 04, 2017, 04:05:39 PM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

exit

The title says it all. When enabling clear physics mode, pixel position of each lemming and the blocker field of each blocker would be displayed. I think that this would be a very helpful feature, more so than the current function of clear physics mode, which IMO (and in my experience) is only useful in very rare situations.

Also, I guess you could say I'm back. ;P

namida

I'm sure showing the blocker fields was at least discussed in the past.

Not sure if showing the fields / positions for all lemmings might clutter up the screen (and hide other important details) a bit too much. Rather than this, perhaps, it could be displayed only for the currently "selected" lemming, which would be much less cluttery.
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)

exit

I completely agree. I was thinking that it would be up to discussion on the exact details.

Blocker fields would most likely not be so bad to show for every lemming since there typically won't be that many blockers that it would clutter the screen. I think the position should only be shown for a highlighted lemming, if there is one, and maybe for blockers? It would be useful to know its exact position when doing things like mining under them.

namida

Indeed. It's actually not impossible to tell already with most actions (exceptions are Fallers, Floaters, Gliders and Swimmers) - if you look at the 2px wide part that makes up the lemming's body, the lemming's horizontal position (from a physics point of view) is in line with the lemming's "back", and its vertical position is one pixel underneath its feet. Alternatively, if you highlight the lemming, the tip of the highlight arrow is also in line with the lemming's horizontal position (you can't accurately determine its vertical position via the highlight arrow though). Still, having this clearly displayed in Clear Physics Mode makes complete sense, and would rely much less on the user knowing this obscure fact (not to mention it would work for actions where the active pixel is not completely clear such as those mentioned before).
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)

Nepster

Welcome back, exit!

I can certainly see cases where knowing the blocker fields is useful. But I have a little more problems when it comes to exact lemming positions, especially given that NeoLemmix supports skill shadows and backwards framestepping. So I would appreciate descriptions of situations or concrete examples where this info would have helped you? This would be a great help in deciding how exactly lemming position markers should be displayed.

Quote from: exit on February 04, 2017, 05:05:54 PM
It would be useful to know its exact position when doing things like mining under them.
This calls more for improving the miner shadow resp. miner simulation code, than adding blocker position markers.

ccexplore

Position markers shouldn't be all that hard or cluttering to display, you just display the particular pixels of interest in a different (possibly flashing?) color than normal.  Or maybe that's already what skill shadows are?

I can definitely try to dig around my old files for examples of manual sketchings I've done in MSPaint for a few challenge solutions, where I need to identify for example, where to start bashing in order for the basher to not stop bashing midway, or where to start building so the ceiling detection manages to avoid getting triggered by strategically lining up with the bumps and crevices of an uneven ceiling.  Of course, in those cases it's not just the current position, but rather the potential future positions, that are of interest, so it's fair to say that merely showing current positions may be of limited value.

Nepster

Yes, position markers are easy to implement and shouldn't be too annoying for players who don't need them (provided they are not too flashy ;)). But at the moment I simply don't know any problem where position markers are the best solution to it.
The examples you describe are already covered by the skill shadows used in the recent NeoLemmix versions: The shadows stop exactly when the lemming would stop as well (except in very special situations for the basher).

namida

QuoteOr maybe that's already what skill shadows are?

Skill shadows are, for example: You select the builder skill and mouse over a lemming. A shadow of a builder bridge will appear, showing you where he'll build. This shadow even takes into account how far he'll go before he stops - if he'll hit his head after 4 steps, the shadow won't show the 5th or later steps.

There are some limitations, such as that a miner shadow might be shown as bouncing off a blocker when in reality it'll free the blocker before the blocker turns him around. This is because the simulation only accounts for the movements / behaviour of one lemming, and the effects of other lemmings are limited to "is this lemming a blocker that'll turn the target lemming around?". Even so, the inaccuracies like this are very minor and usually in highly specific cases, and the shadows have proven themself to be reliable for 99%* of cases.

Skill shadows exist for Gliders, Bombers, Platformers, Builders, Stackers, Bashers, Fencers, Miners and Diggers. Additionally, when using a Cloner, if it's being used on a lemming who posesses one of these skills, it'll show the shadow for the cloned lemming.

* Not a scientifically-obtained figure
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)

exit

I haven't really had any situations in which I specifically needed to know the exact position of a lemming, just where it could have been convenient. For example, when one lemming is mining, and you want to remove terrain under the miner to make it stop, knowing the exact position of the miner would be very helpful when deciding where to do the terrain destruction. This can certainly be done through trial and error using backwards framestepping, but it would be much easier if the exact position of the miner was known.

Additionally, if blocker fields are displayed, visually seeing the exact position of a lemming or lemmings would be helpful when dealing with the blocker. The point of displaying blocker fields is to have exact information, and IMO not knowing precisely how the lemmings will interact with the blocker would defeat the purpose of knowing the blocker field.

namida

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)

Nepster

Expect the following changes in the next NeoLemmix version:
- Trigger areas for blockers are displayed in clear physics mode.
- Position markers for selected lemmings in clear physics mode: As single pixels turned out to be barely visible, the position is marked with a small "+" sign.
- Improved miner shadows: Miner (and basher) shadows now ignore blockers, if they have previously freed them by removing terrain below the blocker's feet. In some special situations like OhNoers-that-were-Blockers, the shadows may still not be 100% accurate.

IMPORTANT NOTE:
The improved miner shadows change the actual game physics ever so slightly. But I will make any bet, that no actual level will be influenced by this change (unless I introduced bugs):
Consider a setup as in http://www.lemmingsforums.net/index.php?topic=2796.0, where the naive rule for bashers to continue working differs from the current rule using basher simulations. Then add a little bit of usual terrain, such that the basher removes this on his next basher stroke. These terrain pixels should not reach higher than 3 pixels above the ground. Now put a blocker on these terrain pixels.
Previous to the miner shadow change, the basher would stop, because he would turn around during the basher simulation. Now the basher would continue working, because the basher will no longer turn around during the simulation.

Quote from: exit on February 07, 2017, 08:41:16 PM
For example, when one lemming is mining, and you want to remove terrain under the miner to make it stop, knowing the exact position of the miner would be very helpful when deciding where to do the terrain destruction. This can certainly be done through trial and error using backwards framestepping, but it would be much easier if the exact position of the miner was known.

Additionally, if blocker fields are displayed, visually seeing the exact position of a lemming or lemmings would be helpful when dealing with the blocker. The point of displaying blocker fields is to have exact information, and IMO not knowing precisely how the lemmings will interact with the blocker would defeat the purpose of knowing the blocker field.
The first case sounds a bit like a situation where position markers are theoretically helpful, but I somewhat doubt that this still holds during actual gameplay. Your second argument is very solid, though.

namida

Impact of this may be a bit more severe than expected, but I haven't yet isolated the breaks I'm basing this off down to specifically being a result of your changes. Will let you know when I have figured out the cause (and if it's my fault, I'll fix it, of course).

EDIT: Most of these appear to be due to unrelated issues. A few were due to the teleporter bug, which had somehow been fixed in backwards-compatible but not in new-formats. Four are due to the zombie replay bug, and all of these pass when tested manually. One was due to Fencer physics changes, and worked fine with your changes alone. This does leave one replay which I suspect may be broken due to your changes (the level itself is fine, just the replay needs fixing), but I need to investigate further in case it's something else.

EDIT: Okay, I can confirm this break isn't related to your changes either. However, it does also appear to be something new-formats specific; the replay passes on the latest stable commit, but not on the new-formats commit that the stable release is based on.

EDIT: Found the cause. It's an issue with either the new-formats conversion of the Clockwork set specifically, or with applying translation tables in general.

In other words, no LPO2 replays did indeed turn out to be broken by this. I haven't checked replays for my older packs yet, but I strongly suspect this will still hold true there too.
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)