Bugs/rants from 2015-09-27 session

Started by Simon, September 28, 2015, 01:08:43 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Nepster

Quote from: Proxima on October 05, 2015, 06:05:36 PM
Surely the best solution is to tweak the digger mask so it no longer leaves that single pixel?
As far as I know, the digger mask for the first stroke was changed from 2 addictional pixels to only 1 pixel. As this change was deliberately made, I expect that namida has very good reasons for this and therefore refrained from suggesting to undo this change.
And the current mechanics always leave this overhang, independantly of the starting position.

Quote from: ccexplore on October 05, 2015, 07:37:15 PM
One can either add a floor check...
Adding general floor checks (or low ceiling checks) might create problems with terrain additions, e.g. via building stairs/platforms against the wall. I would add such checks only for the very beginning.

ccexplore

Quote from: Nepster on October 05, 2015, 08:18:17 PMAdding general floor checks (or low ceiling checks) might create problems with terrain additions, e.g. via building stairs/platforms against the wall. I would add such checks only for the very beginning.

Can you provide a more specific example of what problems you have in mind?  My suggestion for adding floor/low-ceiling checks is still specifically about climbers and hoisters, not every possible action.  If we want consistency, it's not clear to me why it should matter that the terrain is pre-existing versus added via a skill.  Having checks happen only at the start seems like the same kind of "adds another rule (i.e. makes gameplay more complicated)" situation that you were objecting to earlier when discussing namida's proposal.

IchoTolot

For me it is simply logical and easy to understand even for beginners that the digger and climber behaves this way (taking out terrain starting from the diggers height level and stopping if there's a pixel above him). I think this is perfectly fine as it is currently.

Nepster

Quote from: ccexplore on October 05, 2015, 08:34:42 PM
Quote from: Nepster on October 05, 2015, 08:18:17 PMAdding general floor checks (or low ceiling checks) might create problems with terrain additions, e.g. via building stairs/platforms against the wall. I would add such checks only for the very beginning.
Can you provide a more specific example of what problems you have in mind?  My suggestion for adding floor/low-ceiling checks is still specifically about climbers and hoisters, not every possible action.  If we want consistency, it's not clear to me why it should matter that the terrain is pre-existing versus added via a skill.  Having checks happen only at the start seems like the same kind of "adds another rule (i.e. makes gameplay more complicated)" situation that you were objecting to earlier when discussing namida's proposal.
The word "general" in my previous post was intended only for climbers (ans possibly hoisters), i.e. in situations like the one in the attached picture, I think the climber should continue. The reason is the following:
Let's consider the opposite action: removing terrain. If you remove terrain at the lower half of a climbing lemming, he will continue climbing. This indicates that only the upper half of a climbing lemming counts for determining its position and whether he should continue climbing. So after adding terrain in the bottom half, the lemming should be above the added terrain. As stopping to climb and start walking on the added terrain is kind of weird, I am in favour of letting him continue on his climb.
As for a possible implementation: At the beginning failing the floor check should immediately turn the lemming around, because there is simply no wall to hang on to. On a successful floor check, he will be at least one frame in the climbing position. Once there one can apply ceiling checks to determine whether to continue climbing.

True, this suggestion has the disadvantage of "adds another rule", but I am not yet convinced that one can drop this rule. Furthermore while floor checks may replace namida's suggestion, the converse is not true. Even with namida's suggestion, one might need floor checks and has to decide when to apply them.

ccexplore

Quote from: Nepster on October 05, 2015, 09:36:59 PMLet's consider the opposite action: removing terrain. If you remove terrain at the lower half of a climbing lemming, he will continue climbing. This indicates that only the upper half of a climbing lemming counts for determining its position and whether he should continue climbing. So after adding terrain in the bottom half, the lemming should be above the added terrain. As stopping to climb and start walking on the added terrain is kind of weird, I am in favour of letting him continue on his climb.

I actually had in mind that the interrupt from such a case of added terrain be same as the overhang case, so that the lemming would fall rather than ended up walking on the added terrain (unless there is terrain added underneath the lemming's foot to prevent it from falling).  Nevertheless, the point with the terrain-removal situation is a reasonable argument, and would at least suggest that the ceiling/overhang check should not be lowered all the way down.  But then by that reasoning, one can argue that maybe a sufficiently low overhang should be ignored too (ie. "by design, not a bug") when the lemming is just starting to climb.  The "removal terrain" analog doesn't quite apply in this case since the lemming still goes by walker rules until it actually reaches a wall to transition to climbing, unless we want to special case the first few initial frames of climbing to react differently with regards to terrain removed post-transition.

That's not to say we can't have a different rule during the transition moment that prevents the climbing from starting if there is already a very low overhang, but it's worth pointing out that it is actually an inconsistency (even if not necessarily a bad one) if we consider how the game does ceiling checks elsewhere.

Quote from: Nepster on October 05, 2015, 09:36:59 PMAs for a possible implementation: At the beginning failing the floor check should immediately turn the lemming around, because there is simply no wall to hang on to.

Are we still talking about terrain being added (or a pre-existing low overhang), or terrain being removed?  Again, one can argue that if the overhang starts off very low, the lemming's head and arms are already above the overhang while it is still walking, and therefore doesn't have to be affected by the overhang.  It would be a conscious choice to add an additional rule if we want such low overhangs to have an effect on whether the lemming can start climbing.  I can go with it either way.

Nepster

Quote from: ccexplore on October 05, 2015, 11:15:20 PM
That's not to say we can't have a different rule during the transition moment that prevents the climbing from starting if there is already a very low overhang, but it's worth pointing out that it is actually an inconsistency (even if not necessarily a bad one) if we consider how the game does ceiling checks elsewhere.
True.

Quote from: ccexplore on October 05, 2015, 11:15:20 PM
Are we still talking about terrain being added (or a pre-existing low overhang), or terrain being removed?
Mainly about a general guideline when to apply which terrain check against currently existing terrain, i.e. mainly concerning the first question in my first post here.

Quote from: ccexplore on October 05, 2015, 11:15:20 PM
Again, one can argue that if the overhang starts off very low, the lemming's head and arms are already above the overhang while it is still walking, and therefore doesn't have to be affected by the overhang.
Again, one can argue in the same way for missing terrain pixels. But obviously we need floor checks that no terrain is missing before starting to climb and not just worry about terrain in arms and head height.

Quote from: ccexplore on October 05, 2015, 11:15:20 PM
It would be a conscious choice to add an additional rule if we want such low overhangs to have an effect on whether the lemming can start climbing.  I can go with it either way.
Completely agree with you there. I think one can find good reasons either way and the main question is whether to go for a more versatile climber (current mechanics) or a more intuitive one (see Simon's first post). The longer I think about it, the more I am in favour of changing the climber mechanics even if that means that some old levels need to be fixed.
PS: Does anyone know an old level that cannot be fixed by slight terrain changes, once climbers are restricted by low terrain?

ccexplore

Quote from: Nepster on October 06, 2015, 05:49:30 PM
Quote from: ccexplore on October 05, 2015, 11:15:20 PM
Again, one can argue that if the overhang starts off very low, the lemming's head and arms are already above the overhang while it is still walking, and therefore doesn't have to be affected by the overhang.
Again, one can argue in the same way for missing terrain pixels. But obviously we need floor checks that no terrain is missing before starting to climb and not just worry about terrain in arms and head height.

Hmm, I think the difference in how I see the "missing terrain" analog in this case is that even non-climber walkers will be able to walk into the narrowest of gaps.  So I see it not so much that "the lemming considered climbing, but did not do so because terrain is missing" as "the lemming never considered climbing yet at that point, because by normal walker rules, it can still continue walking forward just fine rather than having to turn around".

I wouldn't say it's even "obvious" when it comes to floor check.  Basically, your statement about a climber that can "ignore the floor" to start climbing is essentially an opportunistic/greedy climber, one that always check for opportunities to climb, rather than only when the default walking behavior does not give the "continue walking at same direction" option leaving only the options to turn vs climb.  For example, given the below configuration of terrain (L = where the lemming's at), a "greedy" climber that ignores the floor would start climbing up the wall rather than continue walking through the narrow gap.  It's definitely quite different from how climbers currently work, but if climbers had been implemented that way all along I don't think it would be considered as all that strange, it would just be what makes a climber a climber.


XXXXXXXXXXXXXX
XXXXXXXXXXXXXX
XXXXXXXXXXXXXX
XXXXXXXXXXXXXX
XXXXXXXXXXXXXX
XXXXXXXXXXXXXX
L
XXXXXXXXXXXXXXX


If normal walking behavior has cases that can turn non-climber lemmings around with "missing terrain" (ie. like Clones basically), then you do have a case where a non-greedy climber would make a decision whether it's okay to start climbing up with the missing terrain.

namida

Alright well, it seems there's a lot of disagreement on how exactly we should proceed on this - so I shall leave it as-is for the upcoming bugfix update. It's something that can be reconsidered in the long-term (ie: the 2.00 update).
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

Yet another way to look at this is to consider a very low overhang, and consider lowering the top of the wall until it is short enough to become a walkable step (where the lemming can just hoist itself up the step as a walker--more accurately a "jump").  An observation can then be made that the overhang did not affect the ability of the lemming to jump up a short step, but then once the wall is just high enough to require climbing, the same low overhang suddenly impacts the ability to start climbing.  It's not exactly wrong or strange, since we are after all looking at two different actions even if they are similar in nature (allowing the lemming to move vertically up), but it does open up the ability to reasonably argue that the same low overhang can be a non-factor when starting to climb.  Especially if we further add in the rule you suggested, that such a low overhang should be ignored later when the lemming is already climbing and the terrain changed to create the overhang at a low position relative to the lemming.

And if we apply "what if it's missing terrain" like Nepster is apt to, then we see that in both cases (step versus wall), the lemming continues walking rather than trying to jump/climb up past a gap into higher terrain.

Quote from: namida on October 07, 2015, 01:25:02 AMAlright well, it seems there's a lot of disagreement on how exactly we should proceed on this - so I shall leave it as-is for the upcoming bugfix update. It's something that can be reconsidered in the long-term (ie: the 2.00 update).

To be somewhat fair, I think I'm the only one who's been pointing out that the low overhang having an effect on the climber isn't necessarily that obvious.  Even I am okay with the various proposals including the Lix-like behavior of preventing transition to climber on any overhang however low.  Maybe a better gauge is to determine how many levels would be affected (both positively as well as negatively) by the change, especially if we are talking about a v1.x update that are supposed to be more minor in nature.

namida

I'd consider it a final decision at this point that there'll be no change for V1.35n-D; but I fully encourage further discussion in regards to what to do in V2.00.
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

Quote from: ccexplore on October 07, 2015, 01:45:45 AM
Yet another way to look at this is to consider a very low overhang, and consider lowering the top of the wall until it is short enough to become a walkable step (where the lemming can just hoist itself up the step as a walker--more accurately a "jump")...
Good argument.

Quote from: ccexplore on October 07, 2015, 01:45:45 AM
To be somewhat fair, I think I'm the only one who's been pointing out that the low overhang having an effect on the climber isn't necessarily that obvious.
And I agree that it is not obvious. And I seem to be the only one pointing out that low overhangs being ignored isn't obvious either (from a mechanical point of view).

Quote from: ccexplore on October 07, 2015, 01:45:45 AM
Maybe a better gauge is to determine how many levels would be affected (both positively as well as negatively) by the change...
There will be quite a few negatively affected levels (e.g. regarding the brown stairs in the pillar style). Many of them don't require this climber mechanic, but it opens up more possibilities and alternative solutions.

Quote from: ccexplore on October 07, 2015, 01:45:45 AM
...especially if we are talking about a v1.x update that are supposed to be more minor in nature.
:lem-mindblown: Never realized that we were arguing about a V1.x update.

Simon

#26
I was with Icho yesterday, and we agreed how any overhang should cancel climbers. The rule should be as simple as possible, which makes the path tracable by eye much more easily.

The rule to become climber is separate from the rule to remain climber. I have been happy with the Lix rule for 9 years now:


walk walk walk
if (cannot walk forward)
    if (ridge is ascendable)
        become ascender
    else if (lem can climb && no low overhangs)
        become climber
    else
        turn walker


And there are no other (walker -> climber) transitions anywhere in the walker code. In particular, the climber is not greedy.

Icho believes the digger should not, under any circumstances, perform an overstroke (= remove terrain higher than his normal 1 row of 9 pixels). If no-digger-overstrokes creates a non-climbable overhang in a miner tunnel, that's perfectly fine.

Digger overstroke might appear to be reasonable to get overhang-free holes on bumpy terrain. But overhangs can be desired on bumpy terrain. To prevent overhangs as a designer, use flat terrain. To prevent overhangs as a player, dig on top of a bump, not in between the bumps.

-- Simon

ccexplore

Quote from: Simon on October 07, 2015, 10:50:38 AMThe rule should be as simple as possible, which makes the path tracable by eye much more easily.

I think it may be overstating the difficulty of gauging overhang height, but it is fair point that never having to pay any attention at all to overhang height (even cases where it is so obviously low even at a glance) is by definition a little easier for path-tracing.  It is basically Proxima's argument but shifting from "ease of learning/understanding the physics" to "ease of tracing paths by eye".

geoo

Re: Climber passing through low horizontal bars:
Honestly, I'd just leave it as is. The climber has the ability to climb, and with it comes the ability to hoist up slightly higher ledges than normal guys. If you really want to rot this behaviour out, have a check for terrain not only at the top pixel, but also the three pixels below, but as I said, I don't think it's necessary. (I think one of my better Lemmix levels would break if this were changed, but I don't care all that much about them at this point.)

Re: little edge left by digger in miner tunnel:
A climber should certainly not be able to get past such ledges. The fix should either be in the digger, or the issue be left as it is. (I don't see why the digger mask has been changed to remove less terrain above the digger. If there's a good reason I'd like to hear it.)